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

[Beta Test] Atom 2.0.15

Status
Not open for further replies.
Just did a test of 10 bots starting with BigRed_START_HERE.xml, and using the follow code:

Code:
<Ciggarc randomize="True" startprofiles="Mint_START_HERE.xml;Elderberries_START_HERE.xml" backup="BigRed_START_HERE.xml" />

When BigRed_START_HERE.xml was done, they all chose Mint_START_HERE.xml for their next run. Are you sure the startprofiles get randomized?
 
Just did a test of 10 bots starting with BigRed_START_HERE.xml, and using the follow code:

Code:
<Ciggarc randomize="True" startprofiles="Mint_START_HERE.xml;Elderberries_START_HERE.xml" backup="BigRed_START_HERE.xml" />

When BigRed_START_HERE.xml was done, they all chose Mint_START_HERE.xml for their next run. Are you sure the startprofiles get randomized?
its using the same method as All the other random stuff
 
Hope it's useful to solving the stuck. Another note (without log sorry), I saw the bot completing a couple of runs without stucks. I don't know if it'd be useful to fixing this problem though.
 
I didnt monitor it much but it looks like it worked flawless for the last 24 hours.
 
Stuck after moving from Cursed Tower level 1 to level 2.
Using with DB beta 82 and latest Trinity.
[01:00:31.424 N] [Atom] - Released at: 17.11.2012 1:00:28
[01:00:31.424 N] [Atom] - Deathcount at: 2
[01:00:31.424 N] [Atom] - Reload current profile.
[01:00:32.452 N] Loaded profile [A3 - Inferno]CIGGARC Donator Profile 1.04 - Tower of the Cursed Level 1 and 2
[01:00:32.481 N] ToggleTargeting, new values: Looting:True LootRadius:80 Combat:True KillRadius:45
[01:00:42.295 N] [GilesTrinity] Berserk being used!
[01:02:53.278 N] Interacting with object g_Portal_ArchTall_Orange-7468
[01:02:59.532 N] ========== Grid segmentation resetting!!! ============
Just stands still on the stairs for a couple of minutes, then TP to town and runs to the southern corner and stucks there. Unstucks and reloads the prodife. Runs through CT level 1 to level 2 and stucks againg at spawn point. Wtf.
 
I think the stucks are due to his anti-townportal. Had 1 stuck where it was looping townportal every 1 second.
 
i have noticed that giles unstuck feature does not work anymore with this new plugin. when the bot is stuck it just uses the inactivity timer. =\
 
Hello
if i start from BigRed_START_HERE.xml and add this lines

<Ciggarc randomize="True" startprofiles="Mint_START_HERE.xml;BigRed_START_HERE.xml" backup="BigRed_START_HERE.xml" />

this mean will do random between Mint_START_HERE.xml and BigRed_START_HERE like for 6-7h.

good job for all profiles and plugins
 
I made some customizations to the Randomizer so that you can nest random profiles that should be followed by other random profiles. Replace the code from Atom/Functions/Randomizer.cs with this one:

Code:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Xml;
using Zeta.CommonBot.Settings;

namespace Atom.Functions
{
    class Randomizer
    {
        private static Random randGenerator = new Random(DateTime.Now.Ticks.GetHashCode());
        private static List<string> profiles = Enumerable.Empty<string>().ToList<string>();

        public static string SelectProfile(string profiles)
        {
            string[] profilesArray = profiles.Split(';');
            string profile = profilesArray[randGenerator.Next(0, profilesArray.Length)];

            return Path.Combine(Profilemaster.ProfilesPath, profile);
        }

        public static void RecurseSelect(XmlNodeList nodes)
        {
            foreach (XmlNode xmlNodeCiggarcChild in nodes)
            {
                if (xmlNodeCiggarcChild.Name == "Randomize")
                {
                    XmlNodeList randChildren = xmlNodeCiggarcChild.SelectNodes("select");

                    List<XmlNode> randomizedList = new List<XmlNode>();

                    foreach (XmlNode n in randChildren)
                        randomizedList.Add(n);

                    //adapted from http://stackoverflow.com/questions/273313/randomize-a-listt-in-c-sharp
                    randomizedList = randomizedList.OrderBy<XmlNode, int>((item) => randGenerator.Next()).ToList();

                    foreach (XmlNode n in randomizedList)
                    {
                        profiles.Add(SelectProfile(n.Attributes["profiles"].Value));

                        if (n.HasChildNodes)
                        {
                            RecurseSelect(n.ChildNodes);
                        }
                    }
                }

                if (xmlNodeCiggarcChild.Name == "select")
                {
                    profiles.Add(SelectProfile(xmlNodeCiggarcChild.Attributes["profiles"].Value));
                }
            }
        }

        public static void initProfiles(bool randomize = false)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(GlobalSettings.Instance.LastProfile);

            if (profiles.Count > 0)
                profiles = new List<string>();

            XmlNode xmlNodeCiggarc = xmlDoc.SelectSingleNode("Profile/Ciggarc");

            if (xmlNodeCiggarc != null)
            {
                RecurseSelect(xmlNodeCiggarc.ChildNodes);
            }

            Profilemaster.ProfilesOrder = profiles.ToArray();

            Logger.Log("Profile order for this run: ");
            outputRunProfilesList();
        }

        public static void outputRunProfilesList()
        {
            foreach (string s in profiles)
            {
                Logger.Log(string.Format(@"[{0} / {1}] ", profiles.FindIndex(r => r.Equals(s)) + 1, profiles.Count) + Path.GetFileName(s));
            }
        }
    }
}

This allows you to do infinite nesting of the tags, each sub-section randomized if within <Randomize> tags. A simple example for the profile starter this would be:
Code:
	<Ciggarc>
		<Randomize>
			<select profiles="BigRed_DamnedTowerA.xml;BigRed_DamnedTowerB.xml">
				<select profiles="BigRed_DamnedHeartA.xml;BigRed_DamnedHeartB.xml"/>
			</select>
			<select profiles="BigRed_CursedTower.xml">
				<select profiles="BigRed_CursedHeart.xml"/>
			</select>
			<select profiles="BigRed_Battlefields.xml"/>
			<select profiles="BigRed_FieldsofSlaughter.xml"/>
			<select profiles="BigRed_Rakki.xml"/>
			<select profiles="BigRed_KeepLevel3.xml"/>
			<select profiles="BigRed_ArreatCraterLevel1.xml"/>
			<select profiles="BigRed_SkycrownA.xml;BigRed_SkycrownB.xml"/>
			<select profiles="BigRed_StonefortA.xml;BigRed_StonefortB.xml"/>
		</Randomize>
		<select profiles="BigRed_CoreAzmodan.xml"/>
	</Ciggarc>

This would randomize the profile order, however always do DamnedHeart after DamnedTower and CursedHeart after CursedTower, and Azmodan always at the end.

You could also go entirely nuts and do things like that:
Code:
	<Ciggarc>
		<select profiles="BigRed_SkycrownA.xml;BigRed_SkycrownB.xml"/>
		<Randomize>
			<select profiles="BigRed_DamnedTowerA.xml;BigRed_DamnedTowerB.xml">
				<select profiles="BigRed_DamnedHeartA.xml;BigRed_DamnedHeartB.xml"/>
				<Randomize>
					<select profiles="BigRed_Battlefields.xml"/>
					<select profiles="BigRed_FieldsofSlaughter.xml"/>
					<select profiles="BigRed_Rakki.xml">
						<select profiles="BigRed_KeepLevel3.xml"/>
						<Randomize>
							<select profiles="BigRed_ArreatCraterLevel1.xml"/>
							<select profiles="BigRed_StonefortA.xml;BigRed_StonefortB.xml"/>
						</Randomize>
					</select>
				</Randomize>
			</select>
			<select profiles="BigRed_CursedTower.xml">
				<select profiles="BigRed_CursedHeart.xml"/>
			</select>
		</Randomize>
		<select profiles="BigRed_CoreAzmodan.xml"/>
	</Ciggarc>
which doesn't have much of a point, but you COULD do it.

Many thanks to the ciggarc team for all their hard work thus far!
 
Last edited:
By the way, I just noticed it's only using CoreOnly instead of CoreAzmodan, which is the one I set on both StonefortA and StonefortB
Did I miss something?

edit: nevermind. have to change it in Start_here, got it.
 
Last edited:
And to add, remove BigRed_DamnedHeartB.xml from Start_here if you're stuck at the top of the stairs in the Damned Heart.
Also, Atom is working great. It was just the profile that had a little quirks. Props to Radonic!
 
Hi All...
I am new of here and this working fine for me...

But i facing 1 problem is the DemonBuddy will disconnect or what i mean is will auto log out sometime...how to solve this problem?
Grateful to you if someone can help me.......
 
We have fixed Cydea stuck, after he kills her, he instantly loots here, kills the heart and uses teleport to town to pick next profile.

<Profile>
<Name>[A3 - Inferno]CIGGARC Donator Profile 1.04 - Heart of the Cursed</Name>
<Ciggarc StartProfile="BigRed_START _HERE.xml"/>
<KillMonsters>True</KillMonsters>
<PickupLoot>True</PickupLoot>
<GameParams quest="101758" step="29" act="A3" difficulty="Inferno" resumeFromSave="False" isPrivate="True" numGames="-1" />
<Order>
<ToggleTargeting questId="1" combat="True" looting="True" lootRadius="200" killRadius="200" />

<!-- Cursed Tower A -->
<If condition="ActorExistsAt(161278, 1083.051, 1043.106, -70.48186, 30)and ZetaDia.CurrentWorldId == 139272">
<MoveTo questId="1" x="1083.328" y="1040.23" z="-76.50092" name="Tower of the Cursed Level 2:2A-21" />
<WaitTimer questId="1" waitTime="250" />
<UseObject questId="1" stepId="1" actorId="161278" isPortal="True" destinationWorldId="119650" interactRange="40" x="1083.051" y="1043.106" z="-70.48186" />
<WaitTimer questId="1" waitTime="250" />
</If>

<!-- Cursed Tower B -->
<If condition="ActorExistsAt(161278, 1080.139, 888.6223, -62.22284, 30)and ZetaDia.CurrentWorldId == 139272">
<MoveTo questId="1" x="1084.524" y="887.4499" z="-91.71507" name="Tower of the Cursed Level 2:2B-23" />
<WaitTimer WaitTime="500" />
<UseObject questId="1" stepId="1" actorId="161278" isPortal="True" destinationWorldId="119650" interactRange="30" x="1080.139" y="888.6223" z="-62.22284" />
<WaitTimer WaitTime="1000" />
</If>

<!-- Start of Heart of Cursed -->
<If condition="Zeta.ZetaDia.CurrentWorldId==119650 and IsActiveQuestStep(29)">
<MoveTo questId="1" x="1047.614" y="1279.675" z="40.19239" pathPrecision="10" name="Heart of the Cursed-01" />
<MoveTo questId="1" x="1148.76" y="1270.359" z="40.1" pathPrecision="10" name="Heart of the Cursed-02"/> <!-- Current player position when stuck=<1193.062, 1233.342, 41.01807> -->
<MoveTo questId="1" x="1219.801" y="1221.462" z="40.33031" pathPrecision="10" name="Heart of the Cursed-03" /> <!-- Original Destination=<1205, 1222.5, 40.91807>. -->
<MoveTo questId="1" x="1271.218" y="1138.841" z="40.1" pathPrecision="10" name="Heart of the Cursed-04" />
<MoveTo questId="1" x="1270.786" y="1088.514" z="40.50775" pathPrecision="10" name="Heart of the Cursed-05" />
<MoveTo questId="1" x="1213.249" y="1076.738" z="16.74862" pathPrecision="10" name="Heart of the Cursed-06" />
<MoveTo questId="1" x="1159.117" y="1078.982" z="0.1000016" pathPrecision="10" name="Heart of the Cursed-07" />
<SkipCutscene questId="1" />
</If>

<!-- Kill Cydaea (Step 23 is in battle with Cydaea) -->
<If condition="IsActiveQuest(101758) and IsActiveQuestStep(23)" >
<MoveTo questId="1" x="1159.117" y="1078.982" z="0.1000016" pathPrecision="10" name="Cydaea-01" />

</If>





<If condition="(not Me.IsInTown)">
<UseTownPortal questId="1" />
<While condition="not Me.IsInTown">
<WaitTimer questId="1" waitTime="50" />
</While>
</If>

<WaitTimer questId="1" waitTime="50" />
<Continue profile="BigRed_BattlefieldswithBarracks.xml"/>
</Order>
</Profile>

Also we have fixed a time for portals taking (5 seconds it's just too much) so change it in profiles (last section) from 5000 to 50 or even less. If you have any other question I would gladly answer them.
 
I'm not sure why the profiles have any WaitTimer at all. I removed them all on my side and it still runs fine.
 
Please test the new version!
Also test the Gold Inactivity timer!
 
Testing now! I'm at work though, so I will check on the stats when I get back to let you know if the gold inactivity timer is working. Thanks for the much needed feature!
 
Status
Not open for further replies.
Back
Top