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

Writing Profile for DemonBuddy

TheFreakmd

New Member
Joined
May 11, 2010
Messages
19
Reaction score
1

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.

View attachment Act 3 - Phase 5 - Stage 3 [Core of Arreat] by TheFreak.xml

Following this link will take you to a profile that will automatically generate information needed (OPTIONAL)
Code:
questId="74128" stepId="54" x="1283.749" y="1291.054" z="184.6866" levelArea="1999568897"

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.
TakePortal tag is not usable anymore

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 &lt; 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.
 
Last edited:
A plugin is coming up soon which can automate the grabbing of quest id, questStep, player x,y,z and the levelArea. I basicly made the change in the default CC, so it would write it in the log when I press the "settings" button, but someone asked to turn it into a plugin so he'll prolly upload it soon :)
 
Looking forward to it!

It can be a bit confusing if you're just starting out with writing Profiles so it'll help a lot.
 
If I have fake questid like "1" and I just want to use that questid to kill something how can I make it so that it checks it as completed or how do I change from quest id "1" to "XXX"?
 
Thanks for the guide Freak. Its nice and clear and I'm sure there are a lot of people floating around the forums looking for info like this (myself included :))
 
How can i do next thing. If elites somewhere near - use WP to town?

And where can i see full list of conditions.
 
REMOVED QUOTE ...
http://www.thebuddyforum.com/demonb...98-writing-profile-demonbuddy.html#post550350


is it possible that the StepId states : -1 like the image ? ( as i'm trying to make 1_7_1 AKA The Doom of Wortham ) NM
Cheers !
Thanks for the great explanation mate very helpful and useful !!
Stepid.webp
 
Last edited:
Alright - since he didn't put it up, I decided to make it myself. Here ya go: http://www.thebuddyforum.com/demonb...s/54451-plugin-profile-helper.html#post551667

I've updated the main post to include a link to your thread, thank you!

How can i do next thing. If elites somewhere near - use WP to town?

And where can i see full list of conditions.

At this point I am unsure. With out having a full command list, it's unknown of the current potentials.

is it possible that the StepId states : -1 like the image ? ( as i'm trying to make 1_7_1 AKA The Doom of Wortham ) NM
Cheers !
Thanks for the great explanation mate very helpful and useful !!
View attachment 43303

That's the first time I've seen the QuestId="-1" Have you tried it with that ID and what was your outcome?

To the rest of the unanswered questions, I'm still trying to figure out some of the other commands but with out a printed command list some of the stuff you are seeking isn't possible at this moment. Not because DemonBuddy can't do it but because we don't have a full command list at this time.
 
http://www.thebuddyforum.com/demonb...-writing-profile-demonbuddy-2.html#post552292

i have not tested it yet but here is what i have so far , i don't know if it is possible to make it just in steps for example i just wanna test what i have now and if that works i write the rest or do i need a full .xml file in order to work properly


Code:
<Profile>
  <Name>The Doom of Wortham - xp profile by Roflkoptor</Name>
  <GameParams quest="73236" step="-1" act="A1" difficulty="Nightmare" resumeFromSave="False" isPrivate="True" numGames="-1" />
  </Order>

    <!-- Actually leave the game!  -->
	<LeaveGame reason="Run is done" />
  </Order>
  <KillMonsters>True</KillMonsters>
  <PickupLoot>True</PickupLoot>
 </Profile>
 
Code:
<Profile>
  <Name>The Doom of Wortham - xp profile by Roflkoptor</Name>
  <GameParams quest="73236" step="-1" act="A1" difficulty="Nightmare" resumeFromSave="False" isPrivate="True" numGames="-1" />
  </Order>

    <!-- Actually leave the game!  -->
	<LeaveGame reason="Run is done" />
  </Order>
  <KillMonsters>True</KillMonsters>
  <PickupLoot>True</PickupLoot>
 </Profile>

I'm fully aware you are still working on your Profile but in it's current state with what you have it will just cycle starting the Act/Phase and then just quit.
 
I'm fully aware you are still working on your Profile but in it's current state with what you have it will just cycle starting the Act/Phase and then just quit.
it is in progress and this is what i have now :
i still have issues ... i tried to change it with the help spots u see in the profile but it tries to generate path to some loot and just stands still :)
any help would be nice

Thanks in advance

Code:
<Profile>
  <Name>The Doom of Wortham - xp profile by Roflkoptor</Name>
  <GameParams quest="73236" step="-1" act="A1" difficulty="Nightmare" resumeFromSave="False" isPrivate="True" numGames="-1" />
  <Order>
  <WriteReport />
  <!-- Talk to The Stranger in new Tristram -->
         <TalkTo questId="73236" stepId="-1" actorId="117365" x="2944.26" y="2801.586" z="24.04533" />
         <!-- Talk to Ferrymen -->
         <TalkTo questId="73236" stepId="34" actorId="153019" x="3125.358" y="2599.168" z="1.138605" />
         <!-- Travel to the center of Wortham -->
         <MoveTo questId="1" stepId="20" x="527.7203" y="874.178" z="70.10001" pathPrecision="3" name="help spot1" />
         <MoveTo questId="1" stepId="20" x="539.4076" y="800.0073" z="70.10001" pathPrecision="3" name="help spot2" />
         <MoveTo questId="1" stepId="20" x="558.4706" y="775.649" z="70.10001" pathPrecision="3" name="help spot3" />
         <MoveTo questId="1" stepId="20" x="558.4706" y="775.649" z="70.10001" pathPrecision="3" name="help spot4" />
         <MoveTo questId="1" stepId="20" x="608.2006" y="548.9595" z="70.10001" pathPrecision="3" name="move to the center" />
         <!-- Kill Uzrel Mordreg -->
         <MoveTo questId="1" stepId="11" x="590.4836" y="583.9402" z="70.10001" pathPrecision="1" name="kill Uzrel Mordreg" />
         <!-- Kill the 3 cultists -->
         <MoveTo questId="1" stepId="16" x="579.5996" y="568.6113" z="70.10001" pathPrecision="1" name="kill the 3 cultists" />
  <!-- When done use Townportal before logging off -->
         <UseTownPortal questId="1" />
  <!-- Actually leave the game!  -->
	<LeaveGame reason="Run is done" />
  </Order>
  <KillMonsters>True</KillMonsters>
  <PickupLoot>True</PickupLoot>
 </Profile>
 

Attachments

it is in progress and this is what i have now :
i still have issues ... i tried to change it with the help spots u see in the profile but it tries to generate path to some loot and just stands still :)
any help would be nice

Thanks in advance

You didn't tell the Profile how to get to The Ferryman. You gave the location of him but not the path to take;

Code:
<Profile>
  <Name>The Doom of Wortham - xp profile by Roflkoptor</Name>
  <GameParams quest="73236" step="-1" act="A1" difficulty="Nightmare" resumeFromSave="False" isPrivate="True" numGames="-1" />
  <Order>
  <WriteReport />

  <!-- Talk to The Stranger in new Tristram -->
         <TalkTo questId="73236" stepId="-1" actorId="117365" x="2944.26" y="2801.586" z="24.04533" />

         <!-- Talk to Ferrymen -->
[B]         <MoveTo questId="1" stepId="1" x="3016.701" y="2798.506" z="24.04533" />
         <MoveTo questId="1" stepId="1" x="3031.191" y="2732.469" z="24.04533" />
         <MoveTo questId="1" stepId="1" x="2958.38" y="2709.424" z="24.04533" />
         <MoveTo questId="1" stepId="1" x="2943.105" y="2600.168" z="0.5997882" />
         <MoveTo questId="1" stepId="1" x="3126.25" y="2603.75" z="1.38899" />[/B]
         <TalkTo questId="73236" stepId="34" actorId="153019" x="3125.358" y="2599.168" z="1.138605" />

         <!-- Travel to the center of Wortham -->
         <MoveTo questId="1" stepId="20" x="527.7203" y="874.178" z="70.10001" pathPrecision="3" name="help spot1" />
         <MoveTo questId="1" stepId="20" x="539.4076" y="800.0073" z="70.10001" pathPrecision="3" name="help spot2" />
         <MoveTo questId="1" stepId="20" x="558.4706" y="775.649" z="70.10001" pathPrecision="3" name="help spot3" />
         <MoveTo questId="1" stepId="20" x="558.4706" y="775.649" z="70.10001" pathPrecision="3" name="help spot4" />
         <MoveTo questId="1" stepId="20" x="608.2006" y="548.9595" z="70.10001" pathPrecision="3" name="move to the center" />

         <!-- Kill Uzrel Mordreg -->
         <MoveTo questId="1" stepId="11" x="590.4836" y="583.9402" z="70.10001" pathPrecision="1" name="kill Uzrel Mordreg" />

         <!-- Kill the 3 cultists -->
         <MoveTo questId="1" stepId="16" x="579.5996" y="568.6113" z="70.10001" pathPrecision="1" name="kill the 3 cultists" />

  <!-- When done use Townportal before logging off -->
         <UseTownPortal questId="1" />

  <!-- Actually leave the game!  -->
	<LeaveGame reason="Run is done" />

  </Order>
  <KillMonsters>True</KillMonsters>
  <PickupLoot>True</PickupLoot>
 </Profile>
View attachment The Doom of Wortham 1_7_1______EDITED.xml

I've attached the edited version of your Profile. It needs a bit more work but I'll let you do that since it's your Project and it helps you learn.
 
Last edited:
is there any way to search the floor for an exit, or clear an entire level, then take the next exit ( like hallls of agony > that outside courtyard?)
 
Yes, you just have to tell the Profile to go to the location then interact with the actorId.
 
is there any way to search the floor for an exit, or clear an entire level, then take the next exit ( like hallls of agony > that outside courtyard?)

DB can't do this (yet).

Have to wait for devs to support this.
 
Back
Top