Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // #### NASTAVENI ####
- var debug = false;
- var MonsterPositions="OA/MonsterMapData.txt";
- var Sound_ignTorchPath='D:\\Software\\Erebor\\OrionData\\OA\\igntorch.wav';
- var any = '0xFFFF';
- var prodlevaCost = 180; // ~235
- var NightSightDrink = false; // na hlasku je spatne videt automaticky vypije/zacaruje svetlo [true -> potion, false -> spell, null-> vypnuto]
- var CriticalHits = 40; // HP pod ktere se pije GH
- var AutoDrinkHeal = true; // povoleni autopiti GH
- var MinVoodooObetHP = 85; // Minimum HP pod ktere se voodooobet neprovede
- var GPAmount = 5000; // mnozstvi GP kdy provede prikaz .mesec
- var CheckLineOfSight = true; // kontroluje LOS targetu pri casteni na cil -- NEVIDI v domech
- // Nastaveni spellu pro autosipku
- var AutoArrow = true; // povoleni autosipky
- var AutoUnParalyzeSpell = 'Harm';
- //autoheal
- var Shaman = false; // true-pouziva ciste bandy false - spinave bandaze
- // minimum HP pro autobandeni sebe v %
- var MinimumHP=90;
- // minimum HP pro autobandeni ostatnich v %
- var MinTargetHP=97;
- var AutoObet= true;
- var ObetManaGain=40;
- // Prepsani nastaveni pro dane charactery -> neobsahuje-li dane nastaveni pouzije se defaultni z predchozich radku
- var CharacterSettings = {};
- CharacterSettings['TEMPLATE'] =
- {
- NightSightDrink : true,
- CriticalHits : 50,
- AutoDrinkHeal : true,
- MinVoodooObetHP : 90,
- GPAmount : 5000,
- CheckLineOfSight : true,
- AutoArrow : true,
- AutoUnParalyzeSpell :'Harm',
- Shaman : false,
- MinimumHP : 100,
- MinTargetHP :97,
- AutoObet : true,
- CheckLineOfSight :false
- };
- CharacterSettings['Mannaz'] =
- {
- NightSightDrink : false,
- CriticalHits : 70,
- AutoDrinkHeal : true,
- MinVoodooObetHP : 90,
- GPAmount : 5000,
- CheckLineOfSight : true,
- AutoArrow : true,
- AutoUnParalyzeSpell :'Harm',
- Shaman : false,
- MinimumHP : 85,
- MinTargetHP :95,
- AutoObet : false,
- CheckLineOfSight :false
- };
- CharacterSettings['Sam Daily'] =
- {
- NightSightDrink : true,
- CriticalHits : 50,
- AutoDrinkHeal : true,
- MinVoodooObetHP : 90,
- GPAmount : 5000,
- CheckLineOfSight : true,
- AutoArrow : true,
- AutoUnParalyzeSpell :'Harm',
- Shaman : false,
- MinimumHP : 100,
- MinTargetHP :97,
- AutoObet : true,
- CheckLineOfSight :false
- };
- CharacterSettings['Stomegeor'] =
- {
- AutoDrinkHeal : true,
- MinVoodooObetHP : 90,
- GPAmount : 5000,
- CheckLineOfSight : true,
- AutoArrow : true,
- AutoUnParalyzeSpell :'Harm',
- Shaman : false,
- MinimumHP : 100,
- MinTargetHP :97,
- AutoObet : true,
- CheckLineOfSight :true,
- NightSightDrink : false,
- CriticalHits : 55,
- Shaman : false
- };
- CharacterSettings['Scathach'] =
- {
- NightSightDrink : false,
- CriticalHits : 50,
- AutoDrinkHeal : true,
- MinVoodooObetHP : 90,
- AutoObet : false ,
- AutoArrow : true,
- AutoUnParalyzeSpell :'Harm',
- Shaman : true,
- MinimumHP : 90,
- MinTargetHP :99,
- ObetManaGain : 70
- };
- /// KONSTANTY ///
- var spells = {}; // spells [Nazev, Prodleva]
- spells["Harm"] = 1300;
- spells["Magic Arrow"] = 2200;
- spells["Fireball"] = 1950;
- spells["Lightning"] = 3300;
- spells["Energy Bolt"] = 3000;
- spells["frostbolt"] = 2750;
- spells["necrobolt"] = 2700;
- spells["Mind Blast"] = 3400;
- spells["Paralyze"] = 5100;
- spells["Flame Strike"] = 3800;
- spells["Meteor Swarm"] = 6600;
- spells["Energy Field"] = 5500;
- spells["Magic Reflection"] = 4350;
- spells["Night Sight"] = 1800;
- spells["Protection"] = 1900;
- spells["Cunning"] = 1900;
- spells["Agility"] = 2000;
- spells["Strength"] = 2000;
- spells["Bless"] = 3400;
- spells["Dispel Field"] = 3100;
- spells["Reactive Armor"] = 1900;
- spells["Cure"] = 1900;
- spells["Invisibility"] = 3500;
- spells["Dispel"] = 2800;
- spells["Dispel Field"] = 2600;
- spells['Mass Dispel'] = 3900;
- spells["Reveal"] = 1850;
- spells['Recall'] =9000;
- spells['Chain Lightning']=5000;
- spells['Teleport']=2200;
- spells['Summon Daemon']=4500;
- spells['Earth Elemental']=4500;
- var pots = [ // name, color, delay, duration
- ["heal", 0x0160, 21000, 0],
- ["cure", 0x008E, 21000, 390000],
- ["cure", 0x002B, 21000, 200000],
- ["invis", 0x0447, 21000, 200000],
- ["refresh", 0x00ED, 21000, 0],
- ["refresh", 0x0027, 16000, 0],
- ["reflex", 0x0985, 21000, 500000],
- ["mobility", 0x000F, 6000, 30000],
- ["nightsight", 0x0980, 6000, 0],
- ["agility", 0x00CF, 6000, 600000],
- ["agility", 0x0005, 6000, 300000],
- ["strength", 0x076B, 6000, 600000],
- ["strength", 0x0388, 6000, 300000],
- ["clever", 0x047D, 6000, 600000],
- ["clever", 0x073E, 6000, 300000],
- ["stoneskin", 0x0999, 6000, 600000],
- ["reactive", 0x0A82, 21000, 10000]
- ];
- // TODO
- var allContainers = '0x0E76|0x0E75|0x09B0|0x0E79|0x09AB|0x0E7C|0x0E7D|0x09AA|0x0E7E|0x09A9|0x0E83|0x0E42|0x0E43|0x09A8|0x0E80';
- var containerTypes = [
- { Graphic: 0x0E76, MinX: 30, MinY: 35, MaxX: 95, MaxY: 100 }, //
- { Graphic: 0x0E75, MinX: 44, MinY: 65, MaxX: 142, MaxY: 132 }, //
- { Graphic: 0x09B0, MinX: 44, MinY: 65, MaxX: 142, MaxY: 132 }, //
- { Graphic: 0x0E79, MinX: 44, MinY: 65, MaxX: 142, MaxY: 132 }, //
- { Graphic: 0x09AB, MinX: 30, MinY: 35, MaxX: 95, MaxY: 100 },
- { Graphic: 0x0E7C, MinX: 30, MinY: 35, MaxX: 95, MaxY: 100 },
- { Graphic: 0x0E7D, MinX: 16, MinY: 51, MaxX: 106, MaxY: 104 },///
- { Graphic: 0x09AA, MinX: 30, MinY: 35, MaxX: 95, MaxY: 100 },
- { Graphic: 0x0E7E, MinX: 30, MinY: 35, MaxX: 95, MaxY: 100 },
- { Graphic: 0x09A9, MinX: 30, MinY: 35, MaxX: 95, MaxY: 100 },
- { Graphic: 0x0E83, MinX: 30, MinY: 35, MaxX: 95, MaxY: 100 },
- { Graphic: 0x0E42, MinX: 30, MinY: 35, MaxX: 95, MaxY: 100 },
- { Graphic: 0x0E43, MinX: 30, MinY: 35, MaxX: 95, MaxY: 100 },
- { Graphic: 0x09A8, MinX: 30, MinY: 35, MaxX: 95, MaxY: 100 },
- { Graphic: 0x0E80, MinX: 30, MinY: 35, MaxX: 95, MaxY: 100 }
- ]
- var journalActions = [
- {
- Text: "exp?",
- Command: "sys",
- Action: function() {
- var xp = GetActualExp();
- var xpp = (xp.Min - parseInt(Orion.GetGlobal("ExpStart"))).toFixed(1);
- var xp2do = (xp.Max - xp.Min);
- var cas = ((Orion.Now() - parseInt(Orion.GetGlobal("ExpStartTime"))) / 60000).toFixed(2);
- var prum = (xpp / cas).toFixed(2);
- Orion.Print("Ziskano " + xpp + " zkusenosti.");
- Orion.Print("Do dalsiho lvl zbyva: " + xp2do + " zkusenosti.");
- Orion.Print("Prumerne " + prum + " expu za minutu.");
- Orion.Print("Celkovy cas: " + cas + " minut.");
- }
- },
- {
- Text: " silnejsi ranu!",
- Command: "sys",
- Action: function() {
- CharPrintDelayed(self, '0x0071', "Kritik",15);
- }
- },
- {
- Text: "Nyni budes kouzlit s vetsim usilim.",
- Command: "sys",
- Action: function() {
- Orion.SetGlobal('standCast','true');
- CharPrintDelayed(self, '0x0091', "StandCast ON",15);
- if(Orion.DisplayTimerExists(293)){
- Orion.RemoveDisplayTimer(293);
- }
- Orion.AddDisplayTimer(293, 9999999, 'RightBottom', 'Rectangle', 'StandCast', 0, 0, '0x0021', '0xFF', 'red');
- }
- },
- {
- Text: "Tve usili polevilo.",
- Command: "sys",
- Action: function() {
- Orion.SetGlobal('standCast','false');
- CharPrintDelayed(self, '0x0081', "StandCast OFF",15);
- if(Orion.DisplayTimerExists(293)){
- Orion.RemoveDisplayTimer(293);
- }
- }
- },
- {
- Text: 'Save imminent',
- Command: "my|sys",
- Action: function() {
- Orion.CharPrint(self, 0x0026, 'Cmucham SAVE');
- Orion.SetGlobal('save','true');
- if(Orion.DisplayTimerExists(555)){
- Orion.RemoveDisplayTimer(555);
- }
- Orion.AddDisplayTimer(555, 1800000, 'RightTop', 'Circle|Bar', 'Next Save', 0, 0, '0x0044', 0xFF, 'lime');
- }
- },
- {
- Text: 'Next scheduled save in 30 minutes',
- Command: "my|sys",
- Action: function()
- {
- Orion.SetGlobal('save','false');
- Orion.CharPrint(self, 0x0026, 'Cmucham SAVE');
- }
- },
- {
- Text: 'Pokousis se vylecit ',
- Command: "my|sys",
- Action: function() {
- Orion.SetGlobal("bandageDone", false);
- }
- },
- {
- Text: '#500876|uspesne osetren|Leceni se ti nepovedlo.| neni zranen.| krvacet.| Nevidis cil.| moc daleko.| se ti nepovedlo.',
- Command: "my|sys",
- Action: function() {
- Orion.Wait(parseInt(Orion.GetGlobal('DynamicHealPause')));
- Orion.SetGlobal("bandageDone", true);
- }
- },
- {
- Text: 'Leceni nesmis uspechat!',
- Command: "my|sys",
- Action: function() {
- Orion.Print("!!!!!! MOC SPECHAS !!!!! ");
- Orion.SetGlobal('DynamicHealPause',parseInt(Orion.GetGlobal('DynamicHealPause'))+50);
- }
- },
- {
- Text: " vypadla zbran z ruky",
- Command: "my|sys",
- Action: function() {
- Orion.Exec('Bandage');
- }
- },
- {
- Text: "Anna Tir Esgal",
- Command: "",
- Action: function() {
- var params = [Orion.GetGlobal('txtSerial'), 1000, 4, "Zed za ", 15]
- Orion.Exec('CustomCountDown', false, params);
- }
- },
- {
- Text: "Anna Tir Kemen",
- Command: "",
- Action: function() {
- var params = [Orion.GetGlobal('txtSerial'), 1000, 6, "Zed za ", 15]
- Orion.Exec('CustomCountDown', false, params);
- }
- },
- {
- Text: "Ruth Fuin Val",
- Command: "my",
- Action: function() {
- var params = [Orion.GetGlobal('txtSerial'), 800, 3, "", 19]
- Orion.Exec('CustomCountDown', false, params);
- }
- },
- {
- Text: "gatah",
- Command: "sys",
- Action: function() {
- var rune = Orion.FindType('0x1F14', '0x0005', 'backpack');
- Orion.Cast('Gate Travel', rune);
- }
- },
- {
- Text: "undress",
- Command: "sys",
- Action: function() {
- var name = (Orion.GetGlobal('txtContent')).slice(17);
- name = name.split("'")[0];
- Orion.Print(name);
- UnDres(name);
- }
- },
- {
- Text: "dress",
- Command: "sys",
- Action: function() {
- var name = (Orion.GetGlobal('txtContent')).slice(15);
- name = name.split("'")[0];
- Dres(name);
- }
- },
- {
- Text: "Heru Morgul Kel",
- Command: "my",
- Action: function() {
- var params = [Orion.GetGlobal('txtSerial'), 850, 8, "Recall za: ", 0x0171]
- Orion.Exec('CustomCountDown', false, params);
- }
- },
- {
- Text: "drop",
- Command: "sys",
- Action: function() {
- var name = (Orion.GetGlobal('txtContent')).slice(14);
- name = name.split("'")[0];
- DropItem(name);
- }
- }
- ,
- {
- Text: 'nohama ti projela silna bolest|citis, ze se nemuzes hybat.|crying awfully.|Unknown Cliloc #500111',
- Command: "sys",
- Action: function() {
- if(GetAutoArrow()){
- xCast(GetAutoUnParalyzeSpell(),self);
- }
- }
- }
- ,
- {
- Text: 'Je spatne videt.',
- Command: "sys",
- Action: function() {
- var opt=GetNightSightDrink();
- switch (opt) {
- case true:
- Potion('nightsight');
- break;
- case false:
- BandCast('Night Sight',self);
- break;
- default:
- break;
- }
- //Orion.SetLight(true,1);
- }
- }
- ];
- /*
- ######################################################
- ### File: Scripts/Abilities/Leap.oajs
- ######################################################
- */
- // Leap - pouziti ability Leap + oznameni o pouziti
- function Leap() {
- if (Orion.GetGlobal('LeapTime') > Orion.Now()) {
- var delta = Orion.GetGlobal('LeapTime') - Orion.Now();
- Orion.CharPrint('self', '0x011A', "Jeste nemuzes [" + delta + "]");
- return;
- }
- var trg = Orion.FindObject(lasttarget);
- if (!trg) {
- Orion.Print("Nevidis na cil");
- return;
- }
- Orion.Attack(trg.Serial());
- if (Orion.GetDistance(trg.Serial()) < 10) {
- Orion.Say('.leap');
- var time = Orion.Now() + 3700;
- Orion.SetGlobal('LeapTime', time);
- Orion.Wait(3500);
- Orion.CharPrint('self', '0x011A', "< LEAP >");
- } else {
- Orion.CharPrint('lasttarget', '0x011F', 'Moc Daleko -> ' + Orion.GetDistance(trg.Serial()));
- }
- }
- /*
- ######################################################
- ### File: Scripts/Abilities/Stab.oajs
- ######################################################
- */
- //Probo - ON/Off fce pro pouziti ability Probodnuti ze zalohy u Thiefa, pokud postava neni v Hidden stavu pouzije fci Hid
- // pri priblizovani se k cili v hidu vypisuje jeho vzdalenost
- function Probo() {
- var dist = 100;
- var scim = Orion.FindType('0x13B5|0x13B6', any, 'backpack');
- if (!Player.Hidden()) {
- Hid();
- return;
- }
- if (Orion.GetGlobal("probo") == 'true') {
- Orion.SetGlobal("probo", false);
- // CharPrintDelayed('self', '0x00FA', "Probo Off");
- return;
- }
- Orion.SetGlobal("probo", true);
- CharPrintDelayed('self', '0x00F1', "Probo ON");
- var toWait = Orion.GetGlobal("hidTime") - (Orion.Now() - 3000);
- Orion.Print(toWait);
- if((Orion.Now() - 3000) < Orion.GetGlobal("hidTime")){
- Orion.AddDisplayTimer(0, toWait, 'AboveChar', 'line|bar', '', 0, 0, '0x0038', 0, 'yellow');
- }
- while ((Orion.Now() - 3000) < Orion.GetGlobal("hidTime")) {
- Orion.Wait(100);
- if (Orion.GetGlobal("probo") == 'false') {
- CharPrintDelayed('self', '0x00FA', "Probo Off");
- return;
- }
- if (!Player.Hidden()) {
- Orion.SetGlobal("probo", false);
- Hid();
- return;
- }
- }
- CharPrintDelayed('self', '0x00AA', "Bodam");
- while (Player.Hidden()) {
- if (Orion.GetGlobal("probo") == 'false') {
- CharPrintDelayed('self', '0x00FA', "Probo Off");
- return;
- }
- while(Orion.GetGlobal('save'=='true'))
- {
- Orion.Wait(200);
- }
- if (Orion.GetDistance(lasttarget) < 5) {
- if (Orion.GetDistance(lasttarget) < 2) {
- Orion.WaitTargetObject(lasttarget);
- if(scim.length>0){
- Orion.UseObject(scim[0]);
- }
- else{
- Orion.Say(".usehand");
- }
- Orion.Wait(200);
- EquipWeap();
- }
- if (dist != Orion.GetDistance(lasttarget)) {
- dist = Orion.GetDistance(lasttarget);
- Orion.CharPrint(lasttarget, '0x000F', 'Distance : ' + dist);
- }
- }
- Orion.Wait(100);
- }
- Orion.SetGlobal("probo", false);
- Orion.Wait(100);
- Hid();
- }
- /*
- ######################################################
- ### File: Scripts/Abilities/Throw.oajs
- ######################################################
- */
- // Throw - fce pro hazeni vrhacich nozu s odpoctem
- function Throw() {
- if (Orion.GetGlobal("throwDelay") == '') Orion.SetGlobal("throwDelay", Orion.Now());
- if (Orion.GetGlobal("throwDelay") > Orion.Now()) {
- CharPrintDelayed('self', '0x00A1', 'Jeste nemuzes Hazet');
- return;
- }
- if (Orion.GetDistance(lasttarget) > 6) {
- CharPrintDelayed('self', '0x00A1', 'Moc Daleko <' + Orion.GetDistance(lasttarget) + '>');
- } else {
- var start = Orion.Now();
- Orion.Attack(lasttarget);
- Orion.Say(".throw");
- Orion.Wait(200);
- if (Orion.InJournal('Nevidis na cil!', 'sys|my') != null) {
- Orion.ClearJournal('Nevidis na cil!');
- Orion.Arm(Orion.GetGlobal("weap"));
- return;
- }
- Orion.Arm(Orion.GetGlobal("weap"));
- Orion.Wait(200);
- Orion.SetGlobal("throwDelay", Orion.Now() + 4800);
- Orion.Wait(1300);
- CharPrintDelayed('self', '0x00AD', ' < 3 >');
- Orion.Wait(1100);
- CharPrintDelayed('self', '0x00AD', ' < 2 >');
- Orion.Wait(1300);
- CharPrintDelayed('self', '0x00AD', ' < 1 >');
- Orion.Wait(1200);
- CharPrintDelayed('self', '0x00AD', '<< HAZEJ >>');
- }
- }
- // ThrowSmart - fce pro inteligentni vykudlovani cile - automaticky hodi kudlu, kdyz je cil bliz nez 3 pole
- function ThrowSmart() {
- if (Orion.GetGlobal('throw') == 'true') {
- Orion.SetGlobal('throw', false);
- Orion.CharPrint('self', 33, 'Smart Throw Off');
- return;
- } else {
- Orion.SetGlobal('throw', true);
- Orion.CharPrint('self', 53, 'Smart Throw On');
- }
- while (true) {
- if (Orion.GetGlobal('throw') == 'false') break;
- if (Orion.FindType('0x0F51', any, 'backpack').length < 1) {
- Orion.Print("nemas Kudle");
- Orion.SetGlobal('throw', false);
- continue;
- }
- if (!lasttarget) {
- Orion.Wait(200);
- continue;
- }
- if (Orion.GetDistance(lasttarget) < 3 && Orion.GetGlobal("throwDelay") < Orion.Now()) {
- Throw();
- }
- }
- }
- /*
- ######################################################
- ### File: Scripts/Abilities/Voodoo.oajs
- ######################################################
- */
- // VoodooBoost - fce pro selfBoost shamana
- function VoodooBoost(typ) {
- var str = Orion.FindType(0x0F0E, 0x0835, 'backpack');
- var dex = Orion.FindType(0x0F0E, 0x0006, 'backpack');
- var int = Orion.FindType(0x0F0E, 0x06C2, 'backpack');
- var ar = Orion.FindType(0x0F0E, 0x0999, 'backpack');
- var heads = [];
- var head = Orion.FindType('0x1CE9|0x1CE9|0x1DA0|0x1DAE', 0x0000, backpack, true);
- for (var i = 0; i < head.length; i++) {
- heads.push(head[i]);
- }
- for (var i = 0; i < heads.length; i++) {
- var h = Orion.FindObject(heads[i]);
- Orion.Click(heads[i]);
- Orion.Wait(100);
- if (!h) continue;
- if (h.Name() == Player.Name()) {
- if (typ == "str") {
- Orion.WaitTargetObject(str[0]);
- Orion.UseObject(heads[i]);
- }
- if (typ == "dex") {
- Orion.WaitTargetObject(dex[0]);
- Orion.UseObject(heads[i]);
- }
- if (typ == "int") {
- Orion.WaitTargetObject(int[0]);
- Orion.UseObject(heads[i]);
- }
- if (typ == "ar") {
- Orion.WaitTargetObject(ar[0]);
- Orion.UseObject(heads[i]);
- }
- }
- }
- }
- function VoodooB(bottle,head)
- {
- var pause=3500;
- Orion.ClearJournal('Nepovedlo se|Jeste nelze pouzit.| seslano uspesne|Cil podlehl |Prokleti nenalezlo cil.');
- var start=Orion.Now();
- Orion.WaitTargetObject(bottle);
- Orion.UseObject(head);
- var tmp = Orion.WaitJournal('Nepovedlo se|Jeste nelze pouzit.|Cil podlehl |Prokleti nenalezlo cil.', start, Orion.Now() + 8000);
- if(Orion.InJournal(' nenalezlo cil', start, 0))
- {
- Orion.ClearJournal('Prokleti nenalezlo cil.');
- Orion.Wait(pause);
- return false;
- }
- if(Orion.InJournal('Cil podlehl ', start, 0))
- {
- Orion.ClearJournal('Cil podlehl voodoo!');
- //Orion.Wait(pause);
- return true;
- }
- else
- {
- Orion.Wait(pause);
- return VoodooB(bottle,head);
- }
- return true;
- }
- ///shamanboost
- function Boost()
- {
- Orion.Print("Zamer batoh s bagl boosty")
- Orion.AddObject("tmp");
- while (Orion.HaveTarget()) {
- Orion.Wait(100);
- }
- var str = Orion.FindType(0x0F0E, 0x0835, 'backpack',true);
- var dex = Orion.FindType(0x0F0E, 0x0006, 'backpack',true);
- var int = Orion.FindType(0x0F0E, 0x06C2, 'backpack',true);
- var ar = Orion.FindType(0x0F0E, 0x0999, 'backpack',true);
- var dexBag=Orion.FindObject('DEXboost');
- var strBag=Orion.FindObject('STRboost');
- var intBag=Orion.FindObject('INTboost');
- var heads = Orion.FindType('0x1CE9|0x1DAE|0x1CE1|0x1DA0', '0xFFFF', dexBag.Serial());
- for (var i = 0; i < heads.length; i++) {
- var e = heads[i];
- if(!e)continue;
- if(!VoodooB(dex[0],e))continue;
- VoodooB(ar[0],e);
- }
- var heads = Orion.FindType('0x1CE9|0x1DAE|0x1CE1|0x1DA0', '0xFFFF', intBag.Serial());
- Orion.Print(heads.length);
- for (var i = 0; i < heads.length; i++) {
- var e = heads[i];
- if(!e)continue;
- if(!VoodooB(int[0],e))continue;
- VoodooB(ar[0],e);
- }
- var heads = Orion.FindType('0x1CE9|0x1DAE|0x1CE1|0x1DA0', '0xFFFF', strBag.Serial());
- for (var i = 0; i < heads.length; i++) {
- var e = heads[i];
- if(!e)continue;
- if(!VoodooB(str[0],e))continue;
- VoodooB(ar[0],e);
- }
- }
- // VooDooObet - fce hlidajici HP pri voodooobeti Shamana
- function VooDooObet() {
- Orion.SetGlobal('voodooInProgress','true');
- var minHP= Player.MaxHits()/100*80;
- if (Player.Hits() < minHP) {
- Orion.CharPrint(Player.Serial(), 0x00E0, 'Mas mene nez ' + minHP + ' HP!');
- Bandage();
- return;
- }
- if (Player.Mana() == Player.MaxMana()) {
- Orion.CharPrint(Player.Serial(), 0x00E0, 'Mas plnou Manu!');
- Bandage();
- return;
- }
- Orion.Say(".voodooobet");
- Orion.Wait(100);
- if(Orion.GetGlobal("isCasting") == "false") {
- Bandage();
- }
- }
- // BloodPact - shamanuv bloodpact + info o znovupouziti
- function BloodPact() {
- Orion.Say(".bloodpact");
- while (Orion.HaveTarget()) {
- Orion.Wait(100);
- }
- var endTime = Orion.Now() + 400000;
- while (Orion.Now() < endTime) {
- Orion.Wait(3000);
- }
- Orion.CharPrint(Player.Serial(), 0x00E0, 'Voodoo Blood Pact');
- Orion.Print('Voodoo Blood Pact');
- }
- // VoodooBoostyAFK - fce pro boost automat
- function VoodooBoostyAFK() {
- Orion.Terminate('all', ['VoodooBoostyAFK']);
- Orion.ClearJournal();
- var Heads = {}; //[];
- var HeadsCount = 0;
- Orion.Print("Zamer bednu s hlavama - musi obsahovat i boost potiony");
- Orion.AddObject("hlav");
- while (Orion.HaveTarget()) Orion.Wait(100);
- var target = Orion.FindObject('hlav');
- var hlavy = Orion.FindType('0x1CE9|0x1DAE|0x1CE1|0x1DA0', '0xFFFF', target.Serial());
- HeadsCount = hlavy.length;
- for (var i = 0; i < hlavy.length; i++) {
- var h = Orion.FindObject(hlavy[i]);
- Orion.RequestName(h.Serial(), 250);
- if (!Heads[h.Name()]) //)==-1)
- {
- var hea = { Name: h.Name(), Serial: h.Serial() };
- Heads[h.Name()] = h.Serial() //.push(hea);
- Orion.Print("add " + hea.Name + ", " + hea.Serial);
- }
- }
- Orion.RemoveObject('hlav');
- var str = Orion.FindType(0x0F0E, 0x0835, target.Serial());
- var dex = Orion.FindType(0x0F0E, 0x0006, target.Serial());
- var int = Orion.FindType(0x0F0E, 0x06C2, target.Serial());
- var ar = Orion.FindType(0x0F0E, 0x0999, target.Serial());
- var lastSelfBoost = Orion.Now();
- while (!Player.Dead()) {
- Orion.Wait(200);
- var boostWait = Orion.WaitJournal('str:|dex:|int:|ar:|svetlo:|cure:', Orion.Now(), Orion.Now() + 5000);
- Orion.Print(boostWait);
- if (!boostWait) {
- var seeds = Orion.FindType('0x0C4F|0x0C5A|0x1EBD|0x0DF9', '0xFFFF', 'ground');
- if (seeds) {
- for (var i = 0; i < seeds.length; i++) {
- Orion.UseObject(seeds[i]);
- Orion.Wait(200);
- var itb = Orion.FindType('0x0C4F|0x0C5A|0x1EBD|0x0DF9', '0xFFFF', 'backpack');
- for (var x = 0; x < itb.length; x++) {
- Orion.MoveItem(itb[x], 0, '0x400545AE'); // bedna na seno
- }
- }
- }
- if (lastSelfBoost < Orion.Now()) {
- Orion.UseFromGround('0x097B');
- Orion.Cast('Night Sight', self);
- Orion.Wait(spells['Night Sight']);
- lastSelfBoost = Orion.Now() + (60000 * 5); //5 min?
- }
- var humans = Orion.FindType('0x0190|0x0191', '-1', ground, 'mobile|human', '4', 'red');
- if (humans) {
- for (var i = 0; i < humans.length; i++) {
- var hmn = Orion.FindObject(humans[i]);
- if (hmn.Hits() < 90) {
- BandageTarget(hmn.Serial(), GetShaman());
- }
- }
- }
- if (!Player.Hidden()) {
- Orion.Exec('Hid');
- }
- continue;
- }
- var t = Orion.FindObject(boostWait.Serial());
- Orion.RequestName(t.Serial(), 250);
- Orion.Print(Heads[t.Name()]);
- if (!Heads.hasOwnProperty(t.Name())) //i].Name==t.Name())
- {
- Orion.SayEmote('Nenaleza hlavu ' + t.Name());
- } else {
- var ser = Heads[t.Name()]; //i].Serial;
- var he = Orion.FindObject(ser);
- var pos = { x: he.X(), y: he.Y() };
- Orion.MoveItem(ser, 1, 'backpack');
- Orion.Wait(100);
- if (boostWait.Text() == "str:") {
- Orion.WaitTargetObject(str[0]);
- Orion.Wait(150);
- Orion.UseObject(ser);
- Orion.Wait(150);
- Orion.SayEmote("Smaci hlavu " + t.Name() + " v lektvaru sily.");
- }
- if (boostWait.Text() == "dex:") {
- Orion.WaitTargetObject(dex[0]);
- Orion.Wait(150);
- Orion.UseObject(ser);
- Orion.Wait(150);
- Orion.SayEmote("Smaci hlavu " + t.Name() + " v lektvaru obratnosti.");
- }
- if (boostWait.Text() == "int:") {
- Orion.WaitTargetObject(int[0]);
- Orion.Wait(150);
- Orion.UseObject(ser);
- Orion.Wait(150);
- Orion.SayEmote("Smaci hlavu " + t.Name() + " v lektvaru moudrosti.");
- }
- if (boostWait.Text() == "ar:") {
- Orion.WaitTargetObject(ar[0]);
- Orion.Wait(150);
- Orion.UseObject(ser);
- Orion.Wait(150);
- Orion.SayEmote("Smaci hlavu " + t.Name() + " v lektvaru kamenne kuze.");
- }
- if (boostWait.Text() == "svetlo:") {
- Orion.Cast("Night Sight", t.Serial());
- Orion.Wait(1500);
- continue;
- }
- if (boostWait.Text() == "cure:") {
- Orion.Cast("Cure", t.Serial());
- Orion.Wait(2000);
- continue;
- }
- Orion.Wait(200);
- Orion.MoveItem(ser, 1, target.Serial(), pos.x, pos.y);
- var tmp = Orion.WaitJournal('Nepovedlo se|Jeste nelze pouzit.|seslano uspesne', 0, Orion.Now() + 2000);
- if (Orion.InJournal('Nepovedlo se|Jeste nelze pouzit.', 'my|sys')) {
- Orion.ClearJournal('Nepovedlo se|Jeste nelze pouzit.');
- Orion.Wait(3300);
- Orion.SayEmote('Selhal v ritualu VooDoo');
- } else {
- Orion.ClearJournal('Nepovedlo se|Jeste nelze pouzit.|seslano uspesne');
- Orion.Wait(3300);
- Orion.SayEmote('Dokoncil ritual VooDoo');
- }
- }
- }
- }
- /*
- ######################################################
- ### File: Scripts/Spells/ArrowToAll.oajs
- ######################################################
- */
- function ArrowAll()
- {
- var enemies = Orion.FindType('!0x0190|!0x0191', any, ground, 'mobile|ignoreself|ignorefriends', '17', 'murderer');
- for (var i = 0; i < enemies.length; i++) {
- var targ = enemies[i];
- BandCast('Magic Arrow',targ);
- Orion.Wait(200);
- }
- }
- /*
- ######################################################
- ### File: Scripts/Spells/CastCure.oajs
- ######################################################
- */
- // Cure - zacasti na sebe Cure a projde FriendList jeslti nekdo v okoli nema take poison -> Cure na nej
- function Cure() {
- if (Player.Poisoned()) {
- BandCast('Cure', self);
- CharPrintDelayed(self, 0x0034, '-- Cure --',12);
- }
- var list = Orion.GetFriendList();
- for (var i = 0; i < list.length; i++) {
- var targ = Orion.FindObject(list[i]);
- if (!targ) continue;
- if (targ.Poisoned()) {
- BandCast('Cure', targ.Serial());
- CharPrintDelayed(targ.Serial(), 0x0034, '-- Cure --',12);
- }
- }
- }
- /*
- ######################################################
- ### File: Scripts/Spells/ReactiveArmor.oajs
- ######################################################
- */
- // Reactiv - zacasti na sebe ReactiveArmor, uprednostnuje svitky, upozorni na vyprchavajici efekt, na target po zacasteni zautoci
- function Reactiv() {
- var time = Orion.Now();
- if(Orion.DisplayTimerExists(666)){
- Orion.RemoveDisplayTimer(666);
- }
- if(BandCast("Reactive Armor",self)){
- Orion.AddDisplayTimer(666, 9800, 'AboveChar', 'line|bar', '', 0, 0, '0x0038', 0, 'green');
- Orion.Attack(lasttarget);
- Orion.Wait(9500);
- CharPrintDelayed(self, '30', 'Reactiv Off',7);
- }
- }
- function SetReactiveTarget()
- {
- Orion.AddObject("reactiveTarget");
- while (Orion.HaveTarget()) Orion.Wait(100);
- }
- function ReactiveTarget()
- {
- var target = Orion.FindObject("reactiveTarget");
- if(BandCast("Reactive Armor",target))
- {
- Orion.Wait(6500);
- CharPrintDelayed(self, '31', 'Recast Reactiv Target',10);
- }
- }
- /*
- ######################################################
- ### File: Scripts/Spells/SpellCast.oajs
- ######################################################
- */
- // BandCast - zacasti spell (spellName - musi odpovidat polozce v spells) na target (neni-li uveden vyhodi target)
- // nejsou-li HP na 100% tak se pokusi pouzit bandaze, pokud jiz leceni neprobiha
- function BandCast(spellName, target)
- {
- if (Player.Hits() != Player.MaxHits())
- {
- if(GetShaman() && Player.Mana() <= (Player.MaxMana() - GetObetManaGain()))
- {
- if(GetAutoObet()){
- VooDooObet();
- }else{
- CharPrintDelayed(self, 0x0039, '-- OBETUJ SE --',15);
- }
- }
- else
- {
- Bandage();
- }
- }
- else
- {
- if(GetShaman() && Player.Mana() <= (Player.MaxMana() - GetObetManaGain()))
- {
- if(GetAutoObet()){
- VooDooObet();
- }else{
- CharPrintDelayed(self, 0x0039, '-- OBETUJ SE --',15);
- }
- }
- }
- Orion.CancelTarget();
- Orion.CancelWaitTarget();
- return xCast(spellName,target);
- }
- // Prepina moznost fizzovat spell u xCast
- function SwitchForceSpell(){
- switch (Orion.GetGlobal("trgModeSpell")) {
- case 'pvp':
- Orion.SetGlobal("trgModeSpell", 'pvm');
- Orion.Print('0x0116',"PVM");
- return;
- case 'pvm':
- Orion.SetGlobal("trgModeSpell", 'pvp');
- Orion.Print('0x001B',"PVP");
- return;
- }
- }
- function ManageStandCast(spellName){
- var standCastSpellnames=['Fireball','Lightning','Energy Bolt','frostbolt','necrobolt','Mind Blast','Paralyze','Flame Strike','Meteor Swarm','Chain Lightning'];
- if(standCastSpellnames.indexOf(spellName)<0 && Orion.GetGlobal('standCast')=='true'){
- Orion.Say(".standcast");
- while (Orion.GetGlobal('isCasting')=='true') {
- Orion.Wait(200);
- }
- Orion.Wait(100);
- Orion.Say(".standcast");
- }
- }
- // xCast - zacasti spell (spellName - musi odpovidat polozce v spells [settings.oajs]) na target (neni-li uveden vyhodi target)
- function xCast(spellName, target){
- var rtn=true;
- var failSafe=Orion.Now();
- while (Orion.GetGlobal("isCasting") == "true") {
- Orion.Wait(50)
- if(Orion.GetGlobal('trgModeSpell')=='pvp'){
- Orion.SetGlobal("isCasting", "false");
- break;
- }
- if((Orion.Now()-failSafe)>6500){
- Orion.SetGlobal("isCasting", "false");
- }
- }
- var params = [spellName];
- Orion.Exec('ManageStandCast',true,params);
- Orion.SetGlobal("isCasting", "true");
- switch(spellName){
- case 'frostbolt':
- Orion.Say(".frostbolt");
- break;
- case 'necrobolt':
- Orion.Say(".necrobolt");
- break;
- default:
- Orion.Cast(spellName);
- break;
- }
- Orion.WaitForTarget(100);
- var _xCast = Orion.Now();
- if (Orion.HaveTarget())
- {
- while((target!=null && !Orion.InLOS(target)))
- {
- Orion.Wait(50);
- if (Orion.GetGlobal('GetCheckLineOfSight')=='false') break;
- if (Orion.WaitJournal('line of sight|see the target|Nevidis na cil.|Targeting Cancelled|Unexpected target info| see that.', _xCast, Orion.Now() + 500)) {
- rtn=false;
- break;
- }
- if(!Orion.HaveTarget()) break;
- }
- if (Orion.GetGlobal('GetCheckLineOfSight')=='false' || Orion.InLOS(target))
- {
- Orion.TargetObject(target)
- Orion.AddDisplayTimer(0, spells[spellName], 'AboveChar', 'line|bar', '', 0, 0, '0x0038', 0, 'orange');
- if (Orion.WaitJournal('Kouzlo se nezdarilo.|line of sight|see the target|Nevidis na cil.|Unexpected target info|Targeting Cancelled| see that.', _xCast, Orion.Now() + spells[spellName], ''))
- {
- Orion.AddDisplayTimer(0, 0, 'UnderChar', 'line|bar', '', 0, 0, '0x0038', 0, 'orange');
- rtn=false;
- }
- }
- else
- {
- while(Orion.HaveTarget())
- {
- Orion.Wait(50);
- }
- Orion.AddDisplayTimer(0, spells[spellName], 'AboveChar', 'line|bar', '', 0, 0, '0x0038', 0, 'orange');
- if (Orion.WaitJournal('Kouzlo se nezdarilo.|line of sight|see the target|Nevidis na cil.|Targeting Cancelled|Unexpected target info| see that.', _xCast, Orion.Now() + spells[spellName]))
- {
- Orion.AddDisplayTimer(0, 0, 'UnderChar', 'line|bar', '', 0, 0, '0x0038', 0, 'orange');
- rtn=false;
- }
- }
- }
- Orion.SetGlobal('lastSpell', spellName);
- Orion.SetGlobal('lastSpellDelay', spells[spellName]);
- Orion.SetGlobal("isCasting", "false");
- return rtn;
- }
- // AutoCast - ON/Off funkce, casti posledni vycarovany spell na lasttarget
- function AutoCast() {
- var spell=Orion.GetGlobal('lastSpell');
- Orion.ClearJournal();
- if (Orion.GetGlobal('autoCast') == 'true') {
- Orion.SetGlobal('autoCast', false);
- Orion.CharPrint('self', 33, 'AutoCast Off');
- return;
- } else {
- Orion.SetGlobal('autoCast', true);
- Orion.CharPrint('self', 53, 'AutoCast On');
- }
- while (Orion.GetGlobal('autoCast') == 'true') {
- Orion.Wait(100);
- if (Player.Hidden()) {
- Orion.SetGlobal('autoCast', false);
- Orion.CharPrint('self', 33, 'AutoCast Off');
- return;
- }
- if (Orion.FindObject(lasttarget) == null) {
- Orion.SetGlobal('autoCast', false);
- Orion.CharPrint('self', 33, 'AutoCast Off');
- return;
- }
- if(!BandCast(spell, lasttarget)){
- Orion.ClearJournal();
- Orion.Wait(Orion.GetGlobal('lastSpellDelay'));
- }
- }
- }
- function SwitchCastLOS(){
- if (Orion.GetGlobal('checkLineOfSight') == 'false') {
- Orion.SetGlobal("checkLineOfSight", true);
- Orion.Print('LOS: ON');
- }
- else{
- Orion.SetGlobal("checkLineOfSight", false);
- Orion.Print('LOS: OFF');
- }
- }
- /*
- ######################################################
- ### File: Scripts/Spells/Summon.oajs
- ######################################################
- */
- // Summon, SummonHere - v dialogu pro summony vybere podle parametru(NAME) summona a vycasti (Target, nebo na sebe)
- function Summon(Name)
- {
- Orion.Cast("Summ. Creature");
- Orion.Wait(200);
- Orion.SelectMenu('What do you want to summon ?', Name);
- }
- function SummonHere(Name)
- {
- Orion.Cast("Summ. Creature");
- Orion.Wait(200);
- Orion.WaitTargetObject(self);
- Orion.SelectMenu('What do you want to summon ?', Name);
- }
- function Rename(name)
- {
- Orion.AddObject("target");
- while(Orion.HaveTarget())
- {
- Orion.Wait(50);
- }
- var target = Orion.FindObject("target");
- Orion.RenameMount(target.Serial(),name);
- }
- /*
- ######################################################
- ### File: Scripts/Spells/Teleport.oajs
- ######################################################
- */
- // Telep - fce zacasti Teleport na cil pokud je v dosahu, pokud ma postava svitky Teleport tak prvni pouzije je, jinak z knihy
- function Telep() { //TODO predelat na BandCast - cas teleportu
- Bandage();
- var teleSc = Orion.FindType('0x1F42', '0x0000', 'backpack', 'item', true);
- if (Orion.GetDistance(lasttarget) > 12) {
- Orion.CharPrint(lasttarget, '0x0000', 'Moc Daleko');
- return;
- }
- if (teleSc.length) {
- Orion.WaitTargetObject(lasttarget);
- Orion.UseObject(teleSc[0]);
- } else {
- //BandCast("teleport", lasttarget);
- Orion.Cast("teleport", lasttarget);
- }
- }
- /*
- ######################################################
- ### File: Scripts/Skills/Healing.oajs
- ######################################################
- */
- function AutoHealOnOff()
- {
- if(Orion.GetGlobal('autohealState')=='true'){
- if (Orion.ScriptRunning('AutoHeal')) {
- // Orion.Terminate('AutoHeal');
- }
- Orion.SetGlobal('autohealState',false);
- Orion.Print("AUTOHEAL: OFF")
- }
- else{
- Orion.Exec("AutoHeal");
- Orion.SetGlobal('autohealState','true');
- Orion.Print("AUTOHEAL: ON")
- }
- }
- // AutoHeal - fce pro automaticke leceni postav ve FriendsListu
- function AutoHeal(__private){
- Orion.SetGlobal('crystal','false');
- var tempTarget=null;
- var tempLowestHp=GetMinTargetHP;
- var list = Orion.GetFriendList();
- if (!Orion.ScriptRunning('JournalCheck')) {
- Orion.Exec('JournalCheck');
- }
- while(Orion.GetGlobal('autohealState') == 'true'){
- if(Orion.GetGlobal('autohealState') != 'true'){
- if (Orion.ScriptRunning('AutoHeal')) {
- Orion.Terminate('AutoHeal');
- }
- Orion.SetGlobal('autohealState',false);
- Orion.Print("AUTOHEAL: OFF")
- }
- tempLowestHp=GetMinTargetHP();
- tempTarget=null;
- if (Player.Dead() ) {
- Orion.Wait(100);
- continue;
- }
- if (Player.Hidden() && !GetShaman()) {
- Orion.Wait(100);
- continue;
- }
- if (Orion.GetGlobal('isCasting') == 'true') {
- Orion.Wait(200);
- Orion.Wait(parseInt(Orion.GetGlobal('castDelay') ));
- continue;
- }
- while(Orion.GetGlobal('save')=='true')
- {
- Orion.Wait(200);
- }
- if(Orion.GetGlobal('voodooInProgress') == 'true')
- {
- Orion.SetGlobal('bandageDone', 'false');
- Orion.SetGlobal('voodooInProgress','false');
- continue;
- }
- if (Player.Hits() < Player.MaxHits()/100*GetMinimumHP()) {
- if(Orion.GetGlobal('voodooInProgress') == 'true')
- {
- Orion.SetGlobal('bandageDone', 'false');
- Orion.SetGlobal('voodooInProgress','false');
- }
- Bandage();
- // Orion.Wait(200);
- continue;
- }
- for (var i = 0; i < list.length; i++) {
- var tmp = Orion.FindObject(list[i]);
- if (!tmp) {
- continue;
- }
- if (Orion.GetDistance(list[i]) > 6) continue;
- if (tmp.Hits() < tempLowestHp && tmp.Hits() > 0 && !tmp.Dead()) {
- tempLowestHp = tmp.Hits();
- tempTarget = tmp;
- }
- }
- if (!tempTarget) {
- if (Orion.GetGlobal('crystal') == 'true') {
- Orion.SetGlobal('crystal','false');
- if(GetShaman()){
- //Orion.Say('.improvement');
- }//
- else{
- //EquipWeap();
- Orion.Say(".enlightment");
- }
- }
- if (Player.Hits() < GetMinimumHP()) {
- Bandage();
- Orion.Wait(200);
- continue;
- }
- }
- else{
- if (Orion.GetGlobal('music') == 'true' && tempLowestHp > 80) {
- continue;
- }
- if (Orion.GetGlobal('res') == 'true') {
- Orion.Wait(100);
- continue;
- }
- if (Orion.GetGlobal('crystal')=='false' && Orion.GetGlobal("bandageDone") == 'true') {
- Orion.SetGlobal('crystal','true');
- if(GetShaman()){
- Orion.Say('.improvement');
- }
- else{
- Orion.Say(".enlightment");
- }
- Orion.Wait(100);
- }
- BandageTarget(tempTarget.Serial(), GetShaman());
- Orion.Wait(100);
- }
- }
- }
- // Bandage - fce pro leceni bandazemi s hlidanim, zda jiz leceni neprobiha
- function Bandage() {
- BandageTarget(null, GetShaman(), false);
- }
- // OnHitBandage - fce provede leceni "po rane" (hlasky)
- function OnHitBandage() {
- while (true)
- {
- var tmp = Orion.WaitJournal('Tvuj cil krvaci.|Skvely zasah!|Kriticky zasah!|Vysavas staminu|Vysavas zivoty!|Naprazeni k rychlemu utoku!', Orion.Now(), 0);
- Orion.ClearJournal(tmp.Text() );
- if (Player.Hits() < Player.MaxHits()-10)
- {
- var lh = Orion.ObjAtLayer('LeftHand');
- if (lh.Graphic() == '0x1405' || lh.Graphic() == '0x1404') continue;
- Bandage();
- }
- }
- }
- // Res - fce pro resovani mrtvol pomoci bandazi
- function Res() {
- Orion.IgnoreReset();
- var list = Orion.FindType('0x2006', any, ground, 2);
- var resInProg = 'Duch neni ve war modu.|Necht se navrati k zivotu !|Pokousis se ozivit mrtvolu zvirete.';
- var resDone = 'Ozivil jsi |Ozivila jsi | jsi v ozivovani.|Oziveni uspesne.|Tomu uz nepomuze ani svecena voda|Toto neni zvire.|Zvire je vykuchane.| nemuzes ozivovat pomoci obvazu.';
- if (GetShaman() == true) {
- var band = Orion.FindType('0x0E20', any, backpack);
- } else {
- var band = Orion.FindType('0x0E21', any, backpack);
- }
- if (!list) return;
- for (var i = 0; i < list.length; i++) {
- Orion.WaitTargetObject(list[i]);
- Orion.UseObject(band[0]);
- var start = Orion.Now();
- Orion.Wait(150);
- if (Orion.WaitJournal(resInProg, start, Orion.Now() + 500)) {
- if (Orion.InJournal('Duch neni ve war modu.', 'sys', any, any, start, Orion.Now())) {
- Orion.Say("Zapni War");
- Orion.SetGlobal("res", false);
- return;
- } else {
- Orion.SetGlobal("res", true);
- Orion.WaitJournal(resDone, start, Orion.Now() + 11000);
- Orion.SetGlobal("res", false);
- return;
- }
- }
- }
- }
- function bandageT(target, bloodbandage) {
- BandageTarget(target, bloodbandage, false)
- }
- // HealPet - leci peta do plna
- function HealPet() {
- if (Orion.GetGlobal('healpet') == 'true') {
- Orion.SetGlobal('healpet', 'false');
- Orion.Arm(Orion.GetGlobal("weap"));
- Orion.Print('Pet heal OFF');
- return;
- }
- Orion.SetGlobal('healpet', 'true');
- Orion.Print('Pet heal On');
- var pet = Orion.FindObject('pet');
- if (!pet) {
- Orion.Print("Nemas nastaveny Pet");
- Orion.SetGlobal('healpet', 'false');
- Orion.Print('Pet heal OFF');
- return;
- }
- while (pet.Hits() != pet.MaxHits()) {
- if (Orion.GetGlobal('healpet') == 'false') {
- Orion.Print('Pet heal OFF');
- Orion.Arm(Orion.GetGlobal("weap"));
- return;
- }
- Orion.Wait(200);
- Orion.WaitTargetObject(pet.Serial());
- Orion.UseType(0x0E20); //ciste bandy
- Orion.Wait(200);
- Orion.Arm(Orion.GetGlobal("weap"));
- var x = Orion.WaitJournal(' byl uspesne osetren.|Osetreni se ti nepovedlo.| neni zranen.|Moc daleko', Orion.Now(), Orion.Now() + 7000);
- }
- Orion.SetGlobal('healpet', 'false');
- Orion.Print('Pet heal OFF');
- }
- // BandageTarget - fce pro leceni bandazemi s hlidanim, zda jiz leceni neprobiha
- function BandageTarget(Serial, BloodBandage, WeapEquipOff) {
- // var BloodBandage = Orion.GetGlobal('GetShaman()') =='true';
- if (Orion.GetGlobal('bandageDone') == 'false') {
- if (!WeapEquipOff) {
- EquipWeap();
- }
- if (Orion.Now() > Orion.GetGlobal('bandageStart')) {
- Orion.SetGlobal('bandageDone', true);
- }
- return;
- }
- var serial = self;
- var selfBandage = false;
- if (Serial) {
- serial = Serial;
- } else {
- selfBandage = true;
- if (Player.Hits() == Player.MaxHits()) {
- EquipWeap();
- return;
- }
- }
- if (BloodBandage) {
- var cnt = Orion.FindType('0x0E20', any, backpack);
- if (!cnt) {
- Orion.Print('Nemas spinave Bandaze');
- return;
- }
- } else {
- var cnt = Orion.FindType('0x0E21', any, backpack);
- if (!cnt) {
- Orion.Print('Nemas ciste Bandaze');
- return;
- }
- }
- var start = Orion.Now();
- Orion.CancelTarget();
- Orion.CancelWaitTarget();
- Orion.WaitTargetObject(serial);
- if (!BloodBandage) {
- if(selfBandage){
- Orion.Say('.heal0');
- }else{
- Orion.UseType(0x0E21); //ciste bandy
- }
- } else {
- if(selfBandage){
- Orion.Say('.samheal0');
- }else{
- Orion.UseType(0x0E20); // krvave bandy
- }
- }
- Orion.Wait(200);
- CharPrintDelayed(serial, 0x0034, '-- Heal --',12);
- if (!WeapEquipOff) {
- EquipWeap();
- }
- if (selfBandage || BloodBandage) {
- Orion.SetGlobal('bandageStart', Orion.Now() + 6500);
- } else {
- if (Orion.SkillValue('Healing', 'real') < 1400) {
- Orion.SetGlobal('bandageStart', Orion.Now() + 1000);
- } else {
- Orion.SetGlobal('bandageStart', Orion.Now() + 500);
- }
- }
- if(BloodBandage && Orion.GetGlobal('crystal')=='true'){
- // Orion.Print("Vypinam");
- Orion.SetGlobal('crystal','false');
- Orion.Say('.improvement');
- Orion.Wait(100);
- }
- }
- /*
- ######################################################
- ### File: Scripts/Skills/Hidding.oajs
- ######################################################
- */
- // Hid - funkce pro skill hidding, pouziva AlwaysRun pro hidovani za behu
- function Hid() {
- Orion.ClearJournal();
- Orion.WarMode(false);
- Orion.Wait(50);
- var HidDelay = 2400;
- if (Orion.SkillValue(21, 'real') > 750) {
- HidDelay = 1750;
- } else {
- HidDelay = 2100;
- }
- var first = true;
- Orion.AddDisplayTimer(9, HidDelay, 'AboveChar', 'line|bar', '', 0, 0, '0x0038', 0, 'red');
- Orion.OptionAlwaysRun(true);
- Orion.UseSkill(21); //hiding
- var start = Orion.Now();
- var params = [self, 500, 3, "", 0x00FD];
- Orion.Exec('CustomCountDown', false, params);
- if (!HidWait(HidDelay - 175)) {
- Orion.OptionAlwaysRun(true);
- Orion.RemoveDisplayTimer(9);
- Orion.Print("hidwait fail");
- CharPrintDelayed('self', '0x099B', 'Hidden Failed');
- return;
- }
- Orion.OptionAlwaysRun(false);
- var x = Orion.WaitJournal('Nepovedlo se ti schovat.|Skryti se povedlo.', Orion.Now() - (HidDelay), Orion.Now() + 500);
- if (!x) {
- Orion.OptionAlwaysRun(true);
- return;
- }
- if (x.Text() == 'Nepovedlo se ti schovat.') {
- CharPrintDelayed('self', '0x099B', 'Hidden Failed');
- Orion.OptionAlwaysRun(true);
- return;
- }
- while (Player.Hidden()) {
- if (first) {
- first = false;
- Orion.SetGlobal("hidTime", Orion.Now());
- CharPrintDelayed('self', '0x00FD', 'Hidden Success');
- }
- if(Player.Hits()!=Player.MaxHits())
- {
- Bandage();
- }
- Orion.Wait(100);
- }
- Orion.OptionAlwaysRun(true);
- Orion.PlayWav(Sound_ignTorchPath);
- return;
- }
- function HidWait(Limit) {
- var start = Orion.Now();
- var loop = start + parseInt(Limit);
- var tmpHP=Player.Hits();
- while (loop > Orion.Now()) {
- if (Orion.InJournal('Nepovedlo se ti schovat.', 'my|sys', 0, 0xFFFF, start)) {
- return false;
- }
- if(tmpHP-10>Player.Hits()){ //dmg aspon 10hp (pois,bleed)
- return false;
- }
- Orion.Wait(100);
- }
- return true;
- }
- /*
- ######################################################
- ### File: Scripts/Skills/Music.oajs
- ######################################################
- */
- // EnticLastTarget - pouzije skill Enticement na lasttarget
- function EnticLastTarget() {
- var target = lasttarget;
- Orion.SetGlobal('Music', true);
- Orion.WarMode(true);
- Orion.Wait(100);
- Orion.WarMode(false);
- Orion.Wait(200);
- if (Orion.GetDistance(target) > 18) return;
- var Start = Orion.Now();
- Orion.WarMode(false);
- Orion.UseSkill(15, target); // entic
- var rtn = Orion.WaitJournal('Zameruj jen monstra|Tohle nemuzes oslabit.|Oslabeni teto prisery presahuje tve moznosti|Oslabeni bylo uspesne.|Oslabeni se nepovedlo.|Nespechej s pouzivanim dovednosti.', Start, Start + 3500);
- Orion.ClearJournal(rtn.Text());
- Orion.SetGlobal('Music', false);
- Orion.Attack(lasttarget);
- }
- // PeaceLastTarget - pouzije skill Peacemaking na lasttarget
- function PeaceLastTarget() {
- var target = lasttarget;
- Orion.SetGlobal('Music', true);
- Orion.WarMode(true);
- Orion.Wait(100);
- Orion.WarMode(false);
- Orion.Wait(200);
- if (Orion.GetDistance(target) > 18) return;
- var Start = Orion.Now();
- Orion.WarMode(false);
- Orion.UseSkill(9, target); //peace
- var rtn = Orion.WaitJournal('Uklidneni se povedlo.|Jiz neni co uklidnovat!|Tohle nemuzes|Uklidnovani nezabralo.|You play poorly.|nespechej s pouzivanim dovednosti.|tve moznosti.', Start, Start + 4500);
- Orion.ClearJournal(rtn.Text());
- Orion.SetGlobal('Music', false);
- }
- // Provo - vyprovokovani nastavenych cilu
- function Provo() {
- Orion.WarMode(true);
- Orion.Wait(100);
- Orion.WarMode(false);
- Orion.Wait(200);
- var start = Orion.Now() + 1000;
- Orion.WaitTargetObject('trg1');
- Orion.Say(".provo");
- while (!Orion.HaveTarget()) {
- Orion.Wait(100);
- if (Orion.Now() > start) return;
- }
- Orion.TargetObject('trg2');
- }
- function ProvoAuto(){
- Orion.ClearJournal();
- while(!Orion.InJournal('Provokace se povedla.')){
- var xStart=Orion.Now();
- Provo();
- Orion.WaitJournal(' nereaguje na provokaci.| presahuje tve moznosti|t see that.|Nespechej s pouzivanim skillu', xStart, Orion.Now() + 6500)
- if(Orion.InJournal(' presahuje tve moznosti') )break;
- Orion.ClearJournal(' nereaguje na provokaci.');
- Orion.Wait(200);
- }
- Orion.ClearJournal('Provokace se povedla.| presahuje tve moznosti|t see that.|Nespechej s pouzivanim skillu');
- }
- // AddProvo - fce pro prirazeni 2 cilu k provokaci
- function AddProvo() {
- var start = Orion.Now() + 6000;
- Orion.AddObject('trg1');
- while (Orion.HaveTarget()) {
- Orion.Wait(100);
- if (Orion.Now() > start) return;
- }
- Orion.AddObject('trg2');
- }
- /*
- ######################################################
- ### File: Scripts/Skills/Poisoning.oajs
- ######################################################
- */
- // SetPois - nastavi poison potion pro pouzivani fce Pois
- function SetPois() {
- Orion.AddObject("Poison");
- while (Orion.HaveTarget()) {
- Orion.Wait(100);
- }
- }
- // Pois - otravi 1H zbran v ruce
- function Pois() {
- Orion.WarMode('false');
- var btl = Orion.FindObject("Poison");
- var pois = Orion.FindType(btl.Graphic(), btl.Color(), 'backpack', '', '', '', true);
- if (pois.length <= 0) return;
- var weap = Orion.ObjAtLayer('RightHand');
- Orion.WaitTargetObject(weap.Serial());
- Orion.UseObject(btl.Serial());
- }
- /*
- ######################################################
- ### File: Scripts/Skills/Taming.oajs
- ######################################################
- */
- function Taming(){
- Orion.ClearJournal();
- Orion.Print("Co budeme tamovat ?");
- Orion.AddObject("target");
- while(Orion.HaveTarget())
- {
- Orion.Wait(50);
- }
- var target = Orion.FindObject("target");
- var mountName='IchiZviratko';
- Orion.RenameMount(target.Serial(),mountName);
- Orion.UseType(0x097B,0x0000,backpack,true);
- Orion.UseType(0x097B,0x0000,backpack,true);
- //svetlo
- Orion.Cast('night sight',self);
- Orion.Wait(3000);
- var counter = 0;
- while(true)
- {
- var xStart=Orion.Now();
- if(counter>10){
- //jidlo
- Orion.UseType(0x097B,0x0000,backpack,true);
- Orion.UseType(0x097B,0x0000,backpack,true);
- //svetlo
- Orion.Cast('night sight',self);
- Orion.Wait(3000);
- counter=0;
- //nakrm
- Orion.WaitTargetObject(target.Serial());
- Orion.Wait(100);
- Orion.Say('.nakrm');
- }
- //Orion.WaitTargetObject(target.Serial());
- //Orion.Wait(100);
- Orion.UseSkill('Animal Taming',target.Serial()); // entic
- var text='Nepovedlo se |Zda se, ze te |Zvire je jiz ochocene.|Jsi prilis daleko.|Nevidis na cil|Ztratil jsi ';
- Orion.WaitJournal('Nepovedlo se |Zda se, ze te |Zvire je jiz ochocene.|Jsi prilis daleko.|Nevidis na cil|Ztratil jsi ', xStart, xStart + 30000);
- if (Orion.InJournal('Zda se, ze te |Zvire je jiz ')) {
- Orion.Say('all stay');
- Orion.Wait(200);
- Orion.RenameMount(target.Serial(),mountName);
- Orion.Wait(200);
- Orion.Say(mountName+' release');
- Orion.Wait(200);
- }
- Orion.ClearJournal(text);
- counter++;
- Orion.Wait(200);
- }
- }
- function TamingRes(){
- Orion.ClearJournal();
- Orion.Print("Co budeme tamovat ?");
- Orion.AddObject("target");
- while(Orion.HaveTarget())
- {
- Orion.Wait(50);
- }
- var target = Orion.FindObject("target");
- var mountName='Persi je pan';
- Orion.RenameMount(target.Serial(),mountName);
- Orion.UseType('0x13F4|0x13F5',any,backpack,true); //crooka
- while(true)
- {
- var xStart=Orion.Now();
- Orion.UseSkill('Animal Taming',target.Serial()); // entic
- var text='Nepovedlo se |Zda se, ze te |Zvire je jiz ochocene.|Jsi prilis daleko.|Nevidis na cil|Ztratil jsi ';
- Orion.WaitJournal('Nepovedlo se |Zda se, ze te |Zvire je jiz ochocene.|Jsi prilis daleko.|Nevidis na cil|Ztratil jsi ', xStart, xStart + 30000);
- if (Orion.InJournal('Zda se, ze te |Zvire je jiz ')) {
- Orion.Say('all stay');
- Orion.Wait(200);
- Orion.RenameMount(target.Serial(),mountName);
- Orion.Wait(200);
- Orion.Say('Persi je pan'+' friend');
- Orion.Wait(200);
- }
- Orion.ClearJournal(text);
- Orion.Wait(200);
- }
- }
- /*
- ######################################################
- ### File: Scripts/Skills/Tracking.oajs
- ######################################################
- */
- // TrackXXX - fce pro vypis ze skillu tracking
- function TrackPlayers() {
- Track(3);
- }
- function TrackAnimals() {
- Track(0);
- }
- function TrackMonsters() {
- Track(1);
- }
- function TrackAll() {
- Track(4);
- }
- // Track - fce vypisujici vystopovane cile s filtraci jmen v FriendListu
- function Track(choice) {
- var list = Orion.GetFriendList();
- var listName = [];
- for (i = 0; i < list.length; i++) {
- var obj = Orion.FindObject(list[i]);
- if (!obj) continue;
- listName.push(obj.Name());
- }
- Orion.WarMode(false);
- Orion.CancelWaitMenu();
- Orion.Wait(200);
- Orion.WaitMenu('Tracking', choice);
- Orion.UseSkill(38);// track
- Orion.Wait(300);
- var menu = Orion.GetMenu(0);
- Orion.Wait(100);
- if (Orion.InJournal('You see ')) {
- menu.Close();
- Orion.ClearJournal('You see ');
- return;
- }
- var count = menu.ItemsCount();
- var items = {};
- for (var i = 0; i < count; i++) {
- var add = true;
- for (a = 0; a < listName.length; a++) {
- if (listName[a] == menu.ItemName(i)) {
- add = false;
- break;
- }
- }
- if (add == true) {
- if (!items[menu.ItemName(i)]) {
- items[menu.ItemName(i)] = 1;
- } else {
- items[menu.ItemName(i)] = items[menu.ItemName(i)] + 1;
- }
- }
- }
- menu.Close();
- Orion.Wait(100);
- Orion.Print('Na tracku : ' + count);
- for (var key in items) {
- var cn = parseInt(items[key]);
- if (cn > 1) {
- Orion.Print(" " + key + " : " + cn);
- } else {
- Orion.Print(" " + key);
- }
- }
- }
- /*
- ######################################################
- ### File: Scripts/Helpers/AFKPeri.oajs
- ######################################################
- */
- function KillBirds()
- {
- Orion.Print('Zamer nejaky item v pack lame');
- Orion.AddObject("cont");
- while (Orion.HaveTarget()) Orion.Wait(100);
- var container = Orion.FindObject("cont");
- container = container.Container();
- Orion.Print(container);
- Orion.Say('.jezdik');
- while(!Player.Dead()){
- if(!AttackNearestMonster()){
- Orion.Say('all stop');
- Orion.Wait(100);
- FeatherToLama(container);
- Orion.Exec('Hid');
- Orion.Wait(60000); // neni monster ceka minutu
- }else{
- Carv();
- Orion.Wait(1000);
- }
- }
- }
- function AttackNearestMonster() {
- Orion.Ignore('self');
- var creatures = Orion.FindType(any, any, ground, 'mobile|ignorefriends', '18', 'gray');
- if (!creatures.length) {
- Orion.Print('-1', 'no creature found, resetting ignore list');
- Orion.IgnoreReset();
- return false;
- }
- Orion.RemoveObject("target");
- Orion.AddObject("target", creatures[0]);
- var target = Orion.FindObject("target");
- //Runs to the target
- Orion.WalkTo(target.X(), target.Y(), 0);
- Orion.Wait(100);
- Orion.WaitTargetObject("target");
- Orion.Wait(100);
- Orion.Attack("target");
- while (target.Exists()) {
- Orion.WalkTo(target.X(), target.Y(), 0);
- Orion.Wait(1000);
- Orion.Attack("target");
- }
- Orion.Wait(500);
- return true;
- }
- function FeatherToLama(lamaBag){
- Orion.Say('.jezdik');
- Orion.Wait(200);
- Orion.Say('all stop');
- Orion.Wait(200);
- var feathers = Orion.FindType('0x1BD1', '0x0000', 'lotBag', true);
- for (var i = 0; i < feathers.length; i++) {
- var e = feathers[i];
- Orion.MoveItem(e, 0, lamaBag);
- }
- Orion.Wait(200);
- Orion.Say('.jezdik');
- }
- /*
- ######################################################
- ### File: Scripts/Helpers/AStar.oajs
- ######################################################
- */
- function createArr(x, y) {
- var arr = new Array(x);
- for (var i = 0; i < x; i++) {
- arr[i] = new Array(y);
- }
- return arr;
- }
- var astar = {
- init: function(grid) {
- for(var x = 0; x < grid.length; x++) {
- for(var y = 0; y < grid[x].length; y++) {
- var node = grid[x][y];
- node.f = 0;
- node.g = 0;
- node.h = 0;
- node.cost = 1;
- node.visited = false;
- node.closed = false;
- node.parent = null;
- node.isWall = grid[x][y] == 0;
- var tmp ={ x:x,y:y};
- node.pos =tmp;
- }
- }
- },
- heap: function() {
- return new BinaryHeap(function(node) {
- return node.f;
- });
- },
- search: function(grid, start, end, diagonal, heuristic) {
- astar.init(grid);
- heuristic = heuristic || astar.manhattan;
- diagonal = !!diagonal;
- var openHeap = astar.heap();
- openHeap.push(start);
- while(openHeap.size() > 0) {
- // Grab the lowest f(x) to process next. Heap keeps this sorted for us.
- var currentNode = openHeap.pop();
- // End case -- result has been found, return the traced path.
- if(currentNode === end) {
- var curr = currentNode;
- var ret = [];
- while(curr.parent) {
- ret.push(curr);
- curr = curr.parent;
- }
- Orion.Print("dd");
- return ret.reverse();
- }
- // Normal case -- move currentNode from open to closed, process each of its neighbors.
- currentNode.closed = true;
- // Find all neighbors for the current node. Optionally find diagonal neighbors as well (false by default).
- var neighbors = astar.neighbors(grid, currentNode, diagonal);
- for(var i=0; i < neighbors.length; i++) {
- var neighbor = neighbors[i];
- if(neighbor.closed || neighbor.isWall()) {
- // Not a valid node to process, skip to next neighbor.
- continue;
- }
- // The g score is the shortest distance from start to current node.
- // We need to check if the path we have arrived at this neighbor is the shortest one we have seen yet.
- var gScore = currentNode.g + neighbor.cost;
- var beenVisited = neighbor.visited;
- if(!beenVisited || gScore < neighbor.g) {
- // Found an optimal (so far) path to this node. Take score for node to see how good it is.
- neighbor.visited = true;
- neighbor.parent = currentNode;
- neighbor.h = neighbor.h || heuristic(neighbor.pos, end.pos);
- neighbor.g = gScore;
- neighbor.f = neighbor.g + neighbor.h;
- if (!beenVisited) {
- // Pushing to heap will put it in proper place based on the 'f' value.
- openHeap.push(neighbor);
- }
- else {
- // Already seen the node, but since it has been rescored we need to reorder it in the heap
- openHeap.rescoreElement(neighbor);
- }
- }
- }
- }
- // No result was found - empty array signifies failure to find path.
- return [];
- },
- manhattan: function(pos0, pos1) {
- // See list of heuristics: http://theory.stanford.edu/~amitp/GameProgramming/Heuristics.html
- var d1 = Math.abs (pos1.x - pos0.x);
- var d2 = Math.abs (pos1.y - pos0.y);
- return d1 + d2;
- },
- neighbors: function(grid, node, diagonals) {
- var ret = [];
- var x = node.x;
- var y = node.y;
- // West
- if(grid[x-1] && grid[x-1][y]) {
- ret.push(grid[x-1][y]);
- }
- // East
- if(grid[x+1] && grid[x+1][y]) {
- ret.push(grid[x+1][y]);
- }
- // South
- if(grid[x] && grid[x][y-1]) {
- ret.push(grid[x][y-1]);
- }
- // North
- if(grid[x] && grid[x][y+1]) {
- ret.push(grid[x][y+1]);
- }
- if (diagonals) {
- // Southwest
- if(grid[x-1] && grid[x-1][y-1]) {
- ret.push(grid[x-1][y-1]);
- }
- // Southeast
- if(grid[x+1] && grid[x+1][y-1]) {
- ret.push(grid[x+1][y-1]);
- }
- // Northwest
- if(grid[x-1] && grid[x-1][y+1]) {
- ret.push(grid[x-1][y+1]);
- }
- // Northeast
- if(grid[x+1] && grid[x+1][y+1]) {
- ret.push(grid[x+1][y+1]);
- }
- }
- return ret;
- }
- };
- function AStarTest()
- {
- var monsters = Orion.FindTypeEx(any, any, 'ground', 'near|mobile|live|ignoreself|ignorefriends', 18, 'red');
- var pX=Player.X();
- var pY=Player.Y();
- var grid = createArr(36,36);
- for (var x = 0; x < grid.length; x++) {
- for (var y = 0; y < grid[x].length; y++) {
- if(Orion.CanWalk('n',pX+x-18,pY+y-18,Player.Z()))
- {
- grid[x][y] = 1;
- }
- else
- {
- grid[x][y] = 0;
- }
- }
- }
- if(monsters.length>0){
- for (var i = 0; i < monsters.length; i++) {
- var tmpX=monsters[i].X().pX+18;
- var tmpY=monsters[i].Y().pY+18;
- grid[tmpX][tmpY]=0;
- }
- }
- var start = grid[18][18];
- var end = grid[22,22];
- var rtn = astar.search(grid,start,end,true);
- Orion.Print(rtn.length);
- // for (var x = 0; x < grid.length; x++) {
- // for (var y = 0; y < grid[x].length; y++) {
- // Orion.Print(grid[x][y]);
- // }
- // }
- }
- // function BinaryHeap(scoreFunction){
- // this.content = [];
- // this.scoreFunction = scoreFunction;
- // }
- // BinaryHeap.prototype = {
- // push: function(element) {
- // // Add the new element to the end of the array.
- // this.content.push(element);
- // // Allow it to bubble up.
- // this.bubbleUp(this.content.length - 1);
- // },
- // pop: function() {
- // // Store the first element so we can return it later.
- // var result = this.content[0];
- // // Get the element at the end of the array.
- // var end = this.content.pop();
- // // If there are any elements left, put the end element at the
- // // start, and let it sink down.
- // if (this.content.length > 0) {
- // this.content[0] = end;
- // this.sinkDown(0);
- // }
- // return result;
- // },
- // remove: function(node) {
- // var length = this.content.length;
- // // To remove a value, we must search through the array to find
- // // it.
- // for (var i = 0; i < length; i++) {
- // if (this.content[i] != node) continue;
- // // When it is found, the process seen in 'pop' is repeated
- // // to fill up the hole.
- // var end = this.content.pop();
- // // If the element we popped was the one we needed to remove,
- // // we're done.
- // if (i == length - 1) break;
- // // Otherwise, we replace the removed element with the popped
- // // one, and allow it to float up or sink down as appropriate.
- // this.content[i] = end;
- // this.bubbleUp(i);
- // this.sinkDown(i);
- // break;
- // }
- // },
- // size: function() {
- // return this.content.length;
- // },
- // bubbleUp: function(n) {
- // // Fetch the element that has to be moved.
- // var element = this.content[n], score = this.scoreFunction(element);
- // // When at 0, an element can not go up any further.
- // while (n > 0) {
- // // Compute the parent element's index, and fetch it.
- // var parentN = Math.floor((n + 1) / 2) - 1,
- // parent = this.content[parentN];
- // // If the parent has a lesser score, things are in order and we
- // // are done.
- // if (score >= this.scoreFunction(parent))
- // break;
- // // Otherwise, swap the parent with the current element and
- // // continue.
- // this.content[parentN] = element;
- // this.content[n] = parent;
- // n = parentN;
- // }
- // },
- // sinkDown: function(n) {
- // // Look up the target element and its score.
- // var length = this.content.length,
- // element = this.content[n],
- // elemScore = this.scoreFunction(element);
- // while(true) {
- // // Compute the indices of the child elements.
- // var child2N = (n + 1) * 2, child1N = child2N - 1;
- // // This is used to store the new position of the element,
- // // if any.
- // var swap = null;
- // // If the first child exists (is inside the array)...
- // if (child1N < length) {
- // // Look it up and compute its score.
- // var child1 = this.content[child1N],
- // child1Score = this.scoreFunction(child1);
- // // If the score is less than our element's, we need to swap.
- // if (child1Score < elemScore)
- // swap = child1N;
- // }
- // // Do the same checks for the other child.
- // if (child2N < length) {
- // var child2 = this.content[child2N],
- // child2Score = this.scoreFunction(child2);
- // if (child2Score < (swap == null ? elemScore : child1Score))
- // swap = child2N;
- // }
- // // No need to swap further, we are done.
- // if (swap == null) break;
- // // Otherwise, swap and continue.
- // this.content[n] = this.content[swap];
- // this.content[swap] = element;
- // n = swap;
- // }
- // }
- // };
- /*
- ######################################################
- ### File: Scripts/Helpers/AutoBoost.oajs
- ######################################################
- */
- // AutoBoosty - fce pro cast boostu na zadost
- function AutoBoosty()
- {
- while (true)
- {
- var startTime=Orion.Now();
- Orion.Wait(300);
- var boostWait = Orion.WaitJournal('str:|dex:|int:|ar:|svetlo:|cure:|bless:',startTime,Orion.Now()+500);
- if (!boostWait || Player.Hidden()) continue;
- var t = Orion.FindObject(boostWait.Serial());
- Orion.RequestName(t.Serial(), 500);
- if (t.Notoriety() != Player.Notoriety()) continue;
- switch (boostWait.Text()) {
- case "svetlo:":
- BandCast("Night Sight", t.Serial());
- break;
- case "cure:":
- BandCast("Cure", t.Serial());
- break;
- case "bless:":
- BandCast("Bless", t.Serial());
- break;
- case "str:":
- BandCast("Strength", t.Serial());
- break;
- case "dex:":
- BandCast("Agility", t.Serial());
- break;
- case "int:":
- BandCast("Cunning", t.Serial());
- break;
- case "ar:":
- BandCast("Protection", t.Serial());
- break;
- }
- }
- }
- /*
- ######################################################
- ### File: Scripts/Helpers/AutoExping.oajs
- ######################################################
- */
- var any = '0xFFFF';
- function KeepDistance(distance){
- var central={X:Player.X(),Y:Player.Y()};
- while(!Player.Dead()){
- var monsters= GetMonstersCoord();
- Orion.Print("Monsters: "+monsters.size());
- if(Orion.GetDistance(monsters.content[0].X,monsters.content[0].Y)<distance){
- var gotoCoord = GetOptimalCoords(monsters, central).pop();
- //Orion.Print(gotoCoord.X+":"+gotoCoord.Y);
- WalkToEx(gotoCoord.X,gotoCoord.Y);
- }
- Orion.Wait(200);
- }
- }
- function WalkToEx(coords){
- var monster = Orion.FindTypeEx(any, any, 'ground', 'near|mobile|live|ignoreself|ignorefriends', 15, 'red')[0];
- var dist=Orion.GetDistance(monster.X(),monster.Y());
- var walkDist = Orion.GetDistance(coords.X,coords.Y)-1;
- while(!Player.Dead()){
- Orion.WalkTo(coords.X,coords.Y,-1000,walkDist);
- if(dist<Orion.GetDistance(monster.X(),monster.Y())){
- break;
- }
- }
- }
- function GetOptimalCoords(monsters, centralCoord){
- Orion.Print("Get optimal");
- var dist=8;
- var closestMonster = monsters.content[0];
- var closestCoords;
- var pass=false;
- var validCoords=new BinaryHeap(function (m) {
- return EuclidDist(m,centralCoord);
- });
- while (validCoords.size()<1) {
- Orion.Wait(100);
- closestCoords = GetDistanceCoords(dist,closestMonster);
- for (var c = 0; c < dist; c++) {
- pass=false;
- for (var i = 0; i < monsters.size(); i++) {
- pass = EuclidDist(closestCoords[c],monsters.content[i])>=dist;
- Orion.Print(pass);
- if(!pass)continue;
- }
- if(pass){
- validCoords.push(closestCoords[c]);
- }
- Orion.Print("valid: "+validCoords.length);
- }
- dist++;
- }
- return validCoords;
- }
- function EuclidDist(a, b) {
- return Math.sqrt((a.X - b.X) * (a.X - b.X) + (a.Y - b.Y) * (a.Y - b.Y));
- }
- function GetDistanceCoords(distance, initCoords){
- var coords = [
- { X: initCoords.X - distance,Y: initCoords.Y - distance },
- { X: initCoords.X + 0, Y: initCoords.Y - distance },
- { X: initCoords.X + distance, Y: initCoords.Y - distance },
- { X: initCoords.X + distance, Y: initCoords.Y + 0 },
- { X: initCoords.X + distance, Y: initCoords.Y + distance },
- { X: initCoords.X + 0, Y: initCoords.Y + distance },
- { X: initCoords.X - distance,Y: initCoords.Y + distance },
- { X: initCoords.X - distance,Y: initCoords.Y + 0 }
- ];
- return coords;
- }
- function GetMonstersCoord() {
- var monstTmp = Orion.FindTypeEx(any, any, 'ground', 'mobile|live|ignoreself|ignorefriends', 18, 'red');
- var monsters = new BinaryHeap(function (m) {
- return Orion.GetDistance(m.X, m.Y);
- });
- for (var i = 0; i < monstTmp.length; i++) {
- var e = monstTmp[i];
- if (e.CanChangeName()) continue;
- var t = {X:e.X(),Y:e.Y(),Dir:e.Direction()};
- monsters.push(t);
- }
- return monsters;
- }
- function BinaryHeap(scoreFunction) {
- this.content = [];
- this.scoreFunction = scoreFunction;
- }
- BinaryHeap.prototype = {
- push: function (element) {
- // Add the new element to the end of the array.
- this.content.push(element);
- // Allow it to bubble up.
- this.bubbleUp(this.content.length - 1);
- },
- pop: function () {
- // Store the first element so we can return it later.
- var result = this.content[0];
- // Get the element at the end of the array.
- var end = this.content.pop();
- // If there are any elements left, put the end element at the
- // start, and let it sink down.
- if (this.content.length > 0) {
- this.content[0] = end;
- this.sinkDown(0);
- }
- return result;
- },
- remove: function (node) {
- var length = this.content.length;
- // To remove a value, we must search through the array to find
- // it.
- for (var i = 0; i < length; i++) {
- if (this.content[i] != node) continue;
- // When it is found, the process seen in 'pop' is repeated
- // to fill up the hole.
- var end = this.content.pop();
- // If the element we popped was the one we needed to remove,
- // we're done.
- if (i == length - 1) break;
- // Otherwise, we replace the removed element with the popped
- // one, and allow it to float up or sink down as appropriate.
- this.content[i] = end;
- this.bubbleUp(i);
- this.sinkDown(i);
- break;
- }
- },
- size: function () {
- return this.content.length;
- },
- bubbleUp: function (n) {
- // Fetch the element that has to be moved.
- var element = this.content[n],
- score = this.scoreFunction(element);
- // When at 0, an element can not go up any further.
- while (n > 0) {
- // Compute the parent element's index, and fetch it.
- var parentN = Math.floor((n + 1) / 2) - 1,
- parent = this.content[parentN];
- // If the parent has a lesser score, things are in order and we
- // are done.
- if (score >= this.scoreFunction(parent))
- break;
- // Otherwise, swap the parent with the current element and
- // continue.
- this.content[parentN] = element;
- this.content[n] = parent;
- n = parentN;
- }
- },
- sinkDown: function (n) {
- // Look up the target element and its score.
- var length = this.content.length,
- element = this.content[n],
- elemScore = this.scoreFunction(element);
- while (true) {
- // Compute the indices of the child elements.
- var child2N = (n + 1) * 2,
- child1N = child2N - 1;
- // This is used to store the new position of the element,
- // if any.
- var swap = null;
- // If the first child exists (is inside the array)...
- if (child1N < length) {
- // Look it up and compute its score.
- var child1 = this.content[child1N],
- child1Score = this.scoreFunction(child1);
- // If the score is less than our element's, we need to swap.
- if (child1Score < elemScore)
- swap = child1N;
- }
- // Do the same checks for the other child.
- if (child2N < length) {
- var child2 = this.content[child2N],
- child2Score = this.scoreFunction(child2);
- if (child2Score < (swap == null ? elemScore : child1Score))
- swap = child2N;
- }
- // No need to swap further, we are done.
- if (swap == null) break;
- // Otherwise, swap and continue.
- this.content[n] = this.content[swap];
- this.content[swap] = element;
- n = swap;
- }
- }
- };
- /*
- ######################################################
- ### File: Scripts/Helpers/AutoExpyFena.oajs
- ######################################################
- */
- // function AfkExp() {
- // var expPath = [];
- // expPath.push({
- // X: 2826,
- // Y: 3646
- // });
- // expPath.push({
- // X: 2738,
- // Y: 3660
- // });
- // Orion.Print('Zamer Poison Phoenixe');
- // Orion.AddObject("fena");
- // while (Orion.HaveTarget()) Orion.Wait(100);
- // var fena = Orion.FindObject("fena");
- // Orion.Wait(500);
- // Orion.Say('all come');
- // for (var i = 0; i < expPath.length; i++) {
- // GoToExpLoc(expPath[i], fena);
- // }
- // }
- // function SafeWalkToFena(x, y, fena) {
- // Orion.GetStatus(fena.Serial());
- // while (Player.X() != x && Player.Y != y) {
- // var dist = Orion.GetDistance(x,y);
- // Orion.WalkTo(x, y, Player.Z(), dist-5); // po 5 polich az na souradky
- // var monstTmp = GetMonstersCoord();
- // if (monstTmp.size() > 0) {
- // return;
- // }
- // if (Orion.GetDistance(fena.X(), fena.Y()) > 6) {
- // Orion.Print("fena daleko, cekam");
- // Orion.WalkTo(fena.X(), fena.Y(), Player.Z(), 3);
- // Orion.Wait(150);
- // }
- // }
- // }
- // function GoToExpLoc(pos, fena) {
- // var holding = false;
- // while (Player.X() != pos.X && Player.Y() != pos.Y) {
- // Orion.Wait(155);
- // if (Orion.GetDistance(fena.X(), fena.Y()) > 9) {
- // Orion.Print("fena daleko, cekam");
- // Orion.WalkTo(fena.X(), fena.Y(), Player.Z(), 4);
- // Orion.Wait(1500);
- // } else {
- // Orion.Print("jdu na: " + pos.X + ":" + pos.Y);
- // SafeWalkToFena(pos.X, pos.Y, fena);
- // Orion.Wait(100);
- // }
- // Orion.Wait(100);
- // var monsters = GetMonstersCoord();
- // Orion.Print(monsters.size() + " Nalezeno monster, attack ?");
- // if (monsters.size() > 0) {
- // Orion.Wait(500);
- // Orion.Exec('KillAll');
- // Orion.Wait(500);
- // holding = true;
- // if (!Orion.ScriptRunning('HoldDistance')) {
- // var params = [fena.X(), fena.Y()];
- // Orion.Exec('HoldDistance', false, params);
- // }
- // var startKill=Orion.Now()+10000;
- // while (monsters.size() > 0) {
- // monsters = GetMonstersCoord();
- // Orion.Wait(500);
- // Orion.Print("pocet monster: " + monsters.size());
- // if(Orion.Now()>startKill && Orion.Now()<startKill+1000)
- // {
- // Orion.Exec('KillAll');
- // }
- // }
- // } else {
- // if (holding) {
- // HoldDistance(fena.X(), fena.Y());
- // holding = false;
- // Orion.Print('todo lot corpses');
- // Orion.Say('all come');
- // }
- // }
- // if (Orion.GetDistance(pos.X, pos.Y) < 5) {
- // return;
- // }
- // }
- // }
- // function HoldDistance(centX, centY) {
- // if (Orion.GetGlobal('holdDist') == 'true') {
- // Orion.SetGlobal('holdDist', 'false');
- // Orion.Print("Hold Dist Off");
- // Orion.OptionAlwaysRun(false);
- // return false;
- // } else {
- // Orion.SetGlobal('holdDist', 'true');
- // Orion.Print("Hold Dist ON");
- // Orion.OptionAlwaysRun(true);
- // }
- // var centralCoord = [];
- // centralCoord[0] = centX;
- // centralCoord[1] = centY;
- // Orion.SetGlobal('centX', Player.X());
- // Orion.SetGlobal('centY', Player.Y());
- // while (!Player.Dead()) {
- // if (Orion.GetGlobal('holdDist') == 'false') {
- // break;
- // }
- // Orion.Wait(100);
- // var coords = GetCoords(9);
- // var monsters = GetMonstersCoord();
- // if (monsters.size() < 1) continue;
- // var closest = monsters.content[0];
- // if (Orion.GetDistance(closest[0], closest[1]) < 7) {
- // // Orion.Print("closest: "+Orion.GetDistance(monsters[0][0],monsters[0][1]));
- // var rtn = FindOptimalCoord(coords, monsters, centralCoord, 6);
- // if (rtn) {
- // // Orion.Print(rtn[0]+", "+rtn[1]+" jdu daleko: "+Orion.GetDistance(rtn[0],rtn[1]));
- // var dist = Orion.GetDistance(rtn[0],rtn[1]);
- // Orion.WalkTo(rtn[0],rtn[1],-1000,dist-2);
- // }
- // }
- // }
- // }
- // function GetCoords(dist) {
- // var coords = [];
- // for (var x = -dist; x < dist; x++) {
- // for (var y = -dist; y < dist; y++) {
- // if (x == 0 || y == 0) {
- // continue;
- // }
- // var tmp = [];
- // tmp[0] = x + Player.X();
- // tmp[1] = y + Player.Y();
- // coords.push(tmp);
- // }
- // }
- // return coords;
- // }
- // function GetMonstersCoord() {
- // var monstTmp = Orion.FindTypeEx(any, any, 'ground', 'mobile|live|ignoreself|ignorefriends', 18, 'red');
- // var monsters = new BinaryHeap(function (m) {
- // return Orion.GetDistance(m[0], m[1]);
- // });
- // for (var i = 0; i < monstTmp.length; i++) {
- // var e = monstTmp[i];
- // if (e.CanChangeName()) continue;
- // var t = [];
- // t[0] = e.X();
- // t[1] = e.Y();
- // t[2] = e.Direction();
- // monsters.push(t);
- // }
- // return monsters;
- // }
- // function FindOptimalCoord(coords, monsters, centralCoord, minDist) {
- // if (monsters.size() < 1) return coords[0];
- // // monsters=monsters.sort(CompareDist);
- // // Orion.Print("monsters: "+monsters.length);
- // var goodCoords = new BinaryHeap(function (m) {
- // return EuclidDist(m, centralCoord);
- // //return Orion.GetDistance(m[0],m[1]);
- // });
- // for (var i = 0; i < coords.length; i++) {
- // var rtnDist = false;
- // var dOpt = ManhattanDist(coords[i], centralCoord);
- // if (dOpt > 25) continue;
- // for (var j = 0; j < monsters.size(); j++) {
- // var d = EuclidDist(coords[i], monsters.content[j]);
- // //Orion.Print("monsterCoord: "+d);
- // if (d > minDist) {
- // rtnDist = true;
- // } else {
- // rtnDist = false;
- // break;
- // }
- // }
- // if (rtnDist) {
- // // Orion.Print("whyL");
- // goodCoords.push(coords[i]);
- // }
- // }
- // //Orion.Print("goodCoords: "+goodCoords.content.length);
- // return goodCoords.pop()
- // }
- // function EuclidDist(a, b) {
- // return Math.sqrt((a[0] - b[0]) * (a[0] - b[0]) + (a[1] - b[1]) * (a[1] - b[1]));
- // }
- // function ManhattanDist(a, b) {
- // return Math.abs(a[0] - b[0]) + Math.abs(a[1] - b[1]);
- // }
- // function CompareDist(a, b) {
- // if (Orion.GetDistance(a[0], a[1]) < Orion.GetDistance(b[0], b[1]))
- // return -1;
- // if (Orion.GetDistance(a[0], a[1]) > Orion.GetDistance(b[0], b[1]))
- // return 1;
- // return 0;
- // }
- // function CompareDistToCenter(a, b) {
- // var cent = [];
- // cent[0] = parseInt(Orion.GetGlobal('centX'))
- // cent[1] = parseInt(Orion.GetGlobal('centY'))
- // if (EuclidDist(a, cent) < EuclidDist(b, cent))
- // return -1;
- // if (EuclidDist(a, cent) > EuclidDist(b, cent))
- // return 1;
- // return 0;
- // }
- // function BinaryHeap(scoreFunction) {
- // this.content = [];
- // this.scoreFunction = scoreFunction;
- // }
- // BinaryHeap.prototype = {
- // push: function (element) {
- // // Add the new element to the end of the array.
- // this.content.push(element);
- // // Allow it to bubble up.
- // this.bubbleUp(this.content.length - 1);
- // },
- // pop: function () {
- // // Store the first element so we can return it later.
- // var result = this.content[0];
- // // Get the element at the end of the array.
- // var end = this.content.pop();
- // // If there are any elements left, put the end element at the
- // // start, and let it sink down.
- // if (this.content.length > 0) {
- // this.content[0] = end;
- // this.sinkDown(0);
- // }
- // return result;
- // },
- // remove: function (node) {
- // var length = this.content.length;
- // // To remove a value, we must search through the array to find
- // // it.
- // for (var i = 0; i < length; i++) {
- // if (this.content[i] != node) continue;
- // // When it is found, the process seen in 'pop' is repeated
- // // to fill up the hole.
- // var end = this.content.pop();
- // // If the element we popped was the one we needed to remove,
- // // we're done.
- // if (i == length - 1) break;
- // // Otherwise, we replace the removed element with the popped
- // // one, and allow it to float up or sink down as appropriate.
- // this.content[i] = end;
- // this.bubbleUp(i);
- // this.sinkDown(i);
- // break;
- // }
- // },
- // size: function () {
- // return this.content.length;
- // },
- // bubbleUp: function (n) {
- // // Fetch the element that has to be moved.
- // var element = this.content[n],
- // score = this.scoreFunction(element);
- // // When at 0, an element can not go up any further.
- // while (n > 0) {
- // // Compute the parent element's index, and fetch it.
- // var parentN = Math.floor((n + 1) / 2) - 1,
- // parent = this.content[parentN];
- // // If the parent has a lesser score, things are in order and we
- // // are done.
- // if (score >= this.scoreFunction(parent))
- // break;
- // // Otherwise, swap the parent with the current element and
- // // continue.
- // this.content[parentN] = element;
- // this.content[n] = parent;
- // n = parentN;
- // }
- // },
- // sinkDown: function (n) {
- // // Look up the target element and its score.
- // var length = this.content.length,
- // element = this.content[n],
- // elemScore = this.scoreFunction(element);
- // while (true) {
- // // Compute the indices of the child elements.
- // var child2N = (n + 1) * 2,
- // child1N = child2N - 1;
- // // This is used to store the new position of the element,
- // // if any.
- // var swap = null;
- // // If the first child exists (is inside the array)...
- // if (child1N < length) {
- // // Look it up and compute its score.
- // var child1 = this.content[child1N],
- // child1Score = this.scoreFunction(child1);
- // // If the score is less than our element's, we need to swap.
- // if (child1Score < elemScore)
- // swap = child1N;
- // }
- // // Do the same checks for the other child.
- // if (child2N < length) {
- // var child2 = this.content[child2N],
- // child2Score = this.scoreFunction(child2);
- // if (child2Score < (swap == null ? elemScore : child1Score))
- // swap = child2N;
- // }
- // // No need to swap further, we are done.
- // if (swap == null) break;
- // // Otherwise, swap and continue.
- // this.content[n] = this.content[swap];
- // this.content[swap] = element;
- // n = swap;
- // }
- // }
- // };
- /*
- ######################################################
- ### File: Scripts/Helpers/AutoHideCorpses.oajs
- ######################################################
- */
- function AutoHideCorpses() {
- while (true) {
- Orion.Wait(1000);
- if (Player.Dead()) continue;
- var cnt = Orion.FindType('0x2006', any, ground);
- for (var i = 0; i < cnt.length; i++) {
- Orion.Hide(cnt[i]);
- }
- }
- }
- /*
- ######################################################
- ### File: Scripts/Helpers/AutoLoot.oajs
- ######################################################
- */
- function AutoLoot_Ground_ItemMapGoldRegsGems() {
- while (true) {
- Orion.Wait(1000);
- if (Player.Dead()) { continue; }
- Lot(ground, "LotItemMaps");
- Lot(ground, "LotGold");
- Lot(ground, "LotRegs");
- Lot(ground, "LotGems");
- }
- }
- // fce pro autoloot ruznych poskupin, kazda cerpa ze sveho FindListu
- function AutoLoot_ItemMap() {
- var corpse;
- while (true) {
- Orion.Wait(200);
- if (Player.Dead() || Player.Hidden()) continue;
- corpse = FindCorpse();
- if (corpse == null) continue;
- var it = Orion.FindType(any, any, corpse.Serial());
- if (it.length > 9) {
- continue;
- }
- Lot(corpse.Serial(), "LotItemMaps");
- }
- }
- function AutoLoot_Gold() {
- var corpse;
- while (true) {
- Orion.Wait(200);
- if (Player.Dead() || Player.Hidden()) continue;
- corpse = FindCorpse();
- if (corpse == null) continue;
- var it = Orion.FindType(any, any, corpse.Serial());
- if (it.length > 9) {
- continue;
- }
- Lot(corpse.Serial(), "LotGold");
- }
- }
- function AutoLoot_Regs() {
- var corpse;
- while (true) {
- Orion.Wait(200);
- if (Player.Dead() || Player.Hidden()) continue;
- corpse = FindCorpse();
- if (corpse == null) continue;
- var it = Orion.FindType(any, any, corpse.Serial());
- if (it.length > 9) {
- continue;
- }
- Lot(corpse.Serial(), "LotRegs");
- }
- }
- function AutoLoot_Gems() {
- var corpse;
- while (true) {
- Orion.Wait(200);
- if (Player.Dead() || Player.Hidden()) continue;
- corpse = FindCorpse();
- if (corpse == null) continue;
- var it = Orion.FindType(any, any, corpse.Serial());
- if (it.length > 9) {
- continue;
- }
- Lot(corpse.Serial(), "LotGems");
- }
- }
- function AutoLoot_LeatherFeather() {
- var corpse;
- while (true) {
- Orion.Wait(200);
- if (Player.Dead() || Player.Hidden()) continue;
- corpse = FindCorpse();
- if (corpse == null) continue;
- var it = Orion.FindType(any, any, corpse.Serial());
- if (it.length > 9) {
- continue;
- }
- Lot(corpse.Serial(), "LotLeather");
- Lot(corpse.Serial(), "LotFeather");
- }
- }
- function AutoLoot_Custom() {
- var corpse;
- while (true) {
- Orion.Wait(200);
- if (Player.Dead() || Player.Hidden()) continue;
- corpse = FindCorpse();
- if (corpse == null) continue;
- var it = Orion.FindType(any, any, corpse.Serial());
- if (it.length > 9) {
- continue;
- }
- Lot(corpse.Serial(), "LotCustom");
- }
- }
- // LotSipky - loti sipky a sipy ze zeme + vyhazuje sipy od NPC
- function LotSipky()
- {
- if(Orion.GetGlobal('lotSipky')=='true'){
- Orion.SetGlobal('lotSipky','false');
- CharPrintDelayed(self, '0x0021', "Lot Sipky OFF",25);
- }
- else{
- Orion.SetGlobal('lotSipky','true');
- CharPrintDelayed(self, '0x0111', "Lot Sipky ON",25);
- }
- while(!Player.Dead())
- {
- if(Orion.GetGlobal('lotSipky')=='false'){
- break;
- }
- var suxsipy = Orion.FindType('0x0F3F', '0x0000', 'backpack',true);
- if (suxsipy.length > 0) {
- for (var i = 0; i < suxsipy.length; i++) {
- Orion.DropHere(suxsipy[i], 0);
- }
- }
- var sipky =Orion.FindTypeEx('0x1BFB|0x38D8|0x0F3F', any, ground, '', 3);
- for (var i = 0; i < sipky.length; i++)
- {
- var e = sipky[i];
- if(e.Color()=='0x0000')
- {
- Orion.Ignore(e.Serial());
- continue;
- }
- if (Math.abs(Player.Z() - e.Z()) > 2) continue;
- Orion.MoveItem(e.Serial(), 0, backpack);
- Orion.Wait(200);
- if (e.Container() != backpack)
- {
- Orion.Ignore(e.Serial());
- }
- }
- var corpse = Orion.FindType('0x2006', any, ground);
- if (corpse.length < 1) continue;
- else
- {
- for (var i = 0; i < corpse.length; i++)
- {
- var e = corpse[i];
- var it = Orion.FindType(any, any, e);
- var itSipky = Orion.FindTypeEx('0x1BFB|0x38D8|0x0F3F', any, e);
- if (it.length > 9)
- {
- continue;
- }
- for (var a = 0; a < itSipky.length; a++) {
- var s = itSipky[a];
- Orion.MoveItem(s.Serial(),0,backpack);
- Orion.Wait(200);
- if (s.Container() != backpack)
- {
- Orion.Ignore(s.Serial());
- }
- }
- }
- }
- }
- if(Player.Dead()){
- Orion.SetGlobal('lotSipky','false');
- CharPrintDelayed(self, '0x0021', "Lot Sipky OFF",25);
- }
- }
- function FindCorpse(_private) {
- var FindLists = ['LotItemMaps']; //,'LotRegs','LotGems','LotFeather','LotLeather','LotCustom','LotGold'];
- if (Orion.ScriptRunning('AutoLoot_Gold')) FindLists.push('LotGold');
- if (Orion.ScriptRunning('AutoLoot_Custom')) FindLists.push('LotCustom');
- if (Orion.ScriptRunning('AutoLoot_LeatherFeather')) {
- FindLists.push('LotLeather');
- FindLists.push('LotFeather');
- }
- if (Orion.ScriptRunning('AutoLoot_Gems')) FindLists.push('LotGems');
- if (Orion.ScriptRunning('AutoLoot_Regs')) FindLists.push('LotRegs');
- var list = Orion.FindType('0x2006', '0xFFFF', ground, '', '3');
- if (!list) return null;
- var list2 = list.filter(function(fil) {
- var items = [];
- for (var i = 0; i < FindLists.length; i++) {
- items = items.concat(Orion.FindList(FindLists[i], fil));
- }
- if (items.length) return true;
- return false;
- });
- if (list2.length) {
- return Orion.FindObject(list2[0]);
- }
- return null;
- }
- function Lot(corpse, listName) {
- var list = Orion.FindList(listName, corpse);
- if (!list.length) {
- return false;
- }
- try{
- for (var i = 0; i < list.length; i++) {
- if (Orion.GetDistance(corpse) > 3 && corpse != ground) {
- return false;
- }
- if (corpse == ground && Orion.GetDistance(list[i]) > 2) continue;
- if (corpse == ground && Math.abs(Player.Z() - item.Z()) > 3) continue;
- var item = Orion.FindObject(list[i]);
- if (item) {
- if (item.Graphic() == 0x0E76) {
- if (item.Color() != 0x0430) continue;
- }
- if (item.Graphic() == 0x0EED) {
- if (item.Count() < 10) continue;
- }
- }
- if (Orion.GetGlobal('Equipping') == 'true') {
- Orion.Wait(500);
- }
- while(Orion.GetGlobal('save'=='true'))
- {
- Orion.Wait(200);
- }
- Orion.MoveItem(list[i], 0, 'lotBag'); //,60,140);
- Orion.Wait(100);
- if (item.Container() != Orion.GetSerial('lotBag')) { Orion.Wait(200); }
- }
- return true;
- }
- catch(ex){
- Debug(ex);
- }
- }
- /*
- ######################################################
- ### File: Scripts/Helpers/AutoPackCoins.oajs
- ######################################################
- */
- // Automesec - co 5 vterin prohledava backpack a pocita kolik GP obsahuje, po prekroceni nastavene hodnoty pouzije prikaz ".mesec"
- // najde-li vice mescu tak je sesype
- function AutoMesec() {
- while (true) {
- Orion.Wait(5000);
- if (Player.Dead()) continue;
- var gp = Orion.Count('0x0EED');
- if (gp > GetGPAmount()) // nad kolik GP dela mesce
- Orion.Say(".mesec");
- var gpBags = Orion.FindType('0x0E76', '0x0995', 'backpack');
- if (gpBags.length > 1) {
- for (var i = 1; i < gpBags.length; i++) {
- Orion.MoveItem(gpBags[i], 1, gpBags[0]);
- }
- }
- }
- }
- /*
- ######################################################
- ### File: Scripts/Helpers/Autostart.oajs
- ######################################################
- */
- function Autostart() {
- Orion.Terminate('all', ['Autostart']);
- Orion.SetLOSOptions('sphere|spherecheckcorners');
- SwitchArm(1);
- Orion.Exec("PotionWatch");
- Orion.Exec("AutoMesec");
- Orion.Exec("OnHitBandage");
- Orion.Exec("JournalCheck");
- Orion.Exec("HPCheck");
- Orion.Exec('HPCheckLastTarget');
- Orion.Exec("AutoLoot_Ground_ItemMapGoldRegsGems");
- // Orion.Exec("AutoLoot_Custom");
- // Orion.Exec("AutoLoot_LeatherFeather");
- Orion.Exec("AutoLoot_Gems");
- Orion.Exec("AutoLoot_Regs");
- Orion.Exec("AutoLoot_Gold");
- Orion.Exec("AutoLoot_ItemMap");
- Orion.Exec("LogMonstersToFile");
- Orion.Exec("CheckLOS");
- Orion.Exec("GetNamesLastContainer");
- // Orion.Exec("ShowTimeBetweenHit");
- // Orion.Exec("Naprahy");
- Orion.OptionScaleSpeechDelay(60);
- Orion.Print(Player.Name());
- Orion.SetGlobal('LeapTime', Orion.Now() + 3000);
- Orion.SetGlobal('save','false');
- Orion.SetGlobal('DynamicHealPause',100);
- Orion.SetGlobal('isHidding','false');
- Orion.SetGlobal("probo", false);
- Orion.SetGlobal("trgMode", 1);
- Orion.Print('0x0044',"Target Monsters");
- Orion.SetGlobal("trgModeSpell", 'pvm');
- Orion.SetGlobal('autoCast', false);
- Orion.SetGlobal("bandageDone", true);
- Orion.SetGlobal("isCasting", false);
- Orion.SetGlobal("GetCheckLineOfSight", GetCheckLineOfSight());
- Orion.Wait(200);
- Orion.Print(" Na sebe nastav Equip0 pro bandeni");
- GetProdleva();
- Orion.Say(".standcast");
- Orion.Wait(100);
- Orion.Say(".standcast");
- }
- /*
- ######################################################
- ### File: Scripts/Helpers/BinaryHeap.oajs
- ######################################################
- */
- function BinaryHeap(scoreFunction) {
- this.content = [];
- this.scoreFunction = scoreFunction;
- }
- BinaryHeap.prototype = {
- push: function (element) {
- // Add the new element to the end of the array.
- this.content.push(element);
- // Allow it to bubble up.
- this.bubbleUp(this.content.length - 1);
- },
- pop: function () {
- // Store the first element so we can return it later.
- var result = this.content[0];
- // Get the element at the end of the array.
- var end = this.content.pop();
- // If there are any elements left, put the end element at the
- // start, and let it sink down.
- if (this.content.length > 0) {
- this.content[0] = end;
- this.sinkDown(0);
- }
- return result;
- },
- remove: function (node) {
- var length = this.content.length;
- // To remove a value, we must search through the array to find
- // it.
- for (var i = 0; i < length; i++) {
- if (this.content[i] != node) continue;
- // When it is found, the process seen in 'pop' is repeated
- // to fill up the hole.
- var end = this.content.pop();
- // If the element we popped was the one we needed to remove,
- // we're done.
- if (i == length - 1) break;
- // Otherwise, we replace the removed element with the popped
- // one, and allow it to float up or sink down as appropriate.
- this.content[i] = end;
- this.bubbleUp(i);
- this.sinkDown(i);
- break;
- }
- },
- size: function () {
- return this.content.length;
- },
- bubbleUp: function (n) {
- // Fetch the element that has to be moved.
- var element = this.content[n],
- score = this.scoreFunction(element);
- // When at 0, an element can not go up any further.
- while (n > 0) {
- // Compute the parent element's index, and fetch it.
- var parentN = Math.floor((n + 1) / 2) - 1,
- parent = this.content[parentN];
- // If the parent has a lesser score, things are in order and we
- // are done.
- if (score >= this.scoreFunction(parent))
- break;
- // Otherwise, swap the parent with the current element and
- // continue.
- this.content[parentN] = element;
- this.content[n] = parent;
- n = parentN;
- }
- },
- sinkDown: function (n) {
- // Look up the target element and its score.
- var length = this.content.length,
- element = this.content[n],
- elemScore = this.scoreFunction(element);
- while (true) {
- // Compute the indices of the child elements.
- var child2N = (n + 1) * 2,
- child1N = child2N - 1;
- // This is used to store the new position of the element,
- // if any.
- var swap = null;
- // If the first child exists (is inside the array)...
- if (child1N < length) {
- // Look it up and compute its score.
- var child1 = this.content[child1N],
- child1Score = this.scoreFunction(child1);
- // If the score is less than our element's, we need to swap.
- if (child1Score < elemScore)
- swap = child1N;
- }
- // Do the same checks for the other child.
- if (child2N < length) {
- var child2 = this.content[child2N],
- child2Score = this.scoreFunction(child2);
- if (child2Score < (swap == null ? elemScore : child1Score))
- swap = child2N;
- }
- // No need to swap further, we are done.
- if (swap == null) break;
- // Otherwise, swap and continue.
- this.content[n] = this.content[swap];
- this.content[swap] = element;
- n = swap;
- }
- }
- };
- /*
- ######################################################
- ### File: Scripts/Helpers/Carving.oajs
- ######################################################
- */
- // Carv - funkce rozreze mrtvoly a pavuciny v dosahu nastavenou zbrani (Lists/Objects) + hlida zda mrtvola neni jezditko
- function Carv() {
- var carvTool = Orion.FindObject('carv');
- if (carvTool == null) {
- Orion.Print("Nemas nastaveny nuz - carv");
- return;
- }
- Orion.IgnoreReset();
- var corpses = Orion.FindType('0x2006|0x0EE3|0x0EE4|0x0EE5|0x0EE6', any, ground, 3);
- if (!corpses.length) return;
- for (i = 0; i < corpses.length; i++) {
- Orion.CancelTarget();
- var name = Orion.RequestName(corpses[i]);
- if (Orion.Contains(name, 'mustang|oclock|orn|zostrich|ledni|ridgeback|zostrich', true)) continue;
- Orion.WaitTargetObject(corpses[i]);
- Orion.UseObject(carvTool.Serial());
- Orion.Wait(250);
- }
- Orion.Arm(Orion.GetGlobal("weap"));
- }
- /*
- ######################################################
- ### File: Scripts/Helpers/CheckLastTargetLOS.oajs
- ######################################################
- */
- function CheckLOS()
- {
- var target=Orion.GetSerial(lasttarget);
- while (true) {
- Orion.Wait(200);
- if (Player.Dead()) {
- Orion.Wait(500);
- continue;
- }
- try
- {
- var lt = Orion.GetSerial(lasttarget);
- if(target!=lt){
- Orion.ClearHighlightCharacters(true);
- }
- if(Orion.InLOS(lt)){
- Orion.AddHighlightCharacter(lt, 0x0035,true);
- target=lt;
- }
- else{
- Orion.ClearHighlightCharacters(true);
- }
- } catch (ex) {
- Debug(ex);
- }
- }
- }
- /*
- ######################################################
- ### File: Scripts/Helpers/CutLeather.oajs
- ######################################################
- */
- // CutLeather - fce striha kuze v batohu, pokud najde nuzky
- function CutLeather() {
- var siccors = Orion.FindType('0x0F9E|0x0F9F', any, backpack);
- var leathers = Orion.FindType('0x1078', any, backpack);
- if (!siccors || !siccors) return;
- for (var i = 0; i < leathers.length; i++) {
- Orion.WaitTargetObject(leathers[i]);
- Orion.UseType('0x0F9E|0x0F9F');
- Orion.Wait(300);
- }
- }
- /*
- ######################################################
- ### File: Scripts/Helpers/Follow.oajs
- ######################################################
- */
- function follow(){
- Orion.AddObject("follow");
- while (Orion.HaveTarget()) Orion.Wait(100);
- var target = Orion.FindObject('follow');
- while(!Player.Dead()){
- Orion.Follow(target.Serial(),true);
- Orion.Wait(100);
- }
- }
- function CleverFollow(distance){
- }
- /*
- ######################################################
- ### File: Scripts/Helpers/GetActualEquipIDs.oajs
- ######################################################
- */
- // PrintEq - vypise ID aktualniho equipu
- function PrintActualEquip(__private) {
- var layers = [6, 18, 10, 8, 14, 17, 22, 20, 7, 19, 13, 4];
- TextWindow.Open();
- TextWindow.Clear();
- for (var i = 0; i < layers.length; i++) {
- var obj = Orion.ObjAtLayer(layers[i]);
- if (!obj) continue;
- TextWindow.Print(obj.Serial() + ",");
- }
- }
- /*
- ######################################################
- ### File: Scripts/Helpers/GetCoinsFromPack.oajs
- ######################################################
- */
- // VysypPokladnicky - vyhleda v batohu sechny pokladnicky a postupne je vysype do zvoleneho batohu - pracuje dokud v backpacku najde nejakou pokladnicku
- function VysypPokladnicky() {
- Orion.AddObject("trg");
- Orion.Print("Zamer kam vysypat pokladnicky");
- while (Orion.HaveTarget()) Orion.Wait(100);
- var target = Orion.FindObject('trg');
- Orion.RemoveObject('trg');
- var gpPack = Orion.FindType('0x0E76|0x0E80|0x09A8', '0x0995', backpack);
- while (gpPack) {
- while(Orion.GetGlobal('save'=='true'))
- {
- Orion.Wait(200);
- }
- Orion.Wait(200);
- Orion.UseObject(gpPack[0]);
- Orion.Wait(200);
- var gum = Orion.GetLastGump();
- Orion.Wait(200);
- var hook = Orion.CreateGumpHook(2);
- gum.Select(hook);
- Orion.Wait(100);
- var gp = Orion.FindType(0x0EED, 0x0000, backpack);
- for (var i = 0; i < gp.length; i++) {
- Orion.MoveItem(gp[i], 0, target.Serial());
- }
- gpPack = Orion.FindType('0x0E76|0x0E80|0x09A8', '0x0995', backpack);
- }
- Orion.Print("Pokladnicky nenalezeny");
- }
- /*
- ######################################################
- ### File: Scripts/Helpers/HPChecker.oajs
- ######################################################
- */
- // HPCheck - fce hlidajici HP a pripadne pouzije heal potion + vypis zmen HP
- function HPCheck() {
- var lastHP = Player.Hits();
- var change = 0;
- while (true) {
- Orion.Wait(100);
- if (Player.Dead()) {
- Debug("Vypinam HPPrint");
- break;
- }
- if (lastHP != Player.Hits()) {
- if (lastHP < Player.Hits() && (Player.Hits() - lastHP) > 4) {
- change = Player.Hits() - lastHP;
- if (change < 4) continue;
- CharPrintDelayed('self', '0x0044', "+" + Math.ceil((change / (Player.MaxHits() / 100)).toFixed(2))); // +HP
- } else {
- change = lastHP - Player.Hits();
- if (change < 4) continue;
- CharPrintDelayed('self', '0x0087', "-" + Math.ceil((change / (Player.MaxHits() / 100)).toFixed(2))); // +HP
- }
- lastHP = Player.Hits();
- }
- if (!Player.Dead() && Player.Hits() < GetCriticalHits() && Player.Hits() > 0 && GetAutoDrinkHeal() && !Player.Dead()) {
- var params = ['heal'];
- Orion.Exec('Potion', false, params);
- }
- }
- }
- // HPCheck - fce hlidajici HP a pripadne pouzije heal potion + vypis zmen HP
- function HPCheckLastTarget() {
- var lastHP = 100;
- var target = Orion.FindObject(lasttarget);
- var change = 0;
- while (true) {
- target = Orion.FindObject(lasttarget);
- Orion.Wait(100);
- if (Player.Dead()) {
- Debug("Vypinam HPPrint");
- Orion.Wait(1000);
- continue;
- }
- if(target==null) continue;
- var textColor=0x038A;
- if (lastHP != target.Hits()) {
- if (lastHP < target.Hits() && (target.Hits() - lastHP) > 2) {// Bila - tyrkys
- change = target.Hits() - lastHP;
- if (change < 2) continue;
- var text ="+" + Math.ceil((change / (target.MaxHits() / 100)).toFixed(2))+" ["+target.Hits()+"]";
- CharPrintDelayed('self', textColor, text); // +HP
- Orion.CharPrint(target.Serial(), '0x0044', text)
- } else {
- change = lastHP - target.Hits();
- if (change < 2) continue;
- var text="-" + Math.ceil((change / (target.MaxHits() / 100)).toFixed(2))+" ["+target.Hits()+"]";
- CharPrintDelayed('self', textColor, text); // +HP
- Orion.CharPrint(target.Serial(), '0x0087', text)
- }
- lastHP = target.Hits();
- }
- }
- }
- /*
- ######################################################
- ### File: Scripts/Helpers/InfoItems.oajs
- ######################################################
- */
- function InfoItem(Serial) {
- var staffTypes = ['0x13F9', '0x13F8', '0x0DF0', '0x0DF1']; //GN,GN,BS,BS
- var target = Orion.FindObject(Serial);
- for (var a = 0; a < containerTypes.length; a++) {
- if (target.Graphic() == containerTypes[a].Graphic) {
- Orion.Print("Kontejner, preskakuju");
- return;
- }
- }
- Orion.ClearJournal();
- Orion.Click(target.Serial());
- Orion.Wait(300);
- var txt = "";
- var txt1 = "";
- var txt2 = "";
- var ln;
- for (var i = 0; i < Orion.JournalCount(); i++) {
- ln = Orion.JournalLine(i);
- if (ln.Serial() == target.Serial()) {
- var staff = false;
- txt = ln.Text();
- for (var a = 0; a < staffTypes.length; a++) {
- if (target.Graphic() == staffTypes[a]) {
- staff = true;
- }
- }
- try {
- if (!staff) {
- txt1 = Orion.JournalLine(i + 1).Text();
- txt2 = Orion.JournalLine(i + 2).Text();
- } else {
- txt1 = Orion.JournalLine(i + 3).Text();
- txt2 = Orion.JournalLine(i + 4).Text();
- }
- } catch (err) {}
- Orion.ClearJournal();
- }
- }
- TextWindow.Print(txt + "|" + txt1 + "|" + txt2);
- return {Name:txt,ID:ln.Serial()};
- }
- // InfoItems - Projde vsechny itemy v zamerene truhle a vypise jejich vlastnosti
- function InfoItems() {
- Orion.Print('Zamer item truhlu');
- Orion.AddObject("vetech");
- while (Orion.HaveTarget()) {
- Orion.Wait(100);
- }
- var itemList=[];
- var target = Orion.FindObject('vetech');
- Orion.RemoveObject("vetech");
- TextWindow.Clear();
- TextWindow.Open();
- var items = Orion.FindType(any, any, target.Serial());
- for (var i = 0; i < items.length; i++) {
- itemList.push(InfoItem(items[i]));
- }
- //sort
- var stealth='0x40049936'; //rogues
- var hidding='0x4003D0C4'; //rogues
- var blocking='0x40063EAE'; //Blocking
- var healing='0x400763B1';
- var anatomy='0x40073203';
- var str_Tactics='0x4006C11B';
- var animalkilling='0x40067469';
- var humankilling='0x4007CCF0';
- var golemkilling='0x40034F1D';
- var demonilling='0x4004FB3D';
- var provo='0x4007A203';
- var entic='0x40067042';
- var spiritspeak='0x4007698B';
- var magery='0x40004E1C';
- var peacemaking='0x400763B1';
- for (var i = 0; i < itemList.length; i++) {
- if(Orion.Contains(itemList[i].Name, 'Rogue', true)){
- Orion.MoveItem(itemList[i].ID, 0, stealth);
- continue;
- }
- if(Orion.Contains(itemList[i].Name, 'Blocking', true)){
- Orion.MoveItem(itemList[i].ID, 0, blocking);
- continue;
- }
- if(Orion.Contains(itemList[i].Name, 'Healers', true)){
- Orion.MoveItem(itemList[i].ID, 0, healing);
- continue;
- }
- if(Orion.Contains(itemList[i].Name, 'Scholar', true)){
- Orion.MoveItem(itemList[i].ID, 0, anatomy);
- continue;
- }
- if(Orion.Contains(itemList[i].Name, 'Titans|Warrior', true)){
- Orion.MoveItem(itemList[i].ID, 0, str_Tactics);
- continue;
- }
- if(Orion.Contains(itemList[i].Name, 'Animalkilling', true)){
- Orion.MoveItem(itemList[i].ID, 0, animalkilling);
- continue;
- }
- if(Orion.Contains(itemList[i].Name, 'Ogrekiller', true)){
- Orion.MoveItem(itemList[i].ID, 0, humankilling);
- continue;
- }
- if(Orion.Contains(itemList[i].Name, 'Mechanicslaying', true)){
- Orion.MoveItem(itemList[i].ID, 0, golemkilling);
- continue;
- }
- if(Orion.Contains(itemList[i].Name, 'Demonslayer', true)){
- Orion.MoveItem(itemList[i].ID, 0, demonilling);
- continue;
- }
- if(Orion.Contains(itemList[i].Name, 'Bards', true)){
- Orion.MoveItem(itemList[i].ID, 0, provo);
- continue;
- }
- if(Orion.Contains(itemList[i].Name, 'Bard', true)){
- Orion.MoveItem(itemList[i].ID, 0, entic);
- continue;
- }
- if(Orion.Contains(itemList[i].Name, 'Medium', true)){
- Orion.MoveItem(itemList[i].ID, 0, spiritspeak);
- continue;
- }
- if(Orion.Contains(itemList[i].Name, 'Peacemakers', true)){
- Orion.MoveItem(itemList[i].ID, 0, peacemaking);
- continue;
- }
- if(Orion.Contains(itemList[i].Name, 'Bard', true)){
- Orion.MoveItem(itemList[i].ID, 0, entic);
- continue;
- }
- }
- }
- /*
- ######################################################
- ### File: Scripts/Helpers/JournalChecker.oajs
- ######################################################
- */
- // JournalCheck - hlida Journal a na dane zpravy reguje
- function JournalCheck() {
- Orion.Wait(4000);
- var loop= true;
- Orion.ClearJournal();
- var expstart = GetActualExp();
- Orion.SetGlobal("ExpStart", expstart.Min);
- Orion.SetGlobal("ExpStartTime", Orion.Now());
- var lastMsg;
- while (loop) {
- Orion.Wait(100);
- if (Orion.LastJournalMessage() == lastMsg) {
- continue;
- }
- for (var key in journalActions) {
- if (journalActions.hasOwnProperty(key)) {
- var element = journalActions[key];
- var txt = Orion.InJournal(element.Text, element.Command);
- if (txt) {
- Orion.SetGlobal('txtSerial', txt.Serial());
- Orion.SetGlobal('txtContent', txt.Text());
- element.Action();
- Orion.ClearJournal(element.Text);
- }
- }
- }
- lastMsg = Orion.LastJournalMessage();
- }
- }
- /*
- ######################################################
- ### File: Scripts/Helpers/LastContainerGetNames.oajs
- ######################################################
- */
- function GetNamesLastContainer(){
- var tmp = Orion.GetSerial(lastcontainer);
- while(true){
- Orion.Wait(500);
- var lc =Orion.GetSerial(lastcontainer);
- if(tmp!=lc){
- tmp=lastcontainer;
- GetRuneNames(tmp);
- }
- }
- }
- function GetRuneNames(container){
- var items=Orion.FindTypeEx('0x1F17|0x1F14|0x1F15|0x1F16|0x1CE9|0x1DAE|0x1CE1|0x1DA0', any, container,true); //hlavy 0x1CE9|0x1DAE|0x1CE1|0x1DA0 a runy
- for (var i = 0; i < items.length; i++) {
- var e = items[i];
- if(e.Name().length==0){
- Orion.RequestName(e.Serial(), 500);
- }
- }
- }
- /*
- ######################################################
- ### File: Scripts/Helpers/LogMonsters.oajs
- ######################################################
- */
- // zaznamenava souradnice monster s cervenou karmou pro dalsi zpracovani a pridani do UOMapy
- function LogMonstersToFile(){
- var logged =[];
- var file = Orion.NewFile();
- file.Open(MonsterPositions);
- while(true){
- Orion.Wait(2000);
- var monsters = Orion.FindType('-1', '-1', ground, 'mobile', '18', 'murderer');
- file.Append(MonsterPositions);
- for(var i=0;i<monsters.length;i++){
- var monster = Orion.FindObject(monsters[i]);
- if(logged.indexOf(monsters[i])==-1 && monster.Graphic() != '0x0190' && monster.Graphic() != '0x0191' ){
- logged.push(monsters[i]);
- var txt= monster.Serial()+";+Monster: "+monster.X()+" "+monster.Y()+" 1 "+monster.Name();
- file.WriteLine(txt);
- }
- }
- file.Close();
- if(logged.length >200){
- logged =[];
- }
- }
- }
- /*
- ######################################################
- ### File: Scripts/Helpers/MoveItems.oajs
- ######################################################
- */
- function DropItem() {
- Orion.Print("Zamezery item vyhazuje po 1 ks krok po kroku 9x");
- DropItem(9);
- }
- //postupne vyhazuje zvoleny item pod nohy, hleda pouze v kontejneru ve kterem se nachazel zvoleny item
- function DropItem(coun) {
- var memory = {};
- var count = parseInt(coun);
- Orion.Print("Zamer item k vyhazovani -> " + count);
- Orion.AddObject("trg");
- while (Orion.HaveTarget()) Orion.Wait(100);
- var target = Orion.FindObject('trg');
- var graphic = target.Graphic();
- var color = target.Color();
- var container = target.Container();
- var cnt = 0;
- Orion.ClearJournal("stop");
- var myX = Player.X();
- var myY = Player.Y();
- var item = Orion.FindType(graphic, color, container);
- if (item.length < 1) {
- Orion.Print("Nemas predmety");
- return;
- }
- Orion.DropHere(item[0], 1);
- Orion.Print(myX + ":" + myY);
- memory[myX + ":" + myY] = true;
- if (memory[myX + ":" + myY] === true) {
- Orion.Print("WOOWOWO");
- }
- while (!Orion.InJournal('stop', 'my')) {
- if (Player.X() != myX || Player.Y() != myY) {
- myX = Player.X();
- myY = Player.Y();
- if (cnt >= count) return;
- if (memory[myX + ":" + myY] === true) continue;
- var item = Orion.FindType(graphic, color, container);
- if (item.length < 1) {
- Orion.Print("Nemas predmety");
- return;
- }
- Orion.DropHere(item[0], 1);
- memory[myX + ":" + myY] = true;
- Orion.Wait(200);
- cnt = cnt + 1;
- }
- Orion.Wait(200);
- }
- Orion.Print("konec");
- }
- // TakeAll - presune vsechny predmety do lotbaglu ze zamereneho kontejneru- treba jej prvne otevrit
- function TakeAll() {
- Orion.AddObject("trg");
- while (Orion.HaveTarget()) Orion.Wait(100);
- var target = Orion.FindObject('trg');
- var items = Orion.FindType(any, any, target.Serial());
- for (var i = 0; i < items.length; i++) {
- if (Player.Weight() > Player.MaxWeight() - 20) break;
- Orion.MoveItem(items[i], 0, 'lotBag');
- Orion.Wait(100);
- }
- Orion.RemoveObject('trg');
- }
- function DropR(x,y,z){
- Orion.DropDraggedItemRelative(x,y,z);
- }
- // OpenAllContainers - otevre vsechny kontejnery ve zvojelen kontejneru
- function OpenAllContainers(serial) {
- Orion.OpenContainer(serial, 500);
- var fnd = Orion.FindType(allContainers, '0xFFFF', serial);
- if (!fnd.length) return;
- for (var i = 0; i < fnd.length; i++) {
- OpenAllContainers(fnd[i]);
- Orion.Wait(100);
- }
- }
- // Presun - presune vsechny predmety z 1 do 2 kontejneru, v pripadepresunu k postave zastavi po dosazeni maximalni vahy
- function Presun() {
- Orion.Print('Zamer bagl odkud ');
- Orion.AddObject("vetech");
- while (Orion.HaveTarget()) {
- Orion.Wait(100);
- }
- var bagl = Orion.FindObject('vetech');
- Orion.Click(bagl.Serial());
- Orion.RemoveObject("vetech");
- Orion.Print('Zamer bagl KAM ');
- Orion.AddObject("vetech");
- while (Orion.HaveTarget()) {
- Orion.Wait(100);
- }
- var bagl2 = Orion.FindObject('vetech');
- Orion.RemoveObject("vetech");
- var items = Orion.FindType(any, any, bagl.Serial());
- Orion.Print("items: "+items.length);
- for (var i = 0; i < items.length; i++) {
- if (Player.Weight() > Player.MaxWeight() - 20) break;
- Orion.MoveItem(items[i], 1, bagl2.Serial());
- Orion.Wait(200);
- }
- }
- /*
- ######################################################
- ### File: Scripts/Helpers/OpanDoors.oajs
- ######################################################
- */
- // OpenDoor - otevira/zavira dvere
- function OpenDoor() {
- var portaFechada = Orion.FindType('0x3EB2|0x3EB1|0x0675|0x0677|0x0679|0x067B|0x067D|0x067F|0x0681|0x0683|0x0685|0x0687|0x0689|0x068B|0x068D|0x068F|0x0691|0x0693|0x0695|0x0697|0x0699|0x069B|0x069D|0x069F|0x06A1|0x06A3|0x06A5|0x06A7|0x06A9|0x06AB|0x06AD|0x06AF|0x06B1|0x06B3|0x06B5|0x06B7|0x06B9|0x06BB|0x06BD|0x06BF|0x06C1|0x06C3|0x06C5|0x06C7|0x06C9|0x06CB|0x06CD|0x06CF|0x06D1|0x06D3|0x06D5|0x06D7|0x06D9|0x06DB|0x06DD|0x06DF|0x06E1|0x06E3|0x06E5|0x06E7|0x06E9|0x06EB|0x06ED|0x06EF|0x06F1|0x06F3|0x06F5|0x0824|0x0826|0x0828|0x082A|0x082C|0x082E|0x0830|0x0832|0x0839|0x083B|0x083D|0x083F|0x0841|0x0843|0x0845|0x0847|0x084C|0x084E|0x0850|0x0852|0x0854|0x0856|0x0858|0x085A|0x0866|0x0868|0x086A|0x086C|0x086E|0x0870|0x0872|0x0874|0x1FED|0x1FEF|0x1FF1|0x1FF3|0x1FF5|0x1FF7|0x1FF9|0x1FFB|0x00E8|0x00EA|0x00EC|0x00EE|0x00F0|0x00F2|0x00F4|0x00F6|0x0314|0x0316|0x0318|0x031A|0x031C|0x031E|0x0320|0x0322|0x0324|0x0326|0x0328|0x032A|0x032C|0x032E|0x0330|0x0332|0x0334|0x0336|0x0338|0x033A|0x033C|0x033E|0x0340|0x0342|0x0344|0x0346|0x0348|0x034A|0x034C|0x034E|0x0350|0x0352|0x0354|0x0356|0x0358|0x035A|0x035C|0x035E|0x0360|0x0362', '-1', ground, '', 2);
- var portaAberta = Orion.FindType('0x3ED5|0x3ED4|0x0676|0x0678|0x067A|0x067C|0x067E|0x0680|0x0682|0x0684|0x0686|0x0688|0x068A|0x068C|0x068E|0x0690|0x0692|0x0694|0x0696|0x0698|0x069A|0x069C|0x069E|0x06A0|0x06A2|0x06A4|0x06A6|0x06A8|0x06AA|0x06AC|0x06AE|0x06B0|0x06B2|0x06B4|0x06B6|0x06B8|0x06BA|0x06BC|0x06BE|0x06C0|0x06C2|0x06C4|0x06C6|0x06C8|0x06CA|0x06CC|0x06CE|0x06D0|0x06D2|0x06D4|0x06D6|0x06D8|0x06DA|0x06DC|0x06DE|0x06E0|0x06E2|0x06E4|0x06E6|0x06E8|0x06EA|0x06EC|0x06EE|0x06F0|0x06F2|0x06F4|0x06F6|0x0825|0x0827|0x0829|0x082A|0x082C|0x082E|0x0831|0x0833|0x083A|0x083C|0x083E|0x0840|0x0842|0x0844|0x0846|0x0848|0x084D|0x084F|0x0851|0x0853|0x0855|0x0857|0x0859|0x085B|0x0867|0x0869|0x086B|0x086D|0x086F|0x0871|0x0873|0x0875|0x1FEE|0x1FF0|0x1FF2|0x1FF4|0x1FF6|0x1FF8|0x1FFA|0x1FFC|0x00E9|0x00EB|0x00ED|0x00EF|0x00F1|0x00F3|0x00F5|0x00F7|0x0315|0x0317|0x0319|0x031B|0x031D|0x031F|0x0321|0x0323|0x0325|0x0327|0x0329|0x032B|0x032D|0x032F|0x0331|0x0333|0x0335|0x0337|0x0339|0x033B|0x033D|0x033F|0x0341|0x0343|0x0345|0x0347|0x0349|0x034B|0x034D|0x034F|0x0351|0x0353|0x0355|0x0357|0x0359|0x035B|0x035D|0x035F|0x0361|0x0363', '-1', ground, '', 3);
- var shipDoorOpen = Orion.FindType('0x3EB2|0x3EB1|0x3E8A|0x3E85', '-1', ground, '', 18);
- var shipDoorClosed = Orion.FindType('0x3E89|0x3E84', '-1', ground, '', 18);
- if (portaAberta.length > 0) {
- var porta = portaAberta;
- } else {
- var porta = portaFechada;
- }
- if (porta.length) {
- var quantity = porta.length;
- Orion.Print(quantity);
- for (i = 0; i < quantity; i++) {
- Orion.UseObject(porta[i]);
- Orion.Wait(30);
- }
- }
- if (shipDoorClosed.length > 0) {
- var porta = portaAberta;
- } else {
- var porta = shipDoorOpen;
- }
- if (porta.length) {
- var quantity = porta.length;
- Orion.Print(quantity);
- for (i = 0; i < quantity; i++) {
- Orion.UseObject(porta[i]);
- Orion.Wait(30);
- }
- }
- }
- /*
- ######################################################
- ### File: Scripts/Helpers/PathWalking.oajs
- ######################################################
- */
- /// Cesty pro autoprojiti naslapek - pro pouziti prekomentovat
- // Mahat Pavouci
- var pathPavouci = ['N', 'N', 'N', 'NW', 'NE', 'N', 'NW', 'NE', 'NE', 'N', 'NW', 'NW', 'NE', 'N', 'NE', 'N', 'NW', 'N', 'NW', 'N', 'NE', 'N', 'NE', 'N', 'NW', 'N', 'NW', 'N', 'NE', 'N', 'NE', 'N', 'NW', 'N', 'NW', 'N', 'NE', 'N', 'NE', 'N', 'NW', 'N', 'NW', 'N', 'NE', 'N', 'NE', 'N', 'NW', 'N', 'NW', 'N', 'NE', 'N', 'NE', 'N', 'NW', 'N', 'NW', 'N', 'NE', 'N', 'NE', 'N'];
- //Mahat nemrtvi
- var pathNemrtvi = ['N', 'NW', 'N', 'NE', 'N', 'N', 'NW', 'N', 'N', 'N', 'NE', 'N', 'N', 'N', 'N', 'NW', 'N', 'N', 'N', 'N', 'N', 'NE', 'N', 'N', 'N', 'N', 'NW', 'N', 'N', 'N', 'NE', 'N', 'N', 'NW', 'N'];
- //---------------------------------------------------------//
- // WalkPath - projde nastavenou cestu
- function MahatCestaNemrtvi() {
- var x = Player.X();
- var y = Player.Y();
- for (var i = 0; i < pathNemrtvi.length; i++) {
- Orion.Print('krok cislo: ' + i + ' smer: ' + pathNemrtvi[i]);
- Walk(pathNemrtvi[i]);
- while (Player.X() == x && Player.Y() == y) {
- Orion.Wait(200);
- }
- }
- Orion.Print('Konec Cesty');
- }
- function MahatCestaPavouci() {
- var x = Player.X();
- var y = Player.Y();
- for (var i = 0; i < pathPavouci.length; i++) {
- Orion.Print('krok cislo: ' + i + ' smer: ' + pathPavouci[i]);
- Walk(pathPavouci[i]);
- while (Player.X() == x && Player.Y() == y) {
- Orion.Wait(200);
- }
- }
- Orion.Print('Konec Cesty');
- }
- // Walk - pomocna fce pro chozeni
- function Walk(dir) {
- var numDir = null;
- switch (dir) {
- case 'N':
- {
- numDir = 0;
- break;
- }
- case 'NE':
- {
- numDir = 1;
- break;
- }
- case 'E':
- {
- numDir = 2;
- break;
- }
- case 'SE':
- {
- numDir = 3;
- break;
- }
- case 'S':
- {
- numDir = 4;
- break;
- }
- case 'SW':
- {
- numDir = 5;
- break;
- }
- case 'W':
- {
- numDir = 6;
- break;
- }
- case 'NW':
- {
- numDir = 7;
- break;
- }
- }
- if (numDir == null) return;
- Orion.Step(numDir);
- Orion.Wait(200);
- }
- function Follow(distance){
- var target=Orion.FindObject(lasttarget);
- if(Orion.GetGlobal('follow')=='true'){
- Orion.SetGlobal('follow','false');
- Orion.Follow(target.Serial(),false);
- Orion.Print("Follow Off");
- }
- else{
- Orion.SetGlobal('follow','true');
- Orion.Follow(target.Serial(),true);
- Orion.Print("Follow ON");
- }
- }
- /*
- ######################################################
- ### File: Scripts/Helpers/Potions.oajs
- ######################################################
- */
- // Potion - fce zajistujici, ze lze pouzit potion az po prodleve, ne driv + oznameni
- function Potion(name) {
- //Orion.Print(name);
- if (Orion.GetGlobal("potionDelay") == '') Orion.SetGlobal("potionDelay", Orion.Now());
- if (Orion.GetGlobal("potionDelay") > Orion.Now()) {
- CharPrintDelayed('self', '0x00CD', 'Jeste nemuzes Pit [' + (Orion.GetGlobal("potionDelay") - Orion.Now()) + ']');
- return;
- }
- switch (name) {
- case "heal":
- {
- if (Orion.FindType(0x0F0E, pots[0][1], backpack, 'item', true).length) {
- Orion.SetGlobal("potionDelay", Orion.Now() + pots[0][2]);
- Orion.SetGlobal("potionDuration", Orion.Now() + pots[0][3]);
- Orion.Say(".potion" + name);
- Orion.Print("pijes heal");
- }
- break;
- }
- case "cure":
- {
- if (Orion.FindType(0x0F0E, pots[1][1], backpack, 'item', true).length) {
- Orion.SetGlobal("potionDelay", Orion.Now() + pots[1][2]);
- Orion.SetGlobal("cureDuration", Orion.Now() + pots[1][3]);
- Orion.Say(".potion" + name);
- if(Orion.DisplayTimerExists(47)){
- Orion.RemoveDisplayTimer(47);
- }
- Orion.AddDisplayTimer(47, pots[1][3], 'UnderChar', 'Line|Bar', 'Cure', 0, 0, '0x00F3', 0xFF, 'orange');
- } else {
- if (Orion.FindType(0x0F0E, pots[2][1], backpack, 'item', true).length) {
- Orion.SetGlobal("potionDelay", Orion.Now() + pots[2][2]);
- Orion.SetGlobal("cureDuration", Orion.Now() + pots[2][3]);
- Orion.Say(".potion" + name);
- if(Orion.DisplayTimerExists(47)){
- Orion.RemoveDisplayTimer(47);
- }
- Orion.AddDisplayTimer(47, pots[2][3], 'UnderChar', 'Line|Bar', 'Cure', 0, 0, '0x00F3', 0xFF, 'orange');
- } else Orion.Print("Nemas " + name + " potion");
- }
- break;
- }
- case "invis":
- {
- if (Orion.FindType(0x0F0E, pots[3][1], backpack, 'item', true).length) {
- Orion.WarMode(0);
- Orion.SetGlobal("potionDelay", Orion.Now() + pots[3][2]);
- Orion.SetGlobal("potionDuration", Orion.Now() + pots[3][3]);
- Orion.Say(".potion" + name);
- } else {
- Orion.Print("Nemas " + name + " potion");
- }
- break;
- }
- case "refresh":
- {
- if (Orion.FindType(0x0F0E, pots[4][1], backpack, 'item', true).length) {
- Orion.SetGlobal("potionDelay", Orion.Now() + pots[4][2]);
- Orion.SetGlobal("potionDuration", Orion.Now() + pots[4][3]);
- Orion.Say(".potion" + name);
- } else {
- if (Orion.FindType(0x0F0E, pots[5][1], backpack, 'item', true).length) {
- Orion.SetGlobal("potionDelay", Orion.Now() + pots[5][2]);
- Orion.SetGlobal("potionDuration", Orion.Now() + pots[5][3]);
- Orion.Say(".potion" + name);
- } else Orion.Print("Nemas " + name + " potion");
- }
- break;
- }
- case "reflex":
- {
- if (Orion.FindType(0x0F0E, pots[6][1], backpack, 'item', true).length) {
- Orion.SetGlobal("potionDelay", Orion.Now() + pots[6][2]);
- Orion.SetGlobal("potionDuration", Orion.Now() + pots[6][3]);
- Orion.Say(".potion" + name);
- } else {
- Orion.Print("Nemas " + name + " potion");
- }
- break;
- }
- case "mobility":
- {
- if (Orion.FindType(0x0F0E, pots[7][1], backpack, 'item', true).length) {
- Orion.SetGlobal("potionDelay", Orion.Now() + pots[7][2]);
- Orion.SetGlobal("potionDuration", Orion.Now() + pots[7][3]);
- Orion.Say(".potion" + name);
- } else {
- Orion.Print("Nemas " + name + " potion");
- }
- break;
- }
- case "nightsight":
- {
- if (Orion.FindType(0x0F0E, pots[8][1], backpack, 'item', true).length) {
- Orion.SetGlobal("potionDelay", Orion.Now() + pots[8][2]);
- Orion.SetGlobal("potionDuration", Orion.Now() + pots[8][3]);
- Orion.Say(".potion" + name);
- // Orion.SetLight(1, 0);
- // Orion.SetLight(0, 0);
- } else {
- Orion.Print("Nemas " + name + " potion");
- }
- break;
- }
- case "agility":
- {
- if (Orion.FindType(0x0F0E, pots[9][1], backpack, 'item', true).length) {
- Orion.SetGlobal("potionDelay", Orion.Now() + pots[9][2]);
- Orion.SetGlobal("potionDuration", Orion.Now() + pots[9][3]);
- Orion.Say(".potion" + name);
- } else {
- if (Orion.FindType(0x0F0E, pots[10][1], backpack, 'item', true).length) {
- Orion.SetGlobal("potionDelay", Orion.Now() + pots[10][2]);
- Orion.SetGlobal("potionDuration", Orion.Now() + pots[10][3]);
- Orion.Say(".potion" + name);
- } else Orion.Print("Nemas " + name + " potion");
- }
- break;
- }
- case "strength":
- {
- if (Orion.FindType(0x0F0E, pots[11][1], backpack, 'item', true).length) {
- Orion.SetGlobal("potionDelay", Orion.Now() + pots[11][2]);
- Orion.SetGlobal("potionDuration", Orion.Now() + pots[11][3]);
- Orion.Say(".potion" + name);
- } else {
- if (Orion.FindType(0x0F0E, pots[12][1], backpack, 'item', true).length) {
- Orion.SetGlobal("potionDelay", Orion.Now() + pots[12][2]);
- Orion.SetGlobal("potionDuration", Orion.Now() + pots[12][3]);
- Orion.Say(".potion" + name);
- } else Orion.Print("Nemas " + name + " potion");
- }
- break;
- }
- case "clever":
- {
- if (Orion.FindType(0x0F0E, pots[13][1], backpack, 'item', true).length) {
- Orion.SetGlobal("potionDelay", Orion.Now() + pots[13][2]);
- Orion.SetGlobal("potionDuration", Orion.Now() + pots[13][3]);
- Orion.Say(".potion" + name);
- } else {
- if (Orion.FindType(0x0F0E, pots[14][1], backpack, 'item', true).length) {
- Orion.SetGlobal("potionDelay", Orion.Now() + pots[14][2]);
- Orion.SetGlobal("potionDuration", Orion.Now() + pots[14][3]);
- Orion.Say(".potion" + name);
- } else Orion.Print("Nemas " + name + " potion");
- }
- break;
- }
- case "stoneskin":
- {
- if (Orion.FindType(0x0F0E, pots[15][1], backpack, 'item', true).length) {
- Orion.SetGlobal("potionDelay", Orion.Now() + pots[15][2]);
- Orion.SetGlobal("potionDuration", Orion.Now() + pots[15][3]);
- Orion.Say(".potion" + name);
- } else {
- Orion.Print("Nemas " + name + " potion");
- }
- break;
- }
- case "reactive":
- {
- if (Orion.FindType(0x0F0E, pots[16][1], backpack, 'item', true).length) {
- Orion.SetGlobal("potionDelay", Orion.Now() + pots[16][2]);
- Orion.SetGlobal("potionDuration", Orion.Now() + pots[16][3]);
- Orion.Say(".potion" + name);
- } else {
- Orion.Print("Nemas " + name + " potion");
- }
- break;
- }
- }
- if (Orion.GetGlobal("potionDelay") >= Orion.Now()) {
- Orion.Print("Pouzit potion: " + name);
- }
- if(!Orion.DisplayTimerExists(25)){
- var ti=parseInt(Orion.GetGlobal("potionDelay"))-Orion.Now();
- Orion.AddDisplayTimer(25,ti,'Top', 'Circle|Bar', 'Potion Delay', 0, 0, '0x0029', 0xFF, 'green');
- }
- Bandage();
- }
- function ComparePots(a, b) {
- var aa = Orion.FindObject(a);
- var bb = Orion.FindObject(a);
- if (aa.Graphic() == '0x0F0E')
- return -1;
- if (bb.Graphic() == '0x0F0E')
- return 1;
- return 0;
- }
- // MoveAllPots - ve zvolenem kontejneru najde vsechny podkontejnery a ve vsech hleda potion, ktere nasledne presune do 1 zvoleneho kontejneru
- function MoveAllPots() {
- Orion.Print("Zamer kde hledat");
- Orion.AddObject("one");
- var target = Orion.FindObject("one");
- while (Orion.HaveTarget()) Orion.Wait(100);
- if (target == null) {
- Orion.Print("Zamer kde hledat");
- target = Orion.FindObject("one");
- while (Orion.HaveTarget()) Orion.Wait(100);
- }
- Orion.Print("Zamer kam davat");
- Orion.AddObject("vysyp");
- var vys = Orion.FindObject("vysyp");
- while (Orion.HaveTarget()) Orion.Wait(100);
- if (vys == null) {
- Orion.Print("Zamer kam davat");
- vys = Orion.FindObject("vysyp");
- while (Orion.HaveTarget()) Orion.Wait(100);
- }
- OpenAllContainers(target.Serial());
- Orion.Wait(200);
- var fnd = Orion.FindType('0x0F0E', '0xFFFF', target.Serial());
- for (var i = 0; i < fnd.length; i++) {
- Orion.MoveItem(fnd[i], 0, vys.Serial());
- Orion.Wait(100);
- }
- Orion.RemoveObject("one");
- Orion.RemoveObject("vysyp");
- }
- // PotionWatch - fce hlida, kdy postava muze znovu pouzit potion + upozorni na vyprchani Cure efektu
- function PotionWatch() {
- var annouced = false;
- var CureAnnouced = false;
- while (true) {
- Orion.Wait(500);
- if (Orion.GetGlobal("cureDuration") < Orion.Now()) {
- if (!CureAnnouced) {
- CureAnnouced = true;
- CharPrintDelayed('self', '0x002A', ' !! CURE vyprchalo!!');
- Orion.Print(' !! CURE vyprchalo!!');
- }
- } else CureAnnouced = false;
- if (Orion.GetGlobal("potionDelay") < Orion.Now()) {
- if (!annouced) {
- annouced = true;
- CharPrintDelayed('self', '0x0044', ' > MUZES PIT <');
- Orion.Print(' > MUZES PIT <');
- }
- } else {
- }
- }
- }
- /*
- ######################################################
- ### File: Scripts/Helpers/RuneBook.oajs
- ######################################################
- */
- function RuneBook(type, runeNum)
- {
- TextWindow.Clear();
- Orion.Print('Zamer Truhlu s Runama');
- var runesMem={};
- Orion.AddObject("runes");
- while (Orion.HaveTarget()) Orion.Wait(100);
- var runesBox = Orion.FindObject('runes');
- OpenAllContainers(runesBox.Serial());
- Orion.Wait(200);
- var fnd = Orion.FindType('0x1F14|0x1F15|0x1F16|0x1F17', any, runesBox.Serial());
- for (var i = 0; i < fnd.length; i++) {
- var rune=Orion.FindObject(fnd[i]);
- Orion.RequestName(rune.Serial(), 100);
- TextWindow.Print(i+': '+rune.Name());
- if (!runesMem[rune.Name()])
- {
- runesMem[rune.Name()] = rune.Serial();
- runesMem[i] = rune.Serial();
- }
- }
- TextWindow.Open();
- Orion.Print('Napis prikaz pro pokracovani! Napriklad recall 0; recall Rhun');
- var tmp=Orion.WaitJournal('recall |gate ',Orion.Now(), Orion.Now()+30000, 'my');
- var cmd = tmp.Text().split(' ');
- if(cmd[0] =='recall'){
- Orion.Cast('Recall', runesMem[cmd[1]]);
- return;
- }
- if(cmd[0] =='gate'){
- Orion.Cast('Gate Travel', runesMem[cmd[1]]);
- return;
- }
- }
- /*
- ######################################################
- ### File: Scripts/Helpers/ScriptFunctions.oajs
- ######################################################
- */
- function Debug(source, msg) {
- if (debug) {
- var time = new Date();
- TextWindow.Print(source+" [" + time.getHours() + ":" + time.getMinutes() + "] : " + msg);
- TextWindow.Open();
- }
- }
- function Map(x, in_min, in_max, out_min, out_max) {
- return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
- };
- function GetProdleva(_private) {
- Orion.Say(".explevel");
- Orion.Wait(300);
- var gum = Orion.GetLastGump();
- var prod = parseInt(gum.Text(10));
- gum.Select(Orion.CreateGumpHook(0));
- return prod;
- }
- function GetNightSightDrink(__private){
- var rtn = NightSightDrink;
- var settings = CharacterSettings[Player.Name()];
- if(!settings){
- return rtn;
- }
- return settings.NightSightDrink;
- }
- function GetCriticalHits(__private){
- var rtn = CriticalHits;
- var settings = CharacterSettings[Player.Name()];
- if(!settings){
- return rtn;
- }
- var subSettings = settings.CriticalHits;
- if(!subSettings){
- return rtn;
- }
- return subSettings;
- }
- function GetAutoDrinkHeal(__private){
- var rtn = AutoDrinkHeal;
- var settings = CharacterSettings[Player.Name()];
- if(!settings){
- return rtn;
- }
- return settings.AutoDrinkHeal;
- }
- function GetMinVoodooObetHP(__private){
- var rtn = MinVoodooObetHP;
- var settings = CharacterSettings[Player.Name()];
- if(!settings){
- return rtn;
- }
- var subSettings = settings.MinVoodooObetHP;
- if(!subSettings){
- return rtn;
- }
- return subSettings;
- }
- function GetGPAmount(__private){
- var rtn = GPAmount;
- var settings = CharacterSettings[Player.Name()];
- if(!settings){
- return rtn;
- }
- var subSettings = settings.GPAmount;
- if(!subSettings){
- return rtn;
- }
- return subSettings;
- }
- function GetCheckLineOfSight(__private){
- var rtn = CheckLineOfSight;
- var settings = CharacterSettings[Player.Name()];
- if(!settings){
- return rtn;
- }
- return settings.CheckLineOfSight;
- }
- function GetAutoArrow(__private){
- var rtn = AutoArrow;
- var settings = CharacterSettings[Player.Name()];
- if(!settings){
- return rtn;
- }
- return settings.AutoArrow;;
- }
- function GetAutoUnParalyzeSpell(__private){
- var rtn = AutoUnParalyzeSpell;
- var settings = CharacterSettings[Player.Name()];
- if(!settings){
- return rtn;
- }
- var subSettings = settings.AutoUnParalyzeSpell;
- if(!subSettings){
- return rtn;
- }
- return subSettings;
- }
- function GetShaman(__private){
- var rtn = Shaman;
- var settings = CharacterSettings[Player.Name()];
- if(!settings){
- return rtn;
- }
- return settings.Shaman;
- }
- function GetMinimumHP(__private){
- var rtn = MinimumHP;
- var settings = CharacterSettings[Player.Name()];
- if(!settings){
- return rtn;
- }
- var subSettings = settings.MinimumHP;
- if(!subSettings){
- return rtn;
- }
- return subSettings;
- }
- function GetMinTargetHP(__private){
- var rtn = MinTargetHP;
- var settings = CharacterSettings[Player.Name()];
- if(!settings){
- return rtn;
- }
- var subSettings = settings.MinTargetHP;
- if(!subSettings){
- return rtn;
- }
- return subSettings;
- }
- function GetAutoObet(__private){
- var rtn = AutoObet;
- var settings = CharacterSettings[Player.Name()];
- if(!settings){
- return rtn;
- }
- return settings.AutoObet
- }
- function GetObetManaGain(__private){
- var rtn = ObetManaGain;
- var settings = CharacterSettings[Player.Name()];
- if(!settings){
- return rtn;
- }
- var subSettings = settings.ObetManaGain;
- if(!subSettings){
- return rtn;
- }
- return subSettings;
- }
- function GetCheckLineOfSight(__private){
- var rtn = CheckLineOfSight;
- var settings = CharacterSettings[Player.Name()];
- if(!settings){
- return rtn;
- }
- return settings.CheckLineOfSight;
- }
- // CustomCountDown - pomocna fce pro odpocet s rychlym "zmizenim" textu
- function CustomCountDown(serial, partDelay, parts, text, color) {
- for (i = parts; i > 0; i--) {
- Orion.Wait(partDelay);
- CharPrintDelayed(serial, color, text + " " + i);
- }
- }
- // GetActualXEp - pomocna funkce, vytahne z explevel gumpu informace o expech
- function GetActualExp(__private) {
- Orion.Say(".explevel");
- Orion.Wait(200);
- var gum = Orion.GetLastGump();
- var exp = gum.Text(2);
- gum.Select(Orion.CreateGumpHook(0));
- var expS = exp.split('/');
- var rtn = { Min: expS[0], Max: expS[1] };
- return rtn;
- }
- /*
- ######################################################
- ### File: Scripts/Helpers/SwitchArms.oajs
- ######################################################
- */
- // SwitchArm - fce pro prehazovani nastavenych zbrani v zalozce Agents/Dress pod oznacenim 1,2,3,4
- function SwitchArm2() {
- SwitchArm(2);
- }
- function SwitchArm3() {
- SwitchArm(3);
- }
- function SwitchArm4() {
- SwitchArm(4);
- }
- // SwitchArm - fce pro prehazovani nastavenych zbrani v zalozce Agents/Dress pod oznacenim 1,2,3,4
- function SwitchArm(max) {
- for (var i = 0; i <= max; i++) {
- if (Orion.GetGlobal("weap") == i) {
- if ((i + 1) > max) {
- Orion.Arm(1);
- Orion.SetGlobal("weap", 1);
- } else {
- Orion.Arm(i + 1);
- Orion.SetGlobal("weap", i + 1);
- }
- var prodleva = GetProdleva();
- Orion.SetGlobal("prodleva", prodleva);
- Orion.Print("Equipnuta zbran : " + Orion.GetGlobal("weap") + " prodleva uderu: " + prodleva);
- var lhand = Orion.ObjAtLayer('LeftHand');
- var rhand = Orion.ObjAtLayer('RightHand');
- if(lhand!=null){
- Orion.SetGlobal('lhand',lhand.Serial());
- }
- if(rhand!=null){
- Orion.SetGlobal('rhand',rhand.Serial());
- }
- return;
- }
- }
- }
- // EquipWeap - pomocna fce nahazujici aktualni zbran set (1,2,3,4...) do ruky
- function EquipWeap(_private) {
- Orion.SetGlobal('Equipping', true);
- Orion.Wait(100);
- var lhand = Orion.ObjAtLayer('LeftHand');
- var rhand = Orion.ObjAtLayer('RightHand');
- if(lhand!=null){
- if(lhand.Serial()!=Orion.GetGlobal('lhand'))
- {
- Orion.Arm(Orion.GetGlobal("weap"));
- }
- }
- if(rhand==null){
- if(rhand==null ||rhand.Serial()!=Orion.GetGlobal('rhand'))
- {
- Orion.Arm(Orion.GetGlobal("weap"));
- }
- }
- if (IsShieldEquiped()) {
- Orion.Arm(Orion.GetGlobal("weap"));
- }
- Orion.SetGlobal('Equipping', false);
- }
- // IsShieldEquiped - pomocna fce pro zjisteni, zda je stit v ruce
- function IsShieldEquiped(__private) {
- var shields = ['0x1B76', '0x1B77', '0x1B7B'];
- var lhand = Orion.ObjAtLayer('LeftHand');
- if (!lhand) return false;
- for (var i = 0; i < shields.length; i++) {
- if (lhand.Graphic() == shields[i]) {
- return true;
- }
- }
- return false;
- }
- /*
- ######################################################
- ### File: Scripts/Helpers/Targeting.oajs
- ######################################################
- */
- // SwitchTarget - prepinani pro fci TargetNext mezi Mordor,Gondor a PVM rezimem
- function SwitchTarget() {
- switch (Orion.GetGlobal("trgMode")) {
- case '0': // All -> Monsters
- Orion.SetGlobal("trgMode", 1);
- Orion.Print('0x0044',"Target Monsters");
- return;
- case '1': // Monsters -> Red
- Orion.SetGlobal("trgMode", 2);
- Orion.Print('0x0022',"Target Red Humans");
- return;
- case '2': // Red Humanoids => blue
- Orion.SetGlobal("trgMode", 3);
- Orion.Print('0x0005',"Target Blue Humans");
- return;
- case '3': // Blue Humanoids => All
- Orion.SetGlobal("trgMode", 0);
- Orion.Print('0x038A',"Target All");
- return;
- default:
- Orion.SetGlobal("trgMode", 0);
- Orion.Print('0x038A',"Target All");
- return;
- }
- }
- // TargetNext - Najde a zatargetuje cil, podle nastaveni G,M,PVM
- function TargetNext() {
- var serial = FindNearestTarget();
- if (!serial.length) return;
- CharPrintDelayed(serial, '30', Orion.RequestName(serial, 100) + ' - TARGET',15);
- Orion.ClientLastTarget(serial);
- Orion.TargetObject(serial);
- var trg = Orion.FindObject(serial);
- Orion.RequestName(lasttarget, 200);
- var color = 0x0DA;
- if (trg.Notoriety() == 1) {
- color = 0x05A;
- }
- if (trg.Notoriety() == 6) {
- color = 0x08A;
- }
- Orion.Print(color, trg.Name() + " [" + trg.Hits() + "% HP] dist: " + Orion.GetDistance(lasttarget));
- Orion.Ignore(serial);
- }
- // TargetClosestRed - targetne nejblizsi charakter s cervenou karmou
- function TargetClosestRed() {
- Orion.IgnoreReset();
- var humans = Orion.FindType(any, any, ground, 'near|mobile|ignoreself|ignorefriends', '18', 'murderer');
- if (humans.length) {
- CharPrintDelayed(humans[0], '30', Orion.RequestName(humans[0], 100) + ' - TARGET');
- Orion.ClientLastTarget(humans[0]);
- Orion.TargetObject(humans[0]);
- Orion.Ignore(humans[0]);
- }
- }
- // SetTarg - fce pro manualni oznaceni aktualniho targetu + vytahnuti zalozky na nastavene souradnice
- function SetTarg() {
- Orion.Print("zamer novy target");
- Orion.AddObject("trg");
- while (Orion.HaveTarget()) Orion.Wait(100);
- var obj = Orion.FindObject("trg");
- Orion.RemoveObject("trg");
- if (obj == null) return;
- Orion.ClientLastTarget(obj.Serial());
- Orion.TargetObject(obj.Serial());
- }
- // FindNearestTarget - pomocna fce pro targetovani, ignoruje sebe a postavy s Friends Listu
- function FindNearestTarget(__private) {
- var targets = Orion.FindType(any, any, ground, 'near|mobile|ignoreself|ignorefriends', '18');
- for (i = 0; i < targets.length; i++) {
- var tmp = Orion.FindObject(targets[i]).CanChangeName();
- if (tmp) {
- Orion.Ignore(targets[i]);
- }
- }
- switch (Orion.GetGlobal("trgMode")) {
- case '0': // All
- targets = Orion.FindType(any, any, ground, 'mobile|ignoreself|ignorefriends', '18');
- break;
- case '1': // Monsters
- targets = Orion.FindType('!0x0190|!0x0191', any, ground, 'mobile|ignoreself|ignorefriends', '18', 'murderer');
- break;
- case '2': // Red Humanoids
- targets = Orion.FindType('0x0190|0x0191', any, ground, 'human|ignoreself|ignorefriends', '18', 'murderer');
- break;
- case '3': // Blue Humanoids
- targets = Orion.FindType('0x0190|0x0191', any, ground, 'human|ignoreself|ignorefriends', '18', 'innocent');
- break;
- }
- //Orion.Print(targets.length);
- if (targets.length < 1) {
- Orion.IgnoreReset();
- return '';
- }
- if (targets.length < 2) {
- Orion.IgnoreReset();
- }
- //Orion.Ignore(targets[0]);
- return targets[0];
- }
- // KillALl - fce pouzije prikaz all kill na vsechny cervene v okoli s vyjimkou summonu a zvere, kterym porouci
- function KillAll() {
- var list = Orion.FindType(any, any, ground, 'mobile|ignoreself|ignorefriends', '17', 'murderer');
- for (var i = 0; i < list.length; i++) {
- var targ = Orion.FindObject(list[i]);
- if (targ.CanChangeName()) {
- continue;
- }
- Orion.Say("all kill");
- Orion.WaitTargetObject(list[i]);
- Orion.Wait(250);
- }
- }
- function AttackLast() {
- Orion.Attack(lasttarget);
- var trg = Orion.FindObject(lasttarget);
- Orion.RequestName(lasttarget, 200);
- // blue 0x05A
- // red 0x08A
- // purple 0x0DA
- var color = 0x0DA;
- if (trg.Notoriety() == 1) {
- color = 0x05A;
- }
- if (trg.Notoriety() == 6) {
- color = 0x08A;
- }
- Orion.Print(color, trg.Name() + " [" + trg.Hits() + "% HP] dist: " + Orion.GetDistance(lasttarget));
- Orion.SetGlobal('attack',true);
- if (Orion.GetGlobal("probo") == 'true'){
- Orion.Print("Nemuzes utocit kdyz chces bodat");
- }
- }
- /*
- ######################################################
- ### File: Scripts/Helpers/TidyBackpack.oajs
- ######################################################
- */
- // { Graphic: 0x0E79, MinX: 44, MinY: 65, MaxX: 142, MaxY: 132 }, //
- // Uklid - fce usporadajici itemy v conteiner, primarne potiony
- function Uklid() { // rozmery chest bednicky
- var MinX = 0;
- var MinY = 0;
- var MaxX = 0;
- Orion.AddObject("tt");
- while (Orion.HaveTarget()) Orion.Wait(100);
- var target = Orion.FindObject('tt');
- for (var i = 0; i < containerTypes.length; i++) {
- if (containerTypes[i].Graphic == target.Graphic()) {
- MinX = containerTypes[i].MinX;
- MinY = containerTypes[i].MinY;
- MaxX = containerTypes[i].MaxX;
- MaxY = containerTypes[i].MaxY;
- break;
- }
- }
- var x = MinX;
- var y = MinY;
- var items = Orion.FindType('0xFFFF', '0xFFFF', target.Serial());
- items.sort(ComparePots);
- Orion.Print(items.length);
- for (var i = 0; i < items.length; i++) {
- Orion.Print(x + ": " + y);
- Orion.MoveItem(items[i], 0, target.Serial(), x, y);
- Orion.Wait(100);
- x += 13;
- if (x >= MaxX) {
- x = MinX;
- y += 20;
- }
- }
- Orion.RemoveObject("tt");
- }
- /*
- ######################################################
- ### File: Scripts/Helpers/TimedCharPrint.oajs
- ######################################################
- */
- // CharPrintDelayed - fce pro rychle mizijici text nad postavou
- function CharPrintDelayed(serial, color, text, speechDelay) {
- var sDelay = 15;
- if (speechDelay) {
- sDelay = speechDelay;
- }
- var oldUse = Orion.OptionScaleSpeech();
- var oldDelay = Orion.OptionScaleSpeechDelay();
- Orion.OptionScaleSpeech(true);
- Orion.OptionScaleSpeechDelay(sDelay);
- Orion.CharPrint(serial, color, text);
- Orion.Wait(100);
- Orion.OptionScaleSpeech(oldUse);
- Orion.OptionScaleSpeechDelay(55);
- }
- /*
- ######################################################
- ### File: Scripts/Helpers/Vetesnik.oajs
- ######################################################
- */
- // ID - fce pro identifikaci vsech predmetu v zamerenem batohu vyuzivajici gump po osloveni vetesnika
- function ID() {
- Orion.Print('Zamer vetesnika');
- Orion.AddObject("vetech");
- while (Orion.HaveTarget()) {
- Orion.Wait(100);
- }
- var vete = Orion.FindObject('vetech');
- Orion.RemoveObject("vetech");
- Orion.Print('Zamer bagl s itemama k ID');
- Orion.AddObject("vetech");
- while (Orion.HaveTarget()) {
- Orion.Wait(100);
- }
- var bagl = Orion.FindObject('vetech');
- Orion.RemoveObject("vetech");
- var items = Orion.FindType(any, any, bagl.Serial());
- for (var i = 0; i < items.length; i++) {
- Orion.UseObject(vete.Serial());
- Orion.Wait(200);
- var gum = Orion.GetLastGump();
- gum.Select(Orion.CreateGumpHook(1));
- Orion.WaitTargetObject(items[i]);
- Orion.Wait(200);
- }
- }
- // InfoItems - Projde vsechny itemy v zamerene truhle a vypise jejich vlastnosti
- function InfoItems() {
- Orion.Print('Zamer item truhlu');
- Orion.AddObject("vetech");
- while (Orion.HaveTarget()) {
- Orion.Wait(100);
- }
- var target = Orion.FindObject('vetech');
- Orion.RemoveObject("vetech");
- TextWindow.Clear();
- TextWindow.Open();
- var items = Orion.FindType(any, any, target.Serial());
- for (var i = 0; i < items.length; i++) {
- InfoItem(items[i]);
- }
- }
- function InfoItem(Serial) {
- var staffTypes = ['0x13F9', '0x13F8', '0x0DF0', '0x0DF1']; //GN,GN,BS,BS
- var target = Orion.FindObject(Serial);
- for (var a = 0; a < containerTypes.length; a++) {
- if (target.Graphic() == containerTypes[a].Graphic) {
- Orion.Print("Kontejner, preskakuju");
- return;
- }
- }
- Orion.ClearJournal();
- Orion.Click(target.Serial());
- Orion.Wait(300);
- var txt = "";
- var txt1 = "";
- var txt2 = "";
- for (var i = 0; i < Orion.JournalCount(); i++) {
- var ln = Orion.JournalLine(i);
- if (ln.Serial() == target.Serial()) {
- var staff = false;
- txt = ln.Text();
- for (var a = 0; a < staffTypes.length; a++) {
- if (target.Graphic() == staffTypes[a]) {
- staff = true;
- }
- }
- try {
- if (!staff) {
- txt1 = Orion.JournalLine(i + 1).Text();
- txt2 = Orion.JournalLine(i + 2).Text();
- } else {
- txt1 = Orion.JournalLine(i + 3).Text();
- txt2 = Orion.JournalLine(i + 4).Text();
- }
- } catch (err) {}
- Orion.ClearJournal();
- }
- }
- TextWindow.Print(txt + "|" + txt1 + "|" + txt2);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement