What's new
  • Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • Visit Resources
  • Visit Downloads
  • Visit Portal

[Plugin] Artemis - The Profile Helper

I havent tried this yet but if this is like the killwait then I'm assuming that it'll attack only if under 70% life. The problem is I still die even when I used the killwait plugin. I think what has to happen is if the cellar isn't there it has to kill all enemies in a certain radius and then use a town portal to get out. Is it possible to get something like this?

I fixed this for my wiz mashing up two scripts.. hope it helps some1 else

Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Threading;
using System.Windows;
using System.Windows.Forms;
using System.Xml;
using System.Xml.Linq;
using System.Xml.XPath;
using Zeta;
using Zeta.Common;
using Zeta.CommonBot;
using Zeta.Common.Plugins;
using Zeta.Internals;
using Zeta.Internals.Actors;
using Zeta.Internals.Service;

//Created by: w3eZle
//mashed artemis with sarkoth kill wait (should defend himself properly outside cellar)
//Credit to: eax (http://www.thebuddyforum.com/members/144149-eax.html) No1KnowsY (http://www.thebuddyforum.com/members/11607-no1knowsy.html)
//Based script on these guys work
//Created Date: 12June2012

namespace Sarkoth
{
    public class Sarkoth : IPlugin
    {
        private bool IsRestarting { get; set; }
        public Version Version { get { return new Version(0, 1); } }
        public string Author { get { return "Phelon"; } }
        public string Description { get { return "Good for Short Profiles."; } }
        public string Name { get { return "Artemis - The Profile Helper" + Version; } }

        //hard coding for now...
        private float originalKillRadius = 40; //store original kill radius
        private float reducedKillRadius = 15; //reduced radius

        private float originalLootRadius = 40; //store original kill radius
        private float reducedLootRadius = 15; //reduced radius
        public bool hasDied { get; set; }
        public int diedTickCount { get; set; }

        public int lastSSTick { get; set; }
        public Window DisplayWindow
        {
            get
            {
                return null;
            }
        }

        public void OnShutdown()
        {
        }

        public void OnEnabled()
        {
            Log("Enabled.");
        }

        public void OnDisabled()
        {
            Log("Disabled.");
        }

        public bool Equals(IPlugin other)
        {
            return (other.Name == Name) && (other.Version == Version);
        }

        private void Log(string message)
        {
            Logging.Write(string.Format("[{0}] {1}", Name, message));
        }


        public void OnInitialize()
        {
 IsRestarting = false;
            lastSSTick = 0;
        }

        public void OnPulse()
        {
            if (hasDied)
            {
                if (System.Environment.TickCount - diedTickCount > 20000)
                {
                    Log("20seconds has passed since you died, turning of the attack");
                    hasDied = false;
                }
            }
            
            // if we're not in game and not in the process of restarting, do nothing
            if (!ZetaDia.IsInGame || !ZetaDia.Me.IsValid || IsRestarting)
            {
                return;
            }

            //Turns on the attack for 20s after you get killed to prevent graveyard ganking
            if (ZetaDia.Actors.Me.HitpointsCurrentPct == 0.00)
            {
                Log("Wooooa, seems like i just died, lets turn on the attack for 20s");
                hasDied = true;
                ProfileManager.CurrentProfile.KillMonsters = true;
                diedTickCount = System.Environment.TickCount;
            }

            //Turning on the attack if you get attacked outside the cellar w3eZle's method
       	    if (ZetaDia.Actors.Me.HitpointsCurrentPct < 0.80 && ProfileManager.CurrentProfile.KillMonsters == false)
            {
                Log("Turning on KillMonsters -Health to low");
                ProfileManager.CurrentProfile.KillMonsters = true;
                return;
            }
            

            //Inside of Dank Cellar, Enable Kill Monsters
            if (ProfileManager.CurrentProfile.KillMonsters == false && ZetaDia.CurrentWorldDynamicId == 1999568897)
            {
                Zeta.CommonBot.Settings.CharacterSettings.Instance.KillRadius = originalKillRadius;
                Zeta.CommonBot.Settings.CharacterSettings.Instance.LootRadius = originalLootRadius;
                ProfileManager.CurrentProfile.KillMonsters = true;
                ProfileManager.CurrentProfile.PickupLoot = true;
                Log("Enabling KillMonsters");
            }

            if (ZetaDia.CurrentWorldDynamicId == 1999503360)
            {
                //Cellar Entrance x="2065.197" y="2481.297" z="27.36784"
                //Location where stop x="2016.163" y="2573.744" z="27.1"
                //Zone in x="1991.747" y="2653.501" z="39.43713"
                var units = ZetaDia.Actors.GetActorsOfType<DiaUnit>(true, false).Where(x => GetDistanceFromMe(x.Position.X, x.Position.Y) <= 20).FirstOrDefault();
                var cellar = ZetaDia.Actors.GetActorsOfType<DiaObject>(true, false).Where(unit => unit.Name.Contains("CellarDoor_Open")).FirstOrDefault();

                if (units != null && units.Distance < 18 && cellar != null
                    && GetDistance(2056.504f, 2540.974f, ZetaDia.Me.Position.X, ZetaDia.Me.Position.Y) < 15f && ProfileManager.CurrentProfile.KillMonsters == false)
                {
                    Zeta.CommonBot.Settings.CharacterSettings.Instance.KillRadius = originalKillRadius;
                    Zeta.CommonBot.Settings.CharacterSettings.Instance.LootRadius = originalLootRadius;
                    ProfileManager.CurrentProfile.KillMonsters = true;
                    ProfileManager.CurrentProfile.PickupLoot = true;

                }
                else
                {
                    Zeta.CommonBot.Settings.CharacterSettings.Instance.KillRadius = reducedKillRadius;
                    Zeta.CommonBot.Settings.CharacterSettings.Instance.LootRadius = reducedLootRadius;
                    ProfileManager.CurrentProfile.KillMonsters = false;
                    ProfileManager.CurrentProfile.PickupLoot = false;
                }
            }
            if (GetDistance(1991.747f, 2653.501f, ZetaDia.Me.Position.X, ZetaDia.Me.Position.Y) < 10)
            {
                PortToEntrance();
            }
        }
        public static void PortToEntrance()
        {
            TeleportTo(1995f, 2603f, ZetaDia.Me.Position.Z);
            Thread.Sleep(450);
            TeleportTo(2025f, 2563f, ZetaDia.Me.Position.Z);
            Thread.Sleep(450);
            TeleportTo(2057f, 2528f, ZetaDia.Me.Position.Z);
            Thread.Sleep(450);
            TeleportTo(2056.504f, 2540.974f, ZetaDia.Me.Position.Z);
            //TeleportTo(2081f, 2487f, ZetaDia.Me.Position.Z);
        }

        private static void TeleportTo(float x, float y, float z)
        {
            var v = new Vector3(x, y, z);
            if (ZetaDia.Me.ActorClass == ActorClass.Wizard)
            {
                ZetaDia.Me.UsePower(SNOPower.Wizard_Teleport, v, ZetaDia.Me.WorldDynamicId, 2, -1);
            }
            if (ZetaDia.Me.ActorClass == ActorClass.DemonHunter)
            {
                ZetaDia.Me.UsePower(SNOPower.DemonHunter_Vault, v, ZetaDia.Me.WorldDynamicId, 2, -1);
            }
        }

        public static float GetDistanceFromMe(float x, float y)
        {
            return (float)Math.Sqrt((ZetaDia.Me.Position.X - x) * (ZetaDia.Me.Position.X - x) + (ZetaDia.Me.Position.Y - y) * (ZetaDia.Me.Position.Y - y));
        }

        public static float GetDistance(float x, float y, float x2, float y2)
        {
            return (float)Math.Sqrt((x - x2) * (x - x2) + (y - y2) * (y - y2));
        }
    }
}
 
I havent tried this yet but if this is like the killwait then I'm assuming that it'll attack only if under 70% life. The problem is I still die even when I used the killwait plugin. I think what has to happen is if the cellar isn't there it has to kill all enemies in a certain radius and then use a town portal to get out. Is it possible to get something like this?
Try to use diamond skin if below 90, so you kill the pack when it attacks you. If you have enough dps and can survive at least 2-3 hits should work.
 
Hmmm it's not working and it wont actually attack back at all.

It keeps repeating this:

[18:41:02.707 N] [Artemis - The Profile Helper0.1] Wooooa, seems like i just died, lets turn on the attack for 20s
[18:41:02.711 D] Navigator.Clear
[18:41:02.824 N] [Artemis - The Profile Helper0.1] Wooooa, seems like i just died, lets turn on the attack for 20s

Actually I dont think turning on diamond skin will work because it'll just absorb the damage and won't activate it to attack back. I still keep dying when I'm trying to use the town portal. I think we need to kill the monsters around a radius.
 
Last edited:
hello guys how did you set your skills? like 1,2,34, mouse 1&2? & passives wizard btw

and what is your Combat Setting is it generic or Belphegor AIO? any plugin used?

I cannot make it work..

Thanks
 
Hmmm it's not working and it wont actually attack back at all.

It keeps repeating this:

[18:41:02.707 N] [Artemis - The Profile Helper0.1] Wooooa, seems like i just died, lets turn on the attack for 20s
[18:41:02.711 D] Navigator.Clear
[18:41:02.824 N] [Artemis - The Profile Helper0.1] Wooooa, seems like i just died, lets turn on the attack for 20s

Actually I dont think turning on diamond skin will work because it'll just absorb the damage and won't activate it to attack back. I still keep dying when I'm trying to use the town portal. I think we need to kill the monsters around a radius.
I?m fixing it now for mine, it?s working and I?ll post when stable.
 
For my fellow Wizards... if you do a slight modification to the Sarkoth 1.1 profile you can have 6 second fail runs and ~20-30s good runs... I will just post mine... basically you change the "check for cellar" location to right where you land when you teleport. (Assuming you do not alter the coordinates in the plugin) Thank you for the wonderful plugin op!

<Profile>
<Name>Sarkoth farm profile by Nesox</Name>
<GameParams quest="72095" step="51" act="A1" difficulty="Inferno" resumeFromSave="True" isPrivate="True" numGames="-1" />
<Order>
<WriteReport />
<MoveTo questId="1" x="2032.328" y="2560.219" z="27.1" name="Dank cellar portal, Scout spot" />
<If condition="ActorExistsAt(176007, 2059.629, 2478.667, 27.02374, 15)">
<UseObject questId="1" x="2058.653" y="2476.354" z="26.32902" actorId="176007" isPortal="True" destinationWorldId="106746" />
<MoveTo questId="1" x="117.8131" y="103.533" z="0.1000004" />
</If>
<UseTownPortal questId="1" />
<LeaveGame reason="Run is done" />
</Order>
<KillMonsters>True</KillMonsters>
<PickupLoot>True</PickupLoot>
</Profile>
 
Last edited:
For my fellow Wizards... if you do a slight modification to the Sarkoth 1.1 profile you can have 6 second fail runs and ~20-30s good runs... I will just post mine... basically you change the "check for cellar" location to right where you land when you teleport. (Assuming you do not alter the coordinates in the plugin) Thank you for the wonderful plugin op!
Great, just would put another move in the end to guarantee a small walk to pickup gold ;)
ps: I have been doing a similar profile with success for some hours.. the good 350-550k range
 
Last edited:
Does anyone know why it's making my wizard stand right in front of Sarkoth? I can do the runs, but I always live with 6% which worries me. My kill radius is 40 and I've tried higher/lower, nothing seems to work. Any help is appreicated, thanks!
 
That works, you can also use one of the loot profiles (I use Salvage 60 sell everything else) and if you have a good Pickup Radius (Mines 30) you should get it all... if not yea, totally add a couple steps in at the end to pick up gold =)... anyone needs help with that let me know and I'll hook it up.
 
looks stable... made the inverse, mashed up sarkoth killwait as base for this.
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Threading;
using System.Windows;
using System.Windows.Forms;
using System.Xml;
using System.Xml.Linq;
using System.Xml.XPath;
using Zeta;
using Zeta.Common;
using Zeta.CommonBot;
using Zeta.Common.Plugins;
using Zeta.Internals;
using Zeta.Internals.Actors;
using Zeta.Internals.Service;

// mashed up by quadbotter ;P
//Created by: w3eZle + Phelon
//Credit to: eax (http://www.thebuddyforum.com/members/144149-eax.html) No1KnowsY (http://www.thebuddyforum.com/members/11607-no1knowsy.html)
//Based script on these guys work
//Created Date: 12June2012

namespace Sarkoth
{
    public class Sarkoth : IPlugin
    {
        private bool IsRestarting { get; set; }
        public Version Version { get { return new Version(0, 4); } }
        public string Author { get { return "w3eZle"; } }
        public string Description { get { return "Disable KillMonsters unless in DankCellar."; } }
        public string Name { get { return "w3eZle's Sarkoth Kill Wait v" + Version; } }
        public bool hasDied { get; set; }
        public int diedTickCount { get; set; }

        public int lastSSTick { get; set; }
		private float originalKillRadius = 40; //store original kill radius
        private float reducedKillRadius = 15; //reduced radius

        private float originalLootRadius = 40; //store original kill radius
        private float reducedLootRadius = 15; //reduced radius

        public Window DisplayWindow
        {
            get
            {
                return null;
            }
        }


        private void Log(string message)
        {
            Logging.Write(string.Format("[{0}] {1}", Name, message));
        }
        public static void PortToEntrance()
        {
            TeleportTo(1995f, 2603f, ZetaDia.Me.Position.Z);
            Thread.Sleep(450);
            TeleportTo(2025f, 2563f, ZetaDia.Me.Position.Z);
            Thread.Sleep(450);
            TeleportTo(2057f, 2528f, ZetaDia.Me.Position.Z);
            Thread.Sleep(450);
            TeleportTo(2056.504f, 2540.974f, ZetaDia.Me.Position.Z);
            //TeleportTo(2081f, 2487f, ZetaDia.Me.Position.Z);
        }

        private static void TeleportTo(float x, float y, float z)
        {
            var v = new Vector3(x, y, z);
            if (ZetaDia.Me.ActorClass == ActorClass.Wizard)
            {
                ZetaDia.Me.UsePower(SNOPower.Wizard_Teleport, v, ZetaDia.Me.WorldDynamicId, 2, -1);
            }
            if (ZetaDia.Me.ActorClass == ActorClass.DemonHunter)
            {
                ZetaDia.Me.UsePower(SNOPower.DemonHunter_Vault, v, ZetaDia.Me.WorldDynamicId, 2, -1);
            }
        }

        public static float GetDistanceFromMe(float x, float y)
        {
            return (float)Math.Sqrt((ZetaDia.Me.Position.X - x) * (ZetaDia.Me.Position.X - x) + (ZetaDia.Me.Position.Y - y) * (ZetaDia.Me.Position.Y - y));
        }

        public static float GetDistance(float x, float y, float x2, float y2)
        {
            return (float)Math.Sqrt((x - x2) * (x - x2) + (y - y2) * (y - y2));
        }

        public void OnInitialize()
        {
            IsRestarting = false;
            lastSSTick = 0;
        }

        public void OnPulse()
        {

            //Checks if 20 seconds has passed since you died
            if (hasDied)
            {
                if (System.Environment.TickCount - diedTickCount > 20000)
                {
                    Log("20seconds has passed since you died, turning of the attack");
                    hasDied = false;
                }
            }
            
            // if we're not in game and not in the process of restarting, do nothing
            if (!ZetaDia.IsInGame || !ZetaDia.Me.IsValid || IsRestarting)
            {
                return;
            }

            //Turns on the attack for 20s after you get killed to prevent graveyard ganking
            if (ZetaDia.Actors.Me.HitpointsCurrentPct == 0.00)
            {
                Log("Wooooa, seems like i just died, lets turn on the attack for 20s");
                hasDied = true;
                ProfileManager.CurrentProfile.KillMonsters = true;
				Zeta.CommonBot.Settings.CharacterSettings.Instance.KillRadius = originalKillRadius;
                Zeta.CommonBot.Settings.CharacterSettings.Instance.LootRadius = originalLootRadius;
                diedTickCount = System.Environment.TickCount;
            }

            //Turning on the attack if you get attacked outside the cellar w3eZle's method
       	    if (ZetaDia.Actors.Me.HitpointsCurrentPct < 0.80 && ProfileManager.CurrentProfile.KillMonsters == false)
            {
                Log("Turning on KillMonsters - Health too low");
                Zeta.CommonBot.Settings.CharacterSettings.Instance.KillRadius = originalKillRadius;
                Zeta.CommonBot.Settings.CharacterSettings.Instance.LootRadius = originalLootRadius;
                ProfileManager.CurrentProfile.KillMonsters = true;
                return;
            }
	
            //Outside of DankC ellar, Diable Kill Monsters
            if (ZetaDia.Actors.Me.HitpointsCurrentPct > 0.80 && ProfileManager.CurrentProfile.KillMonsters == true && ZetaDia.CurrentWorldDynamicId == 1999503360 && !hasDied)
            {
                Log("Disabling KillMonsters & PickupLoot");
				Zeta.CommonBot.Settings.CharacterSettings.Instance.KillRadius = reducedKillRadius;
                Zeta.CommonBot.Settings.CharacterSettings.Instance.LootRadius = reducedLootRadius;
                ProfileManager.CurrentProfile.KillMonsters = false;
                ProfileManager.CurrentProfile.PickupLoot = false;
                return;
            }
            if (GetDistance(1991.747f, 2653.501f, ZetaDia.Me.Position.X, ZetaDia.Me.Position.Y) < 10)
            {
                PortToEntrance();
            }
            

            //Inside of Dank Cellar, Enable Kill Monsters
            if (ProfileManager.CurrentProfile.KillMonsters == false && ZetaDia.CurrentWorldDynamicId == 1999568897)
            {
                Log("Enabeling KillMonsters");
                Zeta.CommonBot.Settings.CharacterSettings.Instance.KillRadius = originalKillRadius;
                Zeta.CommonBot.Settings.CharacterSettings.Instance.LootRadius = originalLootRadius;
                ProfileManager.CurrentProfile.KillMonsters = true;
                
                return;
            }

            //Enabling loot if loot is off while entering the cellar
            if (ProfileManager.CurrentProfile.PickupLoot == false && ZetaDia.CurrentWorldDynamicId == 1999568897)
            {
                Log("Enabling Loot");
                Zeta.CommonBot.Settings.CharacterSettings.Instance.KillRadius = originalKillRadius;
                Zeta.CommonBot.Settings.CharacterSettings.Instance.LootRadius = originalLootRadius;
                ProfileManager.CurrentProfile.PickupLoot = true;
                return;
            }

        }

        public void OnShutdown()
        {
        }

        public void OnEnabled()
        {
            Log("Enabled.");
        }

        public void OnDisabled()
        {
            Log("Disabled.");
        }

        public bool Equals(IPlugin other)
        {
            return (other.Name == Name) && (other.Version == Version);
        }
    }

}

edit: yield...
[01:35:06.877 N] Number of games completed:45
[01:35:06.886 N] Last run acquired 9100 gold.
[01:35:06.887 N] Current Gold per Hour: 414415
[01:35:11.987 N] Creating new game, Params: <Act:A1 Difficulty:Inferno Quest:72095 QuestStep:51 ResumeFromSave:True IsPrivate:True>

3 runs after selling/salvaging/stashing:
[01:46:10.185 N] Number of games completed:65
[01:46:10.198 N] Last run acquired 7747 gold.
[01:46:10.199 N] Current Gold per Hour: 421450
[01:46:15.299 N] Creating new game, Params: <Act:A1 Difficulty:Inferno Quest:72095 QuestStep:51 ResumeFromSave:True IsPrivate:True>
 
Last edited:
Version 1.02 is out.

Shouldn't need the plugin from above. The new one is working fucking flawless and it does everything killwait does.. but better.
 
Last edited:
When using the Artemis plugin and profile with the mammon routine, my wizard gets the the gates, teleports 3 times, then runs back to where she was and starts running again. any idea why this happens? causes me to lose time and i get hit a couple times running back. she also gets stuck on barrels for 5-10 seconds before the gates.
 
Last edited:
My wizard keeps going melee and won't cast/shoot with archon =T.
 
I don't know why, but my baba keeps exiting the game while teleporting is this intented or is it bugging because I get error while creating a game
 
My wizard keeps going melee and won't cast/shoot with archon =T.

Try this:

Code:
<Profile>
  <!-- 
  Steps before loading and running the profie with the bot.
    * Change quest to "Act1 Legacy of Cain, Explore Cellar", Inferno difficulty.
    * Start Game
    * From town take the waypoint to -> "The Old Ruins"
    * Run west until you reach the checkpoint, ( opposite way of where the cathedral is. )
    * Once you are saved load the profile and hit Start!
    * Enjoy!
  -->
  
	<Name>Artemis - Sarkoth Profile</Name>
	
	<GameParams quest="72095" step="51" act="A1" difficulty="Inferno" resumeFromSave="True" isPrivate="True" numGames="-1"  />
	<Order>
		<WriteReport />
		<MoveTo questId="1" x="2064.812" y="2535.022" z="27.1" name="TP Spot" />
		<If condition="ActorExistsAt(176007, 2059.629, 2478.667, 27.02374, 15)">
		  <UseObject questId="1" x="2058.653" y="2476.354" z="26.32902" actorId="176007" isPortal="True" destinationWorldId="106746" />
		  <MoveTo questId="1" x="117.8131" y="103.533" z="0.1000004" />
		  <While condition="ActorExistsAt(201878, 99.91951, 148.7125, 0.1000005, 200)">
			  <MoveTo questId="1" x="117.8131" y="103.533" z="0.1000004" />
		  </While>
		</If>
	  <UseTownPortal questId="1" />
	  <LeaveGame reason="Run is done" />
	</Order>
</Profile>
 
I don't know why, but my baba keeps exiting the game while teleporting is this intented or is it bugging because I get error while creating a game

This is intended you lose like 2-3 seconds on the exit. I will find a work around for it maybe tomorrow if i am feeling un lazy.
 
Back
Top