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

BuddyWing Profiles and You!

Status
Not open for further replies.

Kickazz006

Well-Known Member
Joined
Jan 15, 2010
Messages
20,566
Reaction score
302
This is a quick and dirty guide to writing a profile in Buddywing - I may make it fancy at a later date

Gathering / Chest Profiles:
This can be any of these 3, and they are all acceptable:

GrindProfile, take out the mobs and leave the hotspots
UseObect QuestId="1" with multiple hotspots
Move QuestId="1" - a lot of moveto's in a row


GrindProfile w/o mobs
Code:
<Profile xmlns="http://tempuri.org/ProfileSchema.xsd">
  <Name>Grinding level 6ish</Name>
    
    <Vendors>
        <Hotspot Name="Nad'alin" X="-13.0963" Y="-2.503603" Z="-93.1485" /> <!-- The Gnarls -->
        <Hotspot Name="Republic Medical Droid" X="-15.3679" Y="-8.133331" Z="-42.8" /> <!-- Jedi Temple -->
        <Hotspot Name="Republic Medical Droid" X="13.2112" Y="-0.7676925" Z="-32.1017" /> <!-- Kalikori Village -->
        <Hotspot Name="Republic Medical Droid" X="-21.5248" Y="-2.668555" Z="-7.8756" /> <!-- Forward Camp -->
        <Hotspot Name="Republic Medical Droid" X="-0.2154" Y="3.977503" Z="47.8403" /> <!-- The Forge (S. Tython) -->
    </Vendors>
    
    <GrindAreas> 


        <GrindArea Name="Flesh Raiders">
            <MinLevel>1</MinLevel>
            <MaxLevel>9</MaxLevel>
            <Hotspots>
                <Hotspot Name="Flesh Raider Stalker" X="21.9674" Y="0.5871694" Z="-28" />
                <Hotspot Name="Flesh Raider Pillager" X="23.55397" Y="0.8520655" Z="-27.82022" />
                <Hotspot Name="Flesh Raider Loreseeker" X="26.38745" Y="-3.514936" Z="-12.54061" />
                <Hotspot Name="Flesh Raider Tech Salvager" X="31.58759" Y="-3.607875" Z="-11.78759" />
                <Hotspot Name="Flesh Raider Salvager" X="33.17172" Y="-3.076517" Z="-14.54137" />
                <Hotspot Name="Flesh Raider Stalker" X="36.38931" Y="-3.647701" Z="-12.75494" />
                <Hotspot Name="Flesh Raider Beast Handler" X="40.95205" Y="-1.460363" Z="-14.7401" />
                <Hotspot Name="Flesh Raider Shaman" X="38.4" Y="-1.180024" Z="-6.4" />
                <Hotspot Name="My Location" X="38.47871" Y="-1.202698" Z="-16.99549" />
                <Hotspot Name="Flesh Raider Tech Salvager" X="46.24964" Y="-1.318422" Z="-16.43253" />
                <Hotspot Name="My Location" X="47.25857" Y="-1.373355" Z="-19.98298" />
                <Hotspot Name="Flesh Raider Loreseeker" X="46.34" Y="-0.2165156" Z="-12.08" />
                <Hotspot Name="Flesh Raider Loreseeker" X="44.1" Y="1.015183" Z="-9.200001" />
                <Hotspot Name="Flesh Raider Chief Shaman" X="44.02" Y="1.338866" Z="-4.62" />
            </Hotspots>
        </GrindArea>    


    </GrindAreas>


        
            <Grind GrindRef="Flesh Raiders" While="Me.Level &lt; 10" />




</Profile>

Useobject profile
Code:
<Profile xmlns="http://tempuri.org/ProfileSchema.xsd">
  <Name>My lockbox or gathering profile</Name>


    <Vendors>
<!-- Add vendor(s) -->
    </Vendors>



    <Questing>


            <UseObject QuestId="1" IgnoreLOS="True" Radius="200" WaitTime="5" >
             <Placeables>
                <Placeable>Some Lockbox</Placeable>
             </Placeables>
             <Hotspots>
                <Hotspot XYZ />
<!-- Add multiple hotspots here -->
             </Hotspots>
            </UseObject>


    
    </Questing>    


</Profile>

MoveTo profile
Code:
<Profile xmlns="http://tempuri.org/ProfileSchema.xsd">
  <Name>My Lockbox or Gathering Profile</Name>
  
    <Vendors>
<!-- Add vendor(s) -->
    </Vendors>



    <Questing>


            <MoveTo QuestId="1" X Y Z />
<!-- Just add the xyz from hotspots and you're done -->
    
    </Questing>    


</Profile>


Grinding Profiles:
These just Grind, simple as that.

Code:
<Profile>
<Name>Name of Profile</Name>
<Vendors>
<!-- vendors here -->
</Vendors>

<GrindAreas>
     <!-- Grind Area's Here -->
        <GrindArea Name="">
            <MinLevel>1</MinLevel>
            <MaxLevel>50</MaxLevel>
            <Mobs>
                <Mob></Mob>
                <Mob></Mob>
                <Mob></Mob>
                <Mob></Mob>
                <Mob></Mob>
                <Mob></Mob>
            </Mobs>
            <Hotspots>
                
                
                
                
                
            </Hotspots>
        </GrindArea>    


</GrindAreas>

            <Grind GrindRef="" While="Me.Level &lt; 51" />

</Profile>

Actual Grinding Profile that works:
Code:
<Profile xmlns="http://tempuri.org/ProfileSchema.xsd">
  <Name>Grinding level 6ish</Name>
    
    <Vendors>
        <Hotspot Name="Nad'alin" X="-13.0963" Y="-2.503603" Z="-93.1485" /> <!-- The Gnarls -->
        <Hotspot Name="Republic Medical Droid" X="-15.3679" Y="-8.133331" Z="-42.8" /> <!-- Jedi Temple -->
        <Hotspot Name="Republic Medical Droid" X="13.2112" Y="-0.7676925" Z="-32.1017" /> <!-- Kalikori Village -->
        <Hotspot Name="Republic Medical Droid" X="-21.5248" Y="-2.668555" Z="-7.8756" /> <!-- Forward Camp -->
        <Hotspot Name="Republic Medical Droid" X="-0.2154" Y="3.977503" Z="47.8403" /> <!-- The Forge (S. Tython) -->
    </Vendors>
    
    <GrindAreas> 


        <GrindArea Name="Flesh Raiders">
            <MinLevel>1</MinLevel>
            <MaxLevel>9</MaxLevel>
            <Mobs>
                <Mob>Flesh Raider Stalker</Mob>
                <Mob>Flesh Raider Pillager</Mob>
                <Mob>Flesh Raider Loreseeker</Mob>
                <Mob>Flesh Raider Salvager</Mob>
                <Mob>Flesh Raider Tech Salvager</Mob>
            </Mobs>
            <Hotspots>
                <Hotspot Name="Flesh Raider Stalker" X="21.9674" Y="0.5871694" Z="-28" />
                <Hotspot Name="Flesh Raider Pillager" X="23.55397" Y="0.8520655" Z="-27.82022" />
                <Hotspot Name="Flesh Raider Loreseeker" X="26.38745" Y="-3.514936" Z="-12.54061" />
                <Hotspot Name="Flesh Raider Tech Salvager" X="31.58759" Y="-3.607875" Z="-11.78759" />
                <Hotspot Name="Flesh Raider Salvager" X="33.17172" Y="-3.076517" Z="-14.54137" />
                <Hotspot Name="Flesh Raider Stalker" X="36.38931" Y="-3.647701" Z="-12.75494" />
                <Hotspot Name="Flesh Raider Beast Handler" X="40.95205" Y="-1.460363" Z="-14.7401" />
                <Hotspot Name="Flesh Raider Shaman" X="38.4" Y="-1.180024" Z="-6.4" />
                <Hotspot Name="My Location" X="38.47871" Y="-1.202698" Z="-16.99549" />
                <Hotspot Name="Flesh Raider Tech Salvager" X="46.24964" Y="-1.318422" Z="-16.43253" />
                <Hotspot Name="My Location" X="47.25857" Y="-1.373355" Z="-19.98298" />
                <Hotspot Name="Flesh Raider Loreseeker" X="46.34" Y="-0.2165156" Z="-12.08" />
                <Hotspot Name="Flesh Raider Loreseeker" X="44.1" Y="1.015183" Z="-9.200001" />
                <Hotspot Name="Flesh Raider Chief Shaman" X="44.02" Y="1.338866" Z="-4.62" />
            </Hotspots>
        </GrindArea>    


    </GrindAreas>


        
            <Grind GrindRef="Flesh Raiders" While="Me.Level &lt; 10" />




</Profile>

Daily Quests / Leveling Questing Profiles:

This is the big pain

Picking up Quests - First one is from an NPC (target, dump target, copy the name and xyz /> - paste onto Giver). Get quest from giver, dump quests, copy the name and Quest Id into their slots. Gameobjects are the 2nd line (Placeable, UseRange 2) - get the xyz near the Object that gives the quest, type in the GiverName correctly. Dump quest and paste in the name / questid

Code:
    <PickUpQuest QuestName="" QuestId="" Giver
    <PickUpQuest QuestName="" QuestId="" Type="Placeable" UseRange="2" GiverName=""


Turnin Quests - Same as picking up, but you turnin. Most of the time you have the Complete quest function that you'll also have to add in after

Code:
        <!-- Turnin 
        <If Condition="((HasQuest()) and (not IsQuestComplete()))">
    <TurnInQuest QuestName="" QuestId="" TurnIn
        </If>
            <CompleteQuest QuestName="" QuestId="" RewardIndex="1" />
            <CompleteQuest QuestName="" QuestId="" />
        


            <!-- Turnin 
        <If Condition="((HasQuest()) and (not IsQuestComplete()))">
<TurnInQuest QuestName="" QuestId="" Type="Placeable" UseRange="2" TurnInName="" 
        </If>
            <CompleteQuest QuestName="" QuestId="" RewardIndex="1" />
            <CompleteQuest QuestName="" QuestId="" />

^^ You'll see this in my BlankQO (or something similar). I use conditions around my turnin's, you don't always have to, I just like to minimize after. I fill in the information, i delete whichever completequest I don't need (RewardIndex is only used when there are rewards to select from. Delete the one w/o rewards if there are rewards... delete the one with rewards if there are no rewards to click on (either 1 reward, or no rewards - use this))

Here is how Apoc likes it (and it's completely viable). I just think mine looks prettier

Code:
    <TurnInQuest QuestName="" QuestId="" TurnIn
            <CompleteQuest QuestName="" QuestId="" RewardIndex="1" />


    <TurnInQuest QuestName="" QuestId="" Type="Placeable" UseRange="2" TurnInName="" 
            <CompleteQuest QuestName="" QuestId="" RewardIndex="1" />


Quests themselves:

Conditions:
not IsQuestComplete - generally for bonus quests
has quest and not iqc - generally for most quests
hq and not iqc + hq and not ibsc - for when you need to add steps to a quest
hq and not iqc + hq and not ibsc + hq and not ibtc - for when you need to add steps and tasks to a quest

You can take out the hasquests's if you like, but I keep them in (this drives apoc nuts)

GrindRef - for when you need to simply grind for a step or task, make sure you add the grindarea above with the *exact* name

Code:
         <!-- 
         <If Condition="(not IsQuestComplete())">
            <Grind GrindRef="" While="(not IsQuestComplete())" />
         </If>
        
            <Grind GrindRef="" While="(not IsBranchStepComplete(, 1, 2))" />
            <Grind GrindRef="" While="(not IsBranchTaskComplete(, 1, 2, 0))" />
            
        <!-- 
        <If Condition="((HasQuest()) and (not IsQuestComplete()))">
        </If>
        
        <!-- 
        <If Condition="((HasQuest()) and (not IsQuestComplete()))">
         <If Condition="((HasQuest()) and (not IsBranchStepComplete(, 1, 2)))">
         </If>
        </If>
        
        <!-- 
        <If Condition="((HasQuest()) and (not IsQuestComplete()))">
         <If Condition="((HasQuest()) and (not IsBranchStepComplete(, 1, 2)))">
          <If Condition="((HasQuest()) and (not IsBranchTaskComplete(, 1, 2, 0)))">
          </If>
         </If>
        </If>

UseObject Quests ::
Interact - Only use this if it doesn't relate to a step/task! IE: Use Holoterminal on ship... You need to interact with your ship door to get onto your ship.
<UseObject QuestId="" Name="" IgnoreLOS="True" IgnoreQuestRelation="True" - Ignore Quest Relation is for when regular useobject doesn't work
<UseObject QuestId="" BranchId="1" StepId="2" IgnoreLOS="True" Radius="5" WaitTime="5" Name="" - regular useobject, plug in the name and xyz
<UseObject QuestId="" BranchId="1" StepId="2" TaskId="0" IgnoreLOS="True" Radius="5" WaitTime="5" Name="" - regular useobject, plug in the name and xyz; do note: this is for when you have multiple tasks!
UseObject Bid 1 Sid 2 etc - this is for multiple hotspots (1 or more placeables)
UseObject Bid 1 Sid 2 Tid 0 etc - this is for multiple hotspots (1 or more placeables); do note: this is for when you have multiple tasks!

Code:
            <Interact IgnoreLOS="True" WaitTime="5" Name="" 
            <UseObject QuestId="" BranchId="1" StepId="2" Name="" IgnoreLOS="True" IgnoreQuestRelation="True" 
            <UseObject QuestId="" BranchId="1" StepId="2" IgnoreLOS="True" Radius="5" WaitTime="5" Name="" 
            <UseObject QuestId="" BranchId="1" StepId="2" TaskId="0" IgnoreLOS="True" Radius="5" WaitTime="5" Name="" 
            
            <UseObject QuestId="" BranchId="1" StepId="2" IgnoreLOS="True" Radius="50" WaitTime="5" >
             <Placeables>
                <Placeable></Placeable>
             </Placeables>
             <Hotspots>
             </Hotspots>
            </UseObject>
            
            <UseObject QuestId="" BranchId="1" StepId="2" TaskId="0" IgnoreLOS="True" Radius="50" WaitTime="5" >
             <Placeables>
                <Placeable></Placeable>
             </Placeables>
             <Hotspots>
             </Hotspots>
            </UseObject>
            
            UseRange="2" BlacklistDuration="" Amount="2"

UseItem Quests:
These are a huge pita atm and don't work 1/2 of the time, but here's the syntax. Same logic as UseObject, but these must be in conditions as they <While> whatever condition they're in
If you need to use it at a location / on nothing, delete OnObject="", change range to 1, radius to 1

Code:
            <UseItem QuestId="" Item="" OnObject="" WaitTime="3" Range="4" InCombat="False" Radius="10" 


            <UseItem QuestId="" Item="" WaitTime="3" Range="4" InCombat="False" Radius="20" >
             <Npcs>
                <Npc></Npc>
             </Npcs>
             <Hotspots>
             </Hotspots>
            </UseItem>


            <UseItem QuestId="" Item="" WaitTime="3" Range="4" InCombat="False" Radius="20" >
             <Npcs>
                <Npc></Npc>
             </Npcs>
             <Hotspots>
             </Hotspots>
            </UseItem>
            
            DeadOnly="True" HealthPercent="" 

ie:

         <If Condition="((HasQuest(0xE0003CB046F6D52F)) and (not IsBranchStepComplete(0xE0003CB046F6D52F, 1, 3)))">
            <UseItem QuestId="0xE0003CB046F6D52F" Item="Dark Crystal" OnObject="Corrupted Voss" WaitTime="3500" Range="2" InCombat="True" Radius="100" >
             <Hotspots>
                <Hotspot Name="Corrupted Voss" X="81.492" Y="-2.029311" Z="-17.7376" />
                <Hotspot Name="Corrupted Voss" X="74.69138" Y="-2.873498" Z="-23.29395" />
                <Hotspot Name="Corrupted Voss" X="63.7393" Y="-2.773375" Z="-19.0297" />
                <Hotspot Name="Corrupted Voss" X="67.25663" Y="-2.791917" Z="-21.75548" />
                <Hotspot Name="Corrupted Voss" X="66.54269" Y="-2.787395" Z="-13.9441" />
                <Hotspot Name="Corrupted Voss" X="63.7058" Y="-2.782363" Z="-23.8915" />
                <Hotspot Name="Corrupted Voss" X="63.2729" Y="-2.763089" Z="-28.7362" />
             </Hotspots>
            </UseItem>
         </If>

MoveTo, TalkTo, AnswerHolocom:
These must all be in a condition, I recommend waittimers for anything that has a cutscene - sometimes the bot is too fast and thinks the quest is done.

Code:
            <TalkTo QuestId="" 
            <WaitTimer QuestId="1" WaitTime="8" />

            <Moveto QuestId="" 


            <AnswerHolocomCall QuestName="" QuestId="" />
            <WaitTimer QuestId="1" WaitTime="8" />

Other tags and stuffs
AreaID is the planet ID, obtained from 'my location' button. paste it after the 0x
Me.Position.X/Y/Z is for checking long, lat, and height

X is longitude
Z is latitude
Y is height

UseTransport is Taxi default, Type="Wonkavator" is when you select where to go (shuttle door, elevator, etc)
You cannot usetransport for 'auto elevators' - those have to be added to the mesh. We need the top stand-at and the bottom autopickup. and the PlanetID (my location button)

JumpTo - You'll probably never have to do this manually - but there's only a few times that you have to dump onto a box, or onto a platform that the mesh cannot nav to. The notes are in my BlankQO for this

UserDialog - stops the bot and pops up a qq box

ForceVendor is exactly that. it goes to an npc and executes it's argument (repair/sell, train)

Code:
           <If Condition="(BuddyTor.Client.AreaID == 0x)">
          </If>



          <If Condition="(Me.Position.X &lt; )">
         </If>
          <If Condition="(Me.Position.Y &lt; )">
         </If>
           <If Condition="(Me.Position.Z &lt; )">
         </If>


            <JumpTo     QuestId="1" JumpRotation="" 
                            
                            End 


         <If Condition="(Me.AdvancedClass == AdvancedClass.Sage)">
         </If>
         <If Condition="(Me.Class == CharacterClass.Consular)">
         </If>
 
            <If Condition="Me.Level &lt; 10">
                <Grind GrindRef="" While="Me.Level &lt; 10" />
            </If>
            
            <UserDialog Title="Test" Message="insert issue here" />


            <ForceVendor VendorType="Train" />
            <ForceVendor VendorType="Repair" />

I piggyback taxi's and wonka's a lot... you don't have to, but if you don't, you need to use the me.position.x y z's
 

Attachments

Last edited:
Status
Not open for further replies.
Back
Top