• You've discovered RedGuides 📕 an EverQuest multi-boxing community 🛡️🧙🗡️. We want you to play several EQ characters at once, come join us and say hello! 👋
  • IS THIS SITE UGLY? Click "RG3" at the very bottom-left of this page to change it. To dismiss this notice, click the X --->
  • The results are in, 🎆🎉🎆 congratulations 🎆🎉🎆 to all the authors in the 3rd Annual "EverQuest Software Awards"!

Question - Achievements TLO? (1 Viewer)

Joined
Apr 3, 2019
RedCents
412¢
Is there a TLO for achievements? Or another way to access it programmatically?
There is a Task TLO but I think that is only for quests, not achievements.
this did not work
/echo ${Task["The Artisan's Wares"].Title}

Specifically I thought it would be helpful for the "Artisan Wares" quest, also for finding which collectables you are missing.
 

Sic

Nihil ᛗ
Moderator
Joined
May 5, 2016
RedCents
13,574¢
Is there a TLO for achievements? Or another way to access it programmatically?
There is a Task TLO but I think that is only for quests, not achievements.
this did not work
/echo ${Task["The Artisan's Wares"].Title}

Specifically I thought it would be helpful for the "Artisan Wares" quest, also for finding which collectables you are missing.
nah, no achievement tlo - currently you have to scan through the windows
 
Joined
Jun 7, 2020
RedCents
2,376¢
@freeferli you are raising an interesting question.

This is something I looked into not that long ago.
I was interested in both Factions and Achievements.

Factions; if the window is opened during the game session the characters faction information is available to query quickly in a macro.

Achievements; whilst it looks similar, is alas not. Opening the window is not enough to get it there.
The menu bar on the left side must be clicked on to open a subsection of achievements, started by clicking the category title and then click one of the subordinate categories to it. E.g. Tradeskill; Quests, Baking, Blacksmithing. Heros Journey; Progression, Advancement, Special. etc.

The Achievements that can then be scraped, are limited to those loaded from that section only.

To make matters worse, and it does get worse.

Macro code can open / close the windows, thats not a problem.
It can send a click event to the Achievement window, and click in that category panel.
But, from what I have seen so far - I am not able to specifically target that click, where i want it.
There is one category "object" it has not children objects, its sibling is not a category to navigate over.

The click opens a top level category, about half way down the dozen categories listed on the window.
Manually scroll down, and use the same "click" code, it opens whatever is visible "half way" down the window at the new scroll position.
i.e. it doesnt know where to click, so just clicks middle of that large vertical rectangle.

The structure of the achievement categories is in a TreeView, and i havent seen any method to process it.
 
Joined
Jun 7, 2020
RedCents
2,376¢
Pictures give the idea better than words.

With regards this command, entered into chat window:
/invoke ${Window[Achievementswnd].Child[ACH_Main_Layout].FirstChild.LeftMouseUp}

achieve invoke click.png

The intial view of categories is on left; and the right hand side is that "half way down" that is visible, being "clicked".
Repeat the click, it collapses the category "everquest" back up again.
 
Joined
Jun 7, 2020
RedCents
2,376¢
Some more investigation inputs and outputs.


/echo ${Window[Achievementswnd].Child[ACH_Main_Layout].FirstChild.Name}
- ACH_Categories

/echo ${Window[Achievementswnd].Child[ACH_Main_Layout].FirstChild.Type}
- TreeView

/echo ${Window[Achievementswnd].Child[ACH_Main_Layout].FirstChild.Children}
-false

/echo ${Window[Achievementswnd].Child[ACH_Main_Layout].FirstChild.Siblings}
-true

/echo ${Window[Achievementswnd].Child[ACH_Main_Layout].Child[ACH_Categories].Name}
- ACH_Categories

/echo ${Window[Achievementswnd].Child[ACH_Main_Layout].Child[ACH_Categories].Type}
- TreeView

/echo ${Window[Achievementswnd].Child[ACH_Main_Layout].Child[ACH_Categories].Children}
-false

/echo ${Window[Achievementswnd].Child[ACH_Main_Layout].Child[ACH_Categories].Siblings}
-true

/echo ${Window[Achievementswnd].Child[ACH_Main_Layout].Child[ACH_Categories].Next.Name}
- ACH_AchievementLayout



If you use MQ2HUD, you can wave your cursor over the screen items and it can tell you the name of the object the cursor passes over.
The other source, is reading the XML documents and can see the structure of the windows.
 
Joined
Jun 7, 2020
RedCents
2,376¢
EQUI_AchievementsWnd.xml

From that xml documents, the following pictures help explain the nested layout, and why the various /echo where done in the previous listing.

AchievementsWnd
EQUI_AchievementsWnd - AchievementsWnd.png

ACH_Main_Layout
EQUI_AchievementsWnd - ACH_Main_Layout.png

ACH_Categories
EQUI_AchievementsWnd - ACH_Categories.png


You can see the parent have subordinate "pieces" that are like children structures to access.
That is until get to the bottom, and find ACH_Categories does nto have any.

That is where I hoped there would be several of them, but there arent.

other structures in windows, that appear like lists can be walked, or accessed by an array index.
As it stands, i see no way or information for poking these TreeViews.


That about sums up what I have found with regards Achievements information available via MQ2.
 
Joined
Jun 18, 2014
RedCents
384¢
It's still referenced as a list but we have no way yet to move though a treeview. I was messing with it last week but stuck trying to select things in it
 
Joined
Jun 7, 2020
RedCents
2,376¢
It's still referenced as a list but we have no way yet to move though a treeview. I was messing with it last week but stuck trying to select things in it
Oh I know that pain.

I got stuck, and head banging off the keyboard / desk trying to figure it out.


For anyone interested, the post I made also on these forums to discuss this same topic is here.
In there Id also looked at the MQ2 source.

From the source, MQ2Main/EQClasses.h:
  • class CTreeView : public CListWnd
  • class CListWnd//ok Look... this SHOULD inherit CXWnd but doing so... calls the constructor, and we dont want that... so... : public CXWnd
.. as I tried to find what properties it would have that could try output.
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Top