For this example you will need the Profile linked below so you can follow along and to help you better understand how to write a Profile.
Act 3 - Phase 5 - Stage 3 [Core of Arreat] by TheFreak.xml
Open the .xml example file with notepad
Open and login to Diablo 3
Open and run DemonBuddy
* Do not run any scripts at this point
In this example we will be using Act 3 - Phase 5 - Stage 3
* Load up the above waypoint on single player
Move your character to the Portal hub
Bring your DemonBuddy up so you can view it
Select the Info Dumping tab
Under Local Player press the refresh icon
* You now have your current location
x="401.83" y="414.8265" z="1.5338"
Note: Your location will vary slightly but if you clicked the Portal hub you'll be close enough
Now lets take a look at the example Profile included above
The very first line is
<Profile>
* This is telling the bot that it is a Profile
The next line
<Name>Act 3 - Phase 5 - Stage 3 [Core of Arreat] by TheFreak</Name>
* This is the name of your Profile. It must have <Name> and </Name> at the start and ending
The next line
<GameParams quest="101758" step="1" act="A3" difficulty="Nightmare" resumeFromSave="False" isPrivate="True" numGames="-1" />
* These commands tell the bot what quest we are on and which act to load when the Profile is first loaded. You get this information from DemonBuddy once you're in the game.
So.. If you're following along, you should be in Act 3 - Phase 5 - Stage 3. If you are not, load it up.
On the Info Dumping tab located the section for Quest and press the refresh icon
QuestId: 101758
StepId: 1
* We now have the first two lines for our GameParams
act="A3"
* Pretty easy to figure out, What Act are we on?
difficulty="Nightmare"
* Again, easy to figure out. Do you want to run this Profile on Normal, Nightmare, Hell or Inferno?
resumeFromSave="False"
* The Profile is asking if we want to resume from the last checkpoint. If no, then it should be False. If Yes, then it should be True
isPrivate="True"
* Same concept as the above resume feature. Do you want this to be a Private or Public game? If Private then True. If Public then False.
numGames="-1"
* * Haven't really figured this out. My best assumption is the amount of time being that the Profile runs back to back with -1 being forever.
Now on to the next line
<Order>
* This with the below explanations go hand in hand. It's asking what do you want to do first once the Profile is loaded?
Next line
<WriteReport />
* This will tell DemonBuddy to write a report in the main tab box.
The next bunch of lines
<!-- Let us start this while we're down there... Only use the WP if we're not already at the level we want to be on. -->
<If condition="Me.IsInTown">
<UseWaypoint questId="1" x="402.295" y="415.1196" z="1.529559" levelArea="1999503360" actorId="6442 " waypointNumber="10" />
* So here the Profile is going to determine if we are in Town or not. If we are, it's going to move to to Portal Hub and use it too travel to The Core of Arreat.
How do we make it use the Portal?
<UseWaypoint questId="1" x="402.295" y="415.1196" z="1.529559" levelArea="1999503360" actorId="6442 " waypointNumber="10" />
* Remember above where I instructed you to travel to the Portal Hub? Well here is the information to use it.
X, Y and Z is your current location from Local Player
levelArea= HAVEN'T FIGURED OUT YET
actorId="6442"
* This is the ID of the portal. If you select Dump RActors on the Info Dump tab you'll want to search for the name of the portal. In this case it's
Type: Gizmo Name: Waypoint-235 ActorSNO: 6442 WaypointNumber: 0
waypointNumber="10"
* Simple count on the Portal Hub menu start at the top going down, how many selections you have. 10 Being the one we want or "The Core of Arreat"
On to the next line(s)
</If>
* This is telling the Profile, If we are are not in town then to move on to the next step
<!-- Enter the Arreat -->
<MoveTo questId="1" x="1114.795" y="722.6207" z="0.1" name="Arreat Start" />
<MoveTo questId="1" x="773.992" y="607.6407" z="0.1000183" name="Core Middle" />
<MoveTo questId="1" x="214.7403" y="719.1646" z="-31.28672" name="Core End" />
<!-- Enter the Arreat -->
* From what I've gathered, this is just a name so we know what's happening in this step
<MoveTo questId="1" x="1114.795" y="722.6207" z="0.1" name="Core Start" />
MoveTo questId="1"
* At all times, the questId is found on the Info Dump tab under Quest.
The X, Y, Z is the location where you want to the Profile to travel before loading the next section of the Profile.
name="Arreat Start"
* This is telling the Profile what part of the Arreat we are in. In this example it is broken down to three sections Start, Middle and End.
The next two sections
<MoveTo questId="1" x="773.992" y="607.6407" z="0.1000183" name="Arreat Middle" />
<MoveTo questId="1" x="214.7403" y="719.1646" z="-31.28672" name="Arreat End" />
* These are just locations of where to travel and ending just before the Boss Portal
Next set of lines
<!-- Quit the game -->
<UseTownPortal questId="1" />
<LeaveGame reason="Run is done" />
* The first line was exampled above
<UseTownPortal questId="1" />
* We are now telling the Profile to use the Town Portal
<LeaveGame reason="End has been reached" />
* We are now telling the Profile we've reached the end of our route and we want to reload the game.
</Order>
* The Profile is being told that there are no more steps involved.
<KillMonsters>True</KillMonsters>
<PickupLoot>True</PickupLoot>
</Profile>
Lets take a look at the above
<KillMonsters>True</KillMonsters>
* Do we want the Profile to attack the mobs? If Yes, then True. If not, then False.
<PickupLoot>True</PickupLoot>
* Do we want the Profile to loot Gold and Objects? If yes, then True. If not, then False
And now the last line which closes out the Profile, it is always needed at the end of all profiles
</Profile>
New discovered commands;
<While condition="Me.Level < 60" >
<!-- TITLE -->
<If condition="IsActiveQuest(XXXXXX)">
<If condition="IsActiveQuestStep(X)">
<TalkTo questId="XXXXX" stepId="X" actorId="XXXX" x="XXXX" y="XXXX" z="XXXX" skipConversation="True" />
</If>
* * XXX = Location/QuestId/ETC
* This line checks to see what your current level is. It's telling the Profile, I should be level 60. IF I am then check for the current active quest 87700. IF that quest is active then move to the location of the following step, in this case, Talk to the NPC (actorId="XXXX")
skipConversation="True"
* This is asking if you would like to Skip the dialog. If yes, Then True. If no, then False.
So there you have it. You now know how to write a simple Point A to Point B Profile in Demonbuddy. Keep in mind this is a Work in Progress as it's a new bot, different methods will be discovered and shared.