So far stuff is working after lots of mistakes, but the one thing I think that wont get fixed easily is the Time Out contract. Looking around for solutions but it comes down to the cr and interrupting telegraphs. If anyone has a solution so far let me know.
Ya some will have an easier time like engis but im trying it on various chars medic and esper seem to have the hardest time and so I am looking for those kind of creatures so that they can have a chance to complete it. my profile is almost ready for the tweaking like vendors and randomizing but I am running into looping my profile. I don't know what command to give my while function so that it will just repeat itself. Ive been trying <While Condition="not IsQuestUnknown()" /> and other variations of it but it gives me,
<While Condition="not IsQuestUnknown(9937)" /> (Line #2)Microsoft.Scripting.ArgumentTypeException: Invoke() takes exactly 2 arguments (1 given)
Do you have any suggestions on how to make a profile loop itself? Sorry for being noob I'm trying to learn this quickly to get these things rolling out.
<While Condition="1 == 1">
</While>
Something is wrong with my profile I can get it to read the loop and the first conditions I put on it but it doesn't see the conditions inside of it. What am I doing wrong?
<While Condition="1 == 1" >
<Interact Name="Protostar Contract Dispenser" CreatureId="69721" X="-3316.129" Y="-886.6698" Z="-569.249" MapId="22" RunOnce="true" />
<If Condition="Buddy.Contracts.IsAtContractBoard" >
<If Condition="Buddy.Contracts.Accept(Buddy.Contracts.ContractType.Pve, 1)" />
</If>
<If Condition="HasQuest(9937)" >
<While Condition="not IsQuestObjectiveComplete(9937)" >
<Interact Name="" CreatureId="" X="" Y="" Z="" MapId="" RunOnce="True" />
<CSIAction YesNoOrder="Y" DelayInputMs="500" />
<Wait Time="1" />
<MoveTo Name="" CreatureId="" X="" Y="" Z="" MapId="" />
<Grind Condition="not IsQuestObjectiveComplete(9937, 0)" >
<Grind Name="" CreatureId="" X="" Y="" Z="" MapId="" />
<GrindArea >
<Hotspot X="" Y="" Z="" Timeout="" Range="" Name="" />
</GrindArea>
</Grind>
</While>
<While Condition="IsQuestObjectiveComplete(9937)" >
<Interact Name="" CreatureId="" X="" Y="" Z="" MapId="" RunOnce="True" />
<CSIAction YesNoOrder="Y" InputDelayMs="500" />
<Wait Time="1" />
<MoveTo Name="Protostar Contract Dispenser" CreatureId="69721" X="-3316.129" Y="-886.6698" Z="-569.249" MapId="22" />
<Interact CreatureName="Protostar Contract Dispenser" CreatureId="69721" X="4051.677" Y="-796.9938" Z="-2394.372" MapId="51" RunOnce="true" />
<If Condition="Buddy.Contracts.IsAtContractBoard" >
<If Condition="Buddy.Contracts.Complete()" />
</If>
</While>
</If>
</While>
<Grind Condition="not IsQuestObjectiveComplete(9937, 0)" >
<Grind Name="" CreatureId="" X="" Y="" Z="" MapId="" />
<GrindArea >
<Hotspot X="" Y="" Z="" Timeout="" Range="" Name="" />
</GrindArea>
</Grind>
You mean with tab spaces into the function above it? It is I just don't know how to post in a code box like you have soz xD
<Grind Condition="not IsQuestObjectiveComplete(9937, 0)" >
<Grind Name="" CreatureId="" X="" Y="" Z="" MapId="" />
<GrindArea >
<Hotspot X="" Y="" Z="" Timeout="" Range="" Name="" />
</GrindArea>
</Grind>
<Grind Condition="not IsQuestObjectiveComplete(9937, 0)" CreatureId="" />
<GrindArea>
<Hotspot X="" Y="" Z="" Timeout="" Range="" Name="" />
</GrindArea>
</Grind>
<Profile Name="Contract" Author="King">
<While Condition="1 == 1" >
<Interact Name="Protostar Contract Dispenser" CreatureId="69721" X="-3316.129" Y="-886.6698" Z="-569.249" MapId="22" RunOnce="true" />
<If Condition="Buddy.Contracts.IsAtContractBoard"/>
<If Condition="Buddy.Contracts.IsAccepted(9883)"/>
<If Condition="HasQuest(9883)">
<While Condition="Buddy.Contracts.IsAccepted(9883)">
<Interact CreatureId="67480" CreatureName="Ship to Crimson Badlands" MapId="51" X="4035.109" Y="-803.212036" Z="-2312.685" RunOnce="True" />
<Wait Time="1"/>
</While>
</If>
</While>
</Profile>
Loading profile: D:\Users\<User>\Desktop\Wildbuddy\Profiles\Contracts.xml
Profile =Contracts= (version 0.0.0.0) by King loaded!
Setting game spell cast behavior to Normal
[string "?"]:7: attempt to index global 'xPvYzVFZ_Rc' (a nil value)
Setting game spell cast behavior to Normal
[string "?"]:7: attempt to index global 'xPvYzVFZ_Rc' (a nil value)
Just trying to learn some more of the basic of code writing if anyone is willing to help me out and explain what im doing wrong it would be highly appreciated.
My goal is. Move to Contract Board and Interact > Select and Accept Quest > Move to and Interact with Teleport
Code:<Profile Name="Contract" Author="King"> <While Condition="1 == 1" > <Interact Name="Protostar Contract Dispenser" CreatureId="69721" X="-3316.129" Y="-886.6698" Z="-569.249" MapId="22" RunOnce="true" /> <If Condition="Buddy.Contracts.IsAtContractBoard"/> <If Condition="Buddy.Contracts.IsAccepted(9883)"/> <If Condition="HasQuest(9883)"> <While Condition="Buddy.Contracts.IsAccepted(9883)"> <Interact CreatureId="67480" CreatureName="Ship to Crimson Badlands" MapId="51" X="4035.109" Y="-803.212036" Z="-2312.685" RunOnce="True" /> <Wait Time="1"/> </While> </If> </While> </Profile>
Error
Code:Loading profile: D:\Users\<User>\Desktop\Wildbuddy\Profiles\Contracts.xml Profile =Contracts= (version 0.0.0.0) by King loaded! Setting game spell cast behavior to Normal [string "?"]:7: attempt to index global 'xPvYzVFZ_Rc' (a nil value) Setting game spell cast behavior to Normal [string "?"]:7: attempt to index global 'xPvYzVFZ_Rc' (a nil value)
<Profile Name="Contract" Author="King">
<While Condition="1 == 1" >
<!-- Contract Pick Up -->
<Interact Name="Protostar Contract Dispenser" CreatureId="69721" X="-3316.129" Y="-886.6698" Z="-569.249" [B][U]MapId="22"[/U][/B] RunOnce="true" />
[B][U]<If Condition="Buddy.Contracts.IsAtContractBoard"/>[/U][/B]
[B][U]<If Condition="[B][U]Buddy.Contracts.IsAccepted(9883)[/U][/B]"/>[/U][/B]
<!-- Do Contract -->
<If Condition="HasQuest(9883)">
<While Condition="Buddy.Contracts.IsAccepted(9883)">
<Interact CreatureId="67480" CreatureName="Ship to Crimson Badlands" [B][U]MapId="51"[/U][/B] X="4035.109" Y="-803.212036" Z="-2312.685" RunOnce="True" />
<Wait Time="1"/>
</While>
</If>
</While>
</Profile>
<While Condition="1 == 1" >
<Interact Name="Protostar Contract Dispenser" CreatureId="69721" X="-3316.129" Y="-886.6698" Z="-569.249" MapId="51" RunOnce="true" />
<!--Tier 1-->
<If Condition="Buddy.Contracts.Accept(9947)" />
<If Condition="Buddy.Contracts.Accept(9952)" />
<If Condition="Buddy.Contracts.Accept(9937)" />
<If Condition="Buddy.Contracts.Accept(9936)" />
<If Condition="Buddy.Contracts.Accept(9983)" />
<If Condition="Buddy.Contracts.Accept(9950)" />
<If Condition="Buddy.Contracts.Accept(9881)" />
<If Condition="Buddy.Contracts.Accept(9885)" />
<If Condition="Buddy.Contracts.Accept(9880)" />
<!--Tier 2-->
<If Condition="Buddy.Contracts.Accept(9939)" />
<If Condition="Buddy.Contracts.Accept(9894)" />
<If Condition="Buddy.Contracts.Accept(9938)" />
<If Condition="Buddy.Contracts.Accept(9951)" />
<If Condition="Buddy.Contracts.Accept(9935)" />
<If Condition="Buddy.Contracts.Accept(9895)" />
<If Condition="Buddy.Contracts.Accept(9948)" />
<If Condition="Buddy.Contracts.Accept(9940)" />
<If Condition="Buddy.Contracts.Accept(9890)" />
<If Condition="Buddy.Contracts.Accept(9911)" />
<If Condition="Buddy.Contracts.Accept(9914)" />
<If Condition="Buddy.Contracts.Accept(9913)" />
<!--Tier 3-->
<If Condition="Buddy.Contracts.Accept(9891)" />
<If Condition="Buddy.Contracts.Accept(9953)" />
<If Condition="Buddy.Contracts.Accept(9892)" />
<If Condition="Buddy.Contracts.Accept(9910)" />
<If Condition="Buddy.Contracts.Accept(9893)" />
There is something I've been struggling to figure out from the profiles available on the forums.
How do I make it so if the bot crashes i can reload it and carry on from where it was without having to go back to thayd?
<Profile>
<!-- Start up stuff (Includes, Connections, References, etc) -->
<While Condition="1 == 1">
<!-- Do a quest if you have it. -->
<While Condition="IsQuestAccepted(####)">
<!-- Go to location for quest -->
<!-- Do quest -->
</While>
<!-- Do another quest if you have it. -->
<While Condition="IsQuestAccepted(####)">
<!-- Go to location for quest -->
<!-- Do quest -->
</While>
<!-- Return to Thyad -->
<!-- Hand In Quest -->
<!-- Pick up new quest -->
</While>
</Profile>
<If Condition="(not IsQuestFinished(1234) && MapId"Thayd")">
<MoveTo Range="1" X="123" Y="123" Z="123" MapId="Thayd" />
<MoveTo QuestId="9913" Range="1" X="123" Y="123" Z="123" MapId="Thayd" />
<Interact CreatureId="12345" CreatureName="SHIP" MapId="Thayd" X="123" Y="123" Z="123" RunOnce="true" />
<Wait Time="2"/>
<CSIAction YesNoOrder="Y" DelayInputMs="500" />
</If>
<Else If Condition="(not IsQuestFinished(1234) && MapId="Contract Area") >
<Wait Time="1"/>
<MoveTo QuestId="" Range="1" X="" Y="" Z="" MapId="" />
<Grind CreatureIds="" Condition="not IsQuestFinished()" >
<GrindArea>
<Hotspot X="" Y="" Z="" Timeout="750" Range="250" />
<Hotspot X="" Y="" Z="" Timeout="750" Range="250" />
<Hotspot X="" Y="" Z="" Timeout="750" Range="250" />
</GrindArea>
</Grind>
</If>
Is it possible to get something like this to work or am i asking too much from the profile tags at this moment?
SOLVED!
Code:<If Condition="(not IsQuestFinished(1234) && MapId"Thayd")"> <MoveTo Range="1" X="123" Y="123" Z="123" MapId="Thayd" /> <MoveTo QuestId="9913" Range="1" X="123" Y="123" Z="123" MapId="Thayd" /> <Interact CreatureId="12345" CreatureName="SHIP" MapId="Thayd" X="123" Y="123" Z="123" RunOnce="true" /> <Wait Time="2"/> <CSIAction YesNoOrder="Y" DelayInputMs="500" /> </If> <Else If Condition="(not IsQuestFinished(1234) && MapId="Contract Area") > <Wait Time="1"/> <MoveTo QuestId="" Range="1" X="" Y="" Z="" MapId="" /> <Grind CreatureIds="" Condition="not IsQuestFinished()" > <GrindArea> <Hotspot X="" Y="" Z="" Timeout="750" Range="250" /> <Hotspot X="" Y="" Z="" Timeout="750" Range="250" /> <Hotspot X="" Y="" Z="" Timeout="750" Range="250" /> </GrindArea> </Grind> </If>
Ahhh dont worry i see how obvious this is now
<!-- Do EXPEDITION Contract -->
<If Condition="HasQuest(1234)">
<While Condition="Buddy.Contracts.IsAccepted(1234)">
<If Condition="not IsQuestFinished(1234)">
<If Condition="not Matchmaking.IsQueued">
<MatchmakingQueue GameId="1234" FindOthers="false" AsGroup="false" IgnoreIfNotLeader="true" />
</If>
<If Condition="Matchmaking.IsGamePending">
<MatchmakingJoin />
<Wait Time="3" />
<CSIAction YesNoOrder="Y" DelayInputMs="500" />
</If>
<Else If Condition="(not IsQuestFinished(1234) && MapId="Contract Area") >
<Wait Time="1"/>
<MoveTo QuestId="" Range="1" X="" Y="" Z="" MapId="" />
<Grind CreatureIds="" Condition="not IsQuestFinished()" >
<GrindArea>
<Hotspot X="" Y="" Z="" Timeout="750" Range="250" />
<Hotspot X="" Y="" Z="" Timeout="750" Range="250" />
<Hotspot X="" Y="" Z="" Timeout="750" Range="250" />
</GrindArea>
</Grind>
</If>
Hey Angully and DD, thank you both for this back and forth! This is is definitely helping me piece together my own contract profile. Quick question to either of you, can the above section be modified from a world location to an expedition location with the following? I'm theorizing and can't test currently:
Code:<!-- Do EXPEDITION Contract --> <If Condition="HasQuest(1234)"> <While Condition="Buddy.Contracts.IsAccepted(1234)"> <If Condition="not IsQuestFinished(1234)"> <If Condition="not Matchmaking.IsQueued"> <MatchmakingQueue GameId="1234" FindOthers="false" AsGroup="false" IgnoreIfNotLeader="true" /> </If> <If Condition="Matchmaking.IsGamePending"> <MatchmakingJoin /> <Wait Time="3" /> <CSIAction YesNoOrder="Y" DelayInputMs="500" /> </If> <Else If Condition="(not IsQuestFinished(1234) && MapId="Contract Area") > <Wait Time="1"/> <MoveTo QuestId="" Range="1" X="" Y="" Z="" MapId="" /> <Grind CreatureIds="" Condition="not IsQuestFinished()" > <GrindArea> <Hotspot X="" Y="" Z="" Timeout="750" Range="250" /> <Hotspot X="" Y="" Z="" Timeout="750" Range="250" /> <Hotspot X="" Y="" Z="" Timeout="750" Range="250" /> </GrindArea> </Grind> </If>
<!-- Instanced Contract -->
<While Condition="IsQuestAccepted(1234)">
<!-- Travel to location -->
<While Condition="not GameManager.CurrentWorldId == 1234">
<MatchmakingQueue GameId="1234" FindOthers="false" AsGroup="false" IgnoreIfNotLeader="true" />
<Wait Time="2" />
<MatchmakingJoin />
<LoadScreen />
<While />
<!-- Kill Stuff -->
<Kill Condition="IsQuestAccepted(1234)" ... />
</While>
dd I didn't think you could do anything with expeditions because the nav server wouldn't see anything. is it possible? if so I'm not sure how cause when i try it tells me the nav server can't find anything.