• Visit Rebornbuddy
  • Classy - Adds a tag to OrderBot to allow Job changing.

    Discussion in 'Plugins' started by Yasuko, Nov 9, 2014.

    1. PureFresh

      PureFresh Member

      Joined:
      Nov 10, 2014
      Messages:
      46
      Likes Received:
      0
      Trophy Points:
      6
      i am in the states
      so i use the english version

      as soon as i press the start / stop button
      it changes job beautifully.

      is just that i cannot go to sleep like that :)

      in the case of the clusters
      there is NO teleporting
      because both miner / botany
      take place in the same area.

      the botany works from 01 AM to 09 AM
      the miner works from 01 PM to 09 PM

      am i putting the command in the right place
      to change jobs ??


      ------------------------------
      <Order>
      <While Condition="True">

      <If Condition="IsTimeBetween(0,11)">
      <If Condition="not IsOnMap(154)">

      <If Condition="Core.Me.CurrentJob != ClassJobType.Botanist">
      <ChangeJob Type="Botanist" />


      </If>
      <TeleportTo Name="Revenant's Toll" AetheryteId="24" />
      </If>
      </If>

      <If Condition="IsTimeBetween(0,11)">
      <TeleportTo Name="Revenant's Toll" AetheryteId="24" />

      <Gather>

      <GatherObject>Unspoiled Mature Tree</GatherObject>
      <HotSpots>
      <HotSpot Radius="1000" XYZ="544.7119, 9.910261, -498.9675" />
      <HotSpot Radius="1000" XYZ="538.89, -5.89, -358.8909" />
      </HotSpots>
      <Slot>4</Slot>

      <GatheringSkillOrder>
      <GatheringSkill SpellName="Field Mastery II" TimesToCast="1" />
      <GatheringSkill SpellName="Blessed Harvest II" TimesToCast="1" />
      </GatheringSkillOrder>
      </Gather>
      <WaitWhile Condition ="IsTimeBetween(0,11)" />
      </If>
      ----------------------------------
       
    2. Sodimm

      Sodimm Member

      Joined:
      Nov 8, 2014
      Messages:
      383
      Likes Received:
      7
      Trophy Points:
      18

      Try This:

      Code:
      <!-- Change Slot Number for required cluster:
      
      1 = Thunder
      2 = Fire
      3 = Wind
      4 = Water
      5 = Ice
      6 = Earth
      
      Mining is 1PM > 4PM; 5PM > 8PM; 9PM > 12AM
      Botany is 1AM > 4AM; 5AM > 8AM; 9AM > 12PM
      
      -->
      <Profile>
      	<Name>[OrderBot] Test Unspoiled Cluster Farm</Name>
      	<KillRadius>80</KillRadius>
      	<Order>
      		<TeleportTo Name="Revenant's Toll" AetheryteId="24" />
      			<While Condition="True">
      				<If Condition="(IsTimeBetween(1,3)) or (IsTimeBetween(5,7)) or (IsTimeBetween(9,11))">
      				<If Condition="Core.Me.CurrentJob != ClassJobType.Botanist">
      				<ChangeJob Type="Botanist" />
      				</If>
      				<Gather while="(IsTimeBetween(1,3)) or (IsTimeBetween(5,7)) or (IsTimeBetween(9,11))">
      					<GatherObject>Unspoiled Mature Tree</GatherObject>
      				<HotSpots>
      					<HotSpot Radius="360" XYZ="544.7119, 9.910261, -498.9675" />
      				</HotSpots>
      					<Slot>4</Slot>
      				<GatheringSkillOrder>
      					<GatheringSkill SpellName="Blessed Harvest II" TimesToCast="1" />
      					<GatheringSkill SpellName="Field Mastery II" TimesToCast="1" />
      				</GatheringSkillOrder>
      				</Gather>
      				</If>
      				<If Condition="(IsTimeBetween(13,15)) or (IsTimeBetween(17,19)) or (IsTimeBetween(21,23))">
      				<If Condition="Core.Me.CurrentJob != ClassJobType.Miner">
      				<ChangeJob Type="Miner" />
      				</If>
      				<Gather while="(IsTimeBetween(13,15)) or (IsTimeBetween(17,19)) or (IsTimeBetween(21,23))">
      					<GatherObject>Unspoiled Rocky Outcrop</GatherObject>
      				<HotSpots>
      					<HotSpot Radius="360" XYZ="304.5188, -2.537387, -541.2041" />
      				</HotSpots>
      					<Slot>4</Slot>
      				<GatheringSkillOrder>
      					<GatheringSkill SpellName="Unearth II" TimesToCast="1" />
      					<GatheringSkill SpellName="Sharp Vision II" TimesToCast="1" />
      				</GatheringSkillOrder>
      				</Gather>
      				</If>
      			</While>
      	</Order>
      </Profile>
      
      It Should do what you require. Node changes location versus time, these locations need to be recorderd. I'm sure there's a set pattern, but I can't find one. The above will work, the rest I leave for you. Do consider adding the Stealth Tag by Kam. After Checking, it stops moving when changing class, this is a routine error I think, i'll look more into it tomorrow.
       
      Last edited: Dec 1, 2014
    3. PureFresh

      PureFresh Member

      Joined:
      Nov 10, 2014
      Messages:
      46
      Likes Received:
      0
      Trophy Points:
      6
      well
      i was exited to see your post

      but

      it still doesnt work
      same problem as before.

      i have to press
      STOP/START (( so that it switches jobs ))
      then i have to
      STOP/START (( the new profile under the new job ))


      is this working for you guys
      auto switching and
      keep going with your script ??

      i even deleted RB
      and downloaded the latest version.

      at the beginning of this thread
      it said "clean installation needed"

      am i supposed to install it somewhere ??
      i just unzip it.
      and the .exe
      is right there.
       
    4. Sodimm

      Sodimm Member

      Joined:
      Nov 8, 2014
      Messages:
      383
      Likes Received:
      7
      Trophy Points:
      18
      I'll be having a look at it today. It works on the first change if not on a gather class, but when it switches for the next time slot, it stops. I think; as I said, that it's something to do with how the bot is handling the class change. I use several routines, so I'll check with just Kupo (As Mastahg said he'd done switching classes in last update). I'll let you know.
       
    5. PureFresh

      PureFresh Member

      Joined:
      Nov 10, 2014
      Messages:
      46
      Likes Received:
      0
      Trophy Points:
      6
      thanks a bunch
       
    6. Yasuko

      Yasuko Member

      Joined:
      Oct 28, 2010
      Messages:
      314
      Likes Received:
      6
      Trophy Points:
      18
      Its this that is causing it. I could have sworn somewhere I read that you shouldnt need to stop/start the bot anymore incase it doesnt notice the change. I'll look into it today.. I'll have to manually have the plugin recognize the change instead of relying on RB to do it, I'll try to have it updated tonight.. its weird that I have not been noticing this on my side.. but I only need to use the plugin like once a week to gather enough items to make SB gear to use through out the week. I apologize for the complications.
       
    7. Zamphire

      Zamphire Member

      Joined:
      May 16, 2013
      Messages:
      349
      Likes Received:
      11
      Trophy Points:
      18
      So I'm using a profile I made to mine both unspoiled mining and botany nodes. It seems to work great for botany, switching classes and everything, however when it gets to the first mining portion it teleports, switches class to Miner and just stands at the atheryite.

      Here's a log snippet for you.

      Code:
      [21:39:35.223 V] Blacklisting 400003AC for 00:00:30 [Type: All] - Reason : So we don't auto target
      [21:39:35.223 N] Gathering ItemName:Spruce Log Chance:95 HqChance:34 Amount:3 RawItemId:5395
      [21:39:36.264 N] Gathering ItemName:Spruce Log Chance:100 HqChance:34 Amount:3 RawItemId:5395
      [21:39:48.133 V] [Poi.Clear] Reason: Node is gone
      [21:39:52.429 D] Requesting path on 155 from <340.4021, 308.287, -268.0278> to <337.7039, 306.35, -289.9108>
      [21:39:52.483 D] Generated path to <337.7039, 306.35, -289.9108> in 00:00:00.0541828 ms
      [21:39:55.962 N] [GatherTag] Reached desired number of loops.
      [21:39:55.962 D] Removed hook [RoutineCombat] dd15c58f-7d86-4678-8e1f-e9d20f0b0e77
      [21:39:55.962 D] Removed hook [PoiAction] 59fc346b-ad70-4b2e-b8cb-2648482e8332
      [21:39:55.962 V] [Poi.Clear] Reason: Current behavior changed to TeleportTo: ZoneId: 0, AetheryteId: 18, Name: Camp Drybone, Force: False, Aetheryte: null, IsDone: False, InCombat: False, QuestId: 0, StepId: 0, PostCombatDelay: 0, QuestName: null, IsDoneCache: False, Behavior: TreeSharp.PrioritySelector, .
      [21:39:55.962 D] Replaced hook [ProfileOrderBehavior_Hook] 7710ab2a-d4e3-423d-8791-2440f57eb0dd
      [21:39:56.214 D] Teleporting to camp drybone
      [21:40:06.057 D] Removed hook [RoutineCombat] 16435448-9701-4652-8e2b-be9f17bdd957
      [21:40:06.057 D] Inserted new hook [TreeStart @0] ff2ea7c3-5434-414a-a219-8c44708f1c35
      [21:40:06.057 V] [Poi.Clear] Reason: Current behavior changed to ChangeJobTag: Type: Miner, IsDone: False, InCombat: False, QuestId: 0, StepId: 0, PostCombatDelay: 0, QuestName: null, IsDoneCache: False, Behavior: null, .
      [21:40:06.057 N] [Classy] - Changing gearset
      [21:40:06.057 N] [Classy] - Found - sending message
      [21:40:06.058 N] [Classy] - message set - should be changed.
      [21:40:06.066 N] [Classy] - OnDone() Called
      [21:40:06.066 D] [POI Set] Type: Gather
      [21:40:06.066 N] [Classy] - Current POI should be set
      [21:40:06.066 D] Added new hook [PoiAction] 6adf3278-365a-48e2-a043-bcf07fad8514
      [21:40:06.066 V] [Poi.Clear] Reason: Current behavior changed to GatherTag.
      [21:40:06.066 D] Replaced hook [ProfileOrderBehavior_Hook] 32e42ff2-f0ed-44b8-a8c4-0fb364eaa938
      [21:40:06.091 D] DoAction Mount 1 0xE0000000
      [21:40:06.383 N] Building Actioncache
      [21:40:06.385 N] Action Name:Sprint Action Id:3
      [21:40:06.385 N] Action Name:Byregot's Ward Action Id:219
      [21:40:06.385 N] Action Name:Prospect Action Id:227
      [21:40:06.385 N] Action Name:Lay of the Land Action Id:228
      [21:40:06.385 N] Action Name:Stealth Action Id:229
      [21:40:06.385 N] Action Name:Preparation Action Id:230
      [21:40:06.385 N] Action Name:Toil of the Mountaineer Action Id:231
      [21:40:06.385 N] Action Name:Solid Reason Action Id:232
      [21:40:06.385 N] Action Name:Deep Vigor Action Id:233
      [21:40:06.385 N] Action Name:Nald'thal's Ward Action Id:234
      [21:40:06.385 N] Action Name:Sharp Vision Action Id:235
      [21:40:06.385 N] Action Name:Sharp Vision II Action Id:237
      [21:40:06.385 N] Action Name:Truth of Mountains Action Id:238
      [21:40:06.385 N] Action Name:King's Yield Action Id:239
      [21:40:06.385 N] Action Name:King's Yield II Action Id:241
      [21:40:06.385 N] Action Name:Unearth Action Id:242
      [21:40:06.385 N] Action Name:Unearth II Action Id:243
      [21:40:06.385 N] Action Name:Lay of the Land II Action Id:291
      [21:40:06.385 N] Action Name:Thaliak's Ward Action Id:293
      [21:40:06.385 N] Action Name:Sharp Vision III Action Id:295
      [21:40:06.385 N] Done building Actioncache
      [21:40:06.385 D] [RoutineManager] Routines have been reloaded. Current class-specific list:
      [21:40:24.827 N] Stopping the bot. Reason:Pushed the stop button.
      [21:40:24.827 D] CurrentBot.Stop()
      [21:40:24.828 N] Connection closed! 192.99.148.87:31214
      [21:40:24.828 D] TreeHooks.Instance.ClearAll()
      [21:40:24.828 D] Navigator.Clear()
      [21:40:24.828 V] [Poi.Clear] Reason: Bot stopped
      [21:40:24.828 D] OnStop event
      [21:40:24.828 D] OnStop Event Invoking
      [21:40:24.828 D] ProfileOrderManager.OnBotStop. Resetting caches.
      [21:40:24.834 N] Bot Thread Ended. Was this requested?
      [21:40:27.782 D] Cannot stop a bot when it is not running.
      I've attached my full log here as well.

      Here's a portion of the profile I'm using to see if I'm using it right.
      Code:
      	<!-- Botany: Coerthas Central Highlands - Spruce Log -->
      	<If Condition="IsTimeBetween(9,11)">
      		<If Condition="Core.Me.CurrentJob != ClassJobType.Botanist">
      			<ChangeJob Type="Botanist" />
      		</If>
      		<If Condition="not IsOnMap(155)">
      			<TeleportTo Name="Camp Dragonhead" AetheryteId="23" />
      		</If>
      		<Gather Loops="1">
      			<GatherObject>Unspoiled Mature Tree</GatherObject>
      			<HotSpots>
      				<Hotspot Z="-429.2352" Y="311.0858" X="290.7672" Radius="500"/>
      				<Hotspot Z="-352.53" Y="306.058" X="393.6922" Radius="500"/>
      				<Hotspot Z="-289.9108" Y="306.35" X="337.7039" Radius="500"/>
      			</HotSpots>
      			<!-- Redo this hotspot -->
      			<Slot>5</Slot> <!-- Spruce Log -->
      			<GatheringSkillOrder>
      				<GatheringSkill SpellName="Leaf Turn II" TimesToCast="1" />
      				<GatheringSkill SpellName="Field Mastery II" TimesToCast="1" />
      			</GatheringSkillOrder>
      		</Gather>
      		<TeleportTo Name="Camp Drybone" AetheryteId="18" />
      	</If>
      	<!-- Mining: Eastern Thanalan - Gold Ore, Coblyn Larva -->
      	<If Condition="IsTimeBetween(9,11)">
      		<If Condition="Core.Me.CurrentJob != ClassJobType.Miner">
      			<ChangeJob Type="Miner" />
      		</If>
      		<If Condition="not IsOnMap(145)">
      			<TeleportTo Name="Camp Drybone" AetheryteId="18" />
      		</If>
      		<Gather Loops="1">
      			<GatherObject>Unspoiled Mineral Deposit</GatherObject>
      			<HotSpots>
      				<Hotspot Z="51.19678" Y="23.01122" X="337.304" Radius="500"/> 
      			</HotSpots>
      			<Slot>5</Slot> <!-- Slot 5 = Gold Ore, Slot 6 = Coblyn Larva -->
      			<GatheringSkillOrder>
      				<GatheringSkill SpellName="Sharp Vision II" TimesToCast="1" />
      			</GatheringSkillOrder>
      		</Gather>
      		<TeleportTo Name="Costa Del Sol" AetheryteId="11" />
      	</If>
       

      Attached Files:

    8. Yasuko

      Yasuko Member

      Joined:
      Oct 28, 2010
      Messages:
      314
      Likes Received:
      6
      Trophy Points:
      18

      Which appears to be the exact same issue the previous person is having as well, I'm looking into it tonight, since I didnt experience the issue on my side.
       
    9. Zamphire

      Zamphire Member

      Joined:
      May 16, 2013
      Messages:
      349
      Likes Received:
      11
      Trophy Points:
      18
      Gotcha. Just wanted to report it as well and possibly add a bit more information. I know information always helps.
       
    10. Sodimm

      Sodimm Member

      Joined:
      Nov 8, 2014
      Messages:
      383
      Likes Received:
      7
      Trophy Points:
      18
      All I know is that when it's started, it's perfect. Yet any and all modification to the profile, when the condition is met and it switches to the 2nd part (Miner) the bot will just idle on the POI: <ChangeClass> tag. It's as if the bot doesn't know it's done, even tho I know your plugin updates the POI. It just sits there, and won't move on to the gather tag.

      I have tried updating the POI to read GatherTag after the change (manually via the console), yet that doesn't kick the bot into reading the gather tag either. So my plan to add a codechunk to force the bot to read the next bit is a no go. But then I'm fairly novice and my knowledge of code isn't that great. I keep browsing the namespace tho and trying different things to get it unstuck. But in the end, it might be just how the bot reads the profile that's at fault.
       
      Last edited: Dec 3, 2014
    11. PureFresh

      PureFresh Member

      Joined:
      Nov 10, 2014
      Messages:
      46
      Likes Received:
      0
      Trophy Points:
      6
      we are so close to getting this to work
      just a little line of code.
       
    12. kagamihiiragi17

      kagamihiiragi17 Community Developer

      Joined:
      Jun 24, 2014
      Messages:
      873
      Likes Received:
      25
      Trophy Points:
      0
      A few things I noticed looking at the code:

      You call ResetCachedDone() when you should instead be overriding the protected void OnResetCachedDone().

      That might be part of the problem, but also perhaps you should consider flushing the location as well in OnResetCachedDone()? Doubt that would matter much, but you never know.

      You could also consider adding in a Decorator that checks to make sure the job actually changed to what it expected to be before setting _done to true, just as a safety feature.
       
    13. Yasuko

      Yasuko Member

      Joined:
      Oct 28, 2010
      Messages:
      314
      Likes Received:
      6
      Trophy Points:
      18
      Code:
      string currentJob = Core.Me.CurrentJob.ToString();
      string selectedJob = Enum.Parse(typeof(Enums.ClassJobType), Type, true).ToString();
      
      Code:
      new Decorator(ret => !Core.Me.InCombat && !IsDone && !IsSameJob(currentJob, selectedJob),
      
      Code:
              public bool IsSameJob(string type1, string type2)
              {
                  return (string.Compare(type1, type2, true) == 0);
              }
      
      It does check to make sure that the job is changed, or else the current decorator would continue to fire if they were not equal.

      That could be an issue, I did not notice that at first, Thank you.

      I'm thinking the issue might still be with RB and not recognizing the change, He did mention that stopping/starting the bot is "recommended" when switching classes. I will have to look through to see how to manually reset it as people are doing in custom cr's that support class swapping without restarting RB.. While I was testing this, I did not have to restart the bot when it was switching, so it was personally nothing that I experienced.. When I get home tonight I will try to get an update uploaded.. I've been working on it on my laptop tonight while at work, but its a POS to play ffxiv on.. so i'll have to test it at home on my pc.. Thank you for the suggestions.
       
      Last edited: Dec 3, 2014
    14. kagamihiiragi17

      kagamihiiragi17 Community Developer

      Joined:
      Jun 24, 2014
      Messages:
      873
      Likes Received:
      25
      Trophy Points:
      0
      What I meant was that you set _done to true blindly, just trusting that there was no issues with the SendChat function. I was thinking something like this might be safer, just in general:

      Code:
      return new PrioritySelector(
          new Decorator(ret => Core.Player.CurrentJob.ToString() == selectedJob,
              new Action(r =>
              {
                  Logging.Write("[Classy] - Job changed, ready to exit!");
                  _done = true;
              }
              )
          ),
          new Decorator(ret => !Core.Me.InCombat && !IsDone && !IsSameJob(currentJob, selectedJob),
              new Action(r =>
              {
                  Logging.Write("[Classy] - Changing gearset");
                  binding.TryGetValue(Type, out selecting);
                  Logging.Write("[Classy] - Found - sending message");
                  string message = "/gs change " + selecting;
                  ChatManager.SendChat(message);
                  Logging.Write("[Classy] - message set - should be changed.");
              }
              )
          )
      );
      Also, if you need to start/stop the bot, call ff14bot.TreeRoot.Start() and TreeRoot.Stop(). For most profiles I don't see why that would be a problem.
       
    15. Yasuko

      Yasuko Member

      Joined:
      Oct 28, 2010
      Messages:
      314
      Likes Received:
      6
      Trophy Points:
      18
      Okay, I think I might have it fixed. as kagamihiiragi17 suggested, I added a decorator just for setting _done to true (pretty much a copy/paste from their post because its 3am and I am tired/lazy,, thank you by the way kagamihiiragi17). I also added treeroot.stop in that decorator, set _isdone to true, and called treeroot.start after setting the value. I know this probably is not the correct way to do this, but lets face it ... im new to creating plugins for buddybots, but have been using them for many years now.. if anyone knows of a better way, Please let me know.

      I tested this with a cluster farm clipping that was posted in previous page.. since I did not feel like sitting here the hour to test it.. i made random time conditions in the profile and let the bot run for a little bit. At each timebetween condition, it switched to appropriate class and ran to specific hotspot and waited for the next timebetween condition.. it then changed class and ran to that one.. this is about the extent of the testing that was done so far.. please try it and monitor it and see how it works for you. Updated attachment in OP

      thanks to everyone for input.
       
    16. Sodimm

      Sodimm Member

      Joined:
      Nov 8, 2014
      Messages:
      383
      Likes Received:
      7
      Trophy Points:
      18
      Wonderful. I'll test it out later. I've got the profile ready with stealth activation too, so if all is good, I'll post the profile.
       
    17. PureFresh

      PureFresh Member

      Joined:
      Nov 10, 2014
      Messages:
      46
      Likes Received:
      0
      Trophy Points:
      6
      re-download now

      Classy_1_0_5.zip
      and unzip it ??


      i cant test til later tonight
      but i'll let you know
       
    18. Sodimm

      Sodimm Member

      Joined:
      Nov 8, 2014
      Messages:
      383
      Likes Received:
      7
      Trophy Points:
      18
      Works as described :) heres the profile
       
    19. Zamphire

      Zamphire Member

      Joined:
      May 16, 2013
      Messages:
      349
      Likes Received:
      11
      Trophy Points:
      18
      First off I want to say great work. This plugin is coming along great. Being a new programmer myself I know this stuff can be pretty confusing.

      In the newest version changing jobs is working great, it's not giving me any problems. However, I am having one pretty big issue, and I think it's because of the added TreeStop and TreeStarts.

      Here's the issue.

      Code:
      [13:52:54.503 D] [RoutineManager] Routines have been reloaded. Current class-specific list:
      [13:52:54.503 N] Stopping the bot.
      [13:52:54.503 D] CurrentBot.Stop()
      [13:52:54.503 N] Connection closed! 192.99.148.87:31214
      [13:52:54.503 D] TreeHooks.Instance.ClearAll()
      [13:52:54.503 D] Navigator.Clear()
      [13:52:54.503 V] [Poi.Clear] Reason: Bot stopped
      [13:52:54.503 D] OnStop event
      [13:52:54.503 D] OnStop Event Invoking
      [13:52:54.503 D] ProfileOrderManager.OnBotStop. Resetting caches.
      [13:52:54.552 D] Loading last profile
      [13:52:54.714 N] Loaded profile Mining and Botany: Unspoiled Node Farming
      [13:52:54.795 N] Connection to 192.99.148.87:31214 established.
      
      When the bot starts up again it reloads the profile completely instead of starting it back up where it was. Now maybe this is a problem with how I'm writing my profile and if there's a better way to do it, please tell me. Here's a snippit of my profile.

      Code:
      	<!-- Botany: East Shroud - Kidragora, Trillium Bulb -->
      	<If Condition="IsTimeBetween(21,23)">
      		<If Condition="Core.Me.CurrentJob != ClassJobType.Botanist">
      			<ChangeJob Type="Botanist" />
      		</If>
      		<If Condition="not IsOnMap(152)">
      			<TeleportTo Force="true" Name="Hawthorne Hut" AetheryteId="4" />
      		</If>
      		<Gather Loops="1">
      			<GatherObject>Unspoiled Lush Vegetation Patch</GatherObject>
      			<HotSpots>
      				<Hotspot Z="131.2229" Y="1.075165" X="-380.9028" Radius="500"/>
      			</HotSpots>
      			<Slot>7</Slot> <!-- 6=Kidragora, 7=Trillium Bulb -->
      			<GatheringSkillOrder>
      			</GatheringSkillOrder>
      		</Gather>
      		<TeleportTo Name="Camp Dragonhead" AetheryteId="23" />
      	</If>
      	<!-- Mining: Coerthas Central Highlands - Astral Rock -->
      	<If Condition="IsTimeBetween(21,23)">
      		<If Condition="Core.Me.CurrentJob != ClassJobType.Miner">
      			<ChangeJob Type="Miner" />
      		</If>
      		<If Condition="not IsOnMap(155)">
      			<TeleportTo Name="Camp Dragonhead" AetheryteId="23" />
      		</If>
      		<Gather Loops="1">
      			<GatherObject>Unspoiled Rocky Outcrop</GatherObject>
      			<HotSpots>
      				<Hotspot Z="155.2625" Y="284.1149" X="125.8191" Radius="500"/>
      			</HotSpots>
      			<Slot>6</Slot> <!-- Astral Rock -->
      			<GatheringSkillOrder>
      			</GatheringSkillOrder>
      		</Gather>
      		<TeleportTo Name="Revenant's Toll" AetheryteId="24" />
      	</If>
      	<!-- Botany: Mor Dhona - Grade 4 Carbonized Matter and Elemental Clusters -->
      	<If Condition="IsTimeBetween(21,23)">
      		<If Condition="Core.Me.CurrentJob != ClassJobType.Botanist">
      			<ChangeJob Type="Botanist" />
      		</If>
      		<If Condition="not IsOnMap(154)">
      			<TeleportTo Name="Revenant's Toll" AetheryteId="24" />
      		</If>
      		<Gather Loops="1">
      			<GatherObject>Unspoiled Rocky Outcrop</GatherObject>
      			<HotSpots>
      				<Hotspot Z="-484.7234" Y="-6.061276" X="3337.9405" Radius="500"/>
      			</HotSpots>
      			<!--
      				Slot 0 = Grade 4 Carbonized Matter
      				Slot 1 = Lightning Cluster
      				Slot 2 = Fire Cluster
      				Slot 3 = Wind Cluster
      				Slot 4 = Water Cluster
      				Slot 5 = Ice Cluster
      				Slot 6 = Earth Cluster
      			-->
      			<Slot>5</Slot>
      			<GatheringSkillOrder>
      			</GatheringSkillOrder>
      		</Gather>
      		<If Condition="Core.Me.CurrentJob != ClassJobType.Botanist">
      			<ChangeJob Type="Botanist" />
      		</If>
      
      If you notice there I have three If statements all within the same time frame, because nodes for both jobs spawn in the same time frame some times. What's happening is the bot will move to East Shroud, do it's thing and teleport to Dragonhead, but when it gets there and stops the bot to change classes, when the bot gets turned back on the profile is reread again and it goes right back to East Shroud and starts over as if it's never been there. Normally, if the bot is never stopped, it would just continue down the list at the next stop. What can we do to fix this?
       
    20. kagamihiiragi17

      kagamihiiragi17 Community Developer

      Joined:
      Jun 24, 2014
      Messages:
      873
      Likes Received:
      25
      Trophy Points:
      0
      There's nothing to fix, that's working as intended. When the bot is stopped and started, the entire profile is reevaluated and starts from the first place where it can. In your example, as far as the bot is concerned, once it restarts it hasn't even been to East Shroud, so it goes there again. That's proper behavior. You can change the profile so that the first If is IsTimeBetween(21,22) and the second one is IsTimeBetween(22,23) to make it act the way you want it to.
       

    Share This Page