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
Useobject profile
MoveTo profile
Grinding Profiles:
These just Grind, simple as that.
Actual Grinding Profile that works:
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
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
^^ 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
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
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!
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
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.
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)
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
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 < 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 < 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 < 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 < )">
</If>
<If Condition="(Me.Position.Y < )">
</If>
<If Condition="(Me.Position.Z < )">
</If>
<JumpTo QuestId="1" JumpRotation=""
End
<If Condition="(Me.AdvancedClass == AdvancedClass.Sage)">
</If>
<If Condition="(Me.Class == CharacterClass.Consular)">
</If>
<If Condition="Me.Level < 10">
<Grind GrindRef="" While="Me.Level < 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: