PDA

View Full Version : EQFriends consolidation tool


salimoneus
12-03-2014, 03:12 AM
Tired of having your friends list be out of sync between all your toons? You know that you added your buddy's new necro alt to one of your toons, but were you on one of your several mules at the time, or perhaps was it your main?

Now you can eliminate all the guesswork and manual editing of character files, trying to keep a dozen or more files in sync. EQFriends is here to help!

It's a pretty straight forward interface, and once a couple basic steps are completed it's basically a single click operation to sync all your friends at once. It can also sync your ignore lists with a simple mode switch. Here is what the interface looks like:


http://i.imgur.com/27cMfEJ.png


Configure and Usage

To get it configured initially, simply set the EQ installation folder, then select a Server, and EQFriends will load up all the character files for that server, and generate a complete list of unique friends in the right box for all the selected characters. Pressing the Update button will set the new friends list for the selected characters.

The application can be switched to operate on the ignore lists for the same character files simply by changing the mode selector from Friends to Ignored. Everything else will work the same.

By default it will pre-select all characters files in the left box for the active Server, but you can change the character selections and perform updates on whichever characters desired. For instance I could change the selection to only Tondor and Tenedor and it would only show friends contained in both of those character files. Pressing the Update button would set the friends list for only those two characters. However most people will probably just want to use the default behavior of having all characters selected, but the flexibility is there:


http://i.imgur.com/eb1FPy4.png


Limitations

Since the EQ client only supports up to 100 friends or ignores, pressing Update will pop an error message if there are more than 100 friends in the right list. If this occurs simply go through the list of friends and delete enough so that there are no more than 100, and then perform the Update again. When there are more than 100 friends in the list, the Total will be highlighted in red to indicate that deletions are necessary. You can see below I have too many friends in my list, so I have selected one for deletion and can delete it by hitting the Delete key:


http://i.imgur.com/UWSVfPX.png


Allowing for the ability to selectively delete stale friends from the list is the main reason I decided to write this as an interface app, as opposed to a simple automated script or program which just truncates the list. I would prefer to decide which names should get removed instead of having them chosen for me.


Backups and Errors

If the Create Backups option is enabled, it will create backup copies of all character files before any change are made. This option is enabled by default, and I would suggest leaving it enabled to allow for a simple copy restore. The backup files are stored in the EQFriends_Backups folder under the EQ installation directory.

The tool will write all runtime errors to the EQFriends.err file in the same folder as the program itself. If you are having some issues or the tool does not seem to be working please PM me the contents of this file so I can investigate.


Preferences

The application does save your preferences, so in between each run it will remember your EQ Install folder, selected Server, and Backup option. It will start up with everything loaded as it was when last used, and allow for a "single click" update.


Technology and Download Links

This tool requires Microsoft .NET Framework 4 (http://www.microsoft.com/en-us/download/details.aspx?id=17851) so if you do not have that please install using the link provided.

I am providing the complete C# source code, built with VS2010, as well as a zip file containing a Win32 executable. On Windows7 it will save your settings to an XML file in the c:\users\myusername\AppData\roaming\EQFriends folder, and the location will vary on other versions of Windows. It is open source code with no viruses or ads, nothing but the code.

Latest release on GitHub: https://github.com/salimoneus/EQFriends/releases/latest

I hope someone finds this tool useful. Feel free to post feedback and/or any issues you may have.

salimoneus
12-03-2014, 09:41 PM
Made a minor update to the release, same download links.

salimoneus
12-05-2014, 11:38 PM
Updated release allows for multi-selection in the friends list on the right.

salimoneus
01-06-2015, 05:05 AM
Added Copy/Paste buttons to friends list, useful for friend copies between servers, or to another install of EQ in a different folder.

As a result the friend count was relocated to the title bar.


http://oi60.tinypic.com/4repug.jpg

salimoneus
01-10-2015, 01:33 AM
Added color indicator to friends list (yellow instead of white) when it detects a merge is needed:


http://oi57.tinypic.com/2s0fkli.jpg

Grimjaw
01-10-2015, 02:22 AM
Good work! I just used it to consolidate all of my lists.

Some quick feedback:


- Upon launch, I receive the following error message. The error message gets written to a file called EQFriends.err in the launch directory.

System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Users\removed\AppData\Roaming\EQFriends\userSe ttings.xml'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at EQFriends.Form1.ReadConfigData()



- You should provide the ability to clean-up (aka delete) old character files. Such as old toons, ones you logged into one time, toons on old servers, etc)


- Did you test to see if the 100 limit is coded into the titanium client? What happens if you try adding more manually into the file? The client doesn't know they exist?


- Can you make it check & prevent it from adding a player to its own list (eg: prevent Mark from being added to Marks own friends list, when it was copied over from Janes list). This occurs when people play on shared/friends toons, and then also have that toon on their friends lists, thus having both a friend entry and also a friend list for that toon.

salimoneus
01-10-2015, 03:20 AM
Good work! I just used it to consolidate all of my lists.


I'm glad it worked well for you!



Some quick feedback:


- Upon launch, I receive the following error message. The error message gets written to a file called EQFriends.err in the launch directory.

System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Users\removed\AppData\Roaming\EQFriends\userSe ttings.xml'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at EQFriends.Form1.ReadConfigData()



It's normal to receive that message the first time the application is run, as the config file will not exist yet. It should not appear again once the config file is created. I believe I made that particular error a "silent" error so that it does not display a popup window, and only log to the file. Although technically it really isn't an error. I should probably add a check to see if the file exists first instead of letting it get logged as a "file not found" exception, to eliminate any confusion there. Lazy programmers :) In any case it's harmless and can be ignored.



- You should provide the ability to clean-up (aka delete) old character files. Such as old toons, ones you logged into one time, toons on old servers, etc)



That's an interesting idea. Although I'm not sure if I want this app to be responsible for such a task. In general I'm not a big proponent of deleting files if there isn't a very good reason to do so, especially files that I did not create myself. I do see some utility in such a feature however, and it seems worthy of consideration.




- Did you test to see if the 100 limit is coded into the titanium client? What happens if you try adding more manually into the file? The client doesn't know they exist?



Yes this is a hard limit imposed by the EQ client unfortunately.




- Can you make it check & prevent it from adding a player to its own list (eg: prevent Mark from being added to Marks own friends list, when it was copied over from Janes list). This occurs when people play on shared/friends toons, and then also have that toon on their friends lists, thus having both a friend entry and also a friend list for that toon.

This sounds like a good idea, I'll add this to the list of enhancements.

Thanks for the feedback! It's always interesting to hear how other people make use of a tool in different ways.

salimoneus
01-14-2015, 04:26 PM
Minor change - now using more distinct colors when update needed

salimoneus
03-07-2015, 02:51 PM
To clear up some confusion about the friends count and how that works, here is a screen showing where the friends total was moved to (title bar):


http://i60.tinypic.com/bf2mfc.jpg



Since there are more than 100 friends between the 2 toons I have selected, if I try to do an Update it will pop a messagebox telling me I need to delete some and bring the total to 100 or less:


http://i58.tinypic.com/73krj4.jpg


To make it more clear, whenever there are over 100 combined friends I could probably change the background color of the friends list to something else to indicate an error condition, perhaps Red. Right now there is just White (all files in sync) and Yellow (files out of sync).

I'll play around with this a bit and get an update in.

salimoneus
03-10-2015, 03:01 AM
Updated list with red background to indicate too many combined friends:


http://i61.tinypic.com/9h5j55.jpg

kingsBlend
03-10-2015, 04:26 AM
Nice work :D Gonna download and check it out

wycca
03-10-2015, 09:40 AM
Just wanted to say thanks, this rocks.

salimoneus
04-12-2015, 03:11 PM
Thanks for the feedback. Still working on a couple past requests, namely preventing a toon from having itself added as a friend. It's not quite as straight forward as it sounds, due to the merge detection functionality, but it's definitely doable. Should be able to take a look at that shortly.

Clark
04-12-2015, 08:30 PM
Cool idea, but looks overly complex.

salimoneus
04-12-2015, 10:07 PM
Cool idea, but looks overly complex.

Granted the tool can be used in more complex ways (operating on just a subset of toon files, support for merging friends from multiple EQ installs, etc), but it will default to simple mode where it will just update all friends from the selected server.

The setup is really pretty simple, and is only done the first time the program is run:

1) select the EQ install folder
2) select a sever from the list

After that it's really just a matter of running the program and clicking Update if it detects an update it needed.

I do see how the interface could appear a bit daunting to someone only wanting to run in "simple" mode. Perhaps I could offer a simple mode on one tab, and an advanced mode on another tab, so by default you would get a cleaner looking screen that has only basic controls and information. I do tend to lean towards designing things to be more powerful and flexible, but at the expense of usability for some people.

Anyway, thanks for the feedback, it's always appreciated. I will ponder adding modes to the app when I get a chance.

salimoneus
04-13-2015, 12:16 AM
The main issue with making a more basic interface is when there are more than 100 total combined friends, some friends must be removed before the files can be updated.

Sure you could code it as others have done so that the program picks friends to delete on it's own, but I prefer to let the user have control over which friends get removed from the list.

It was mostly for this reason that the interface was designed and works as it currently does. Adding a simple mode is probably still worth consideration though, many users may never even hit the 100 friends cap, and even if they do it should be easy enough to temporarily switch to advanced mode to remove some.

eisley
04-13-2015, 12:24 AM
Amazing. Thanks a ton

maskedmelon
04-13-2015, 09:25 AM
Spiffy, gonna have to DL this when I get home ^^ ty

Faited
04-13-2015, 09:34 AM
Really nice tool! Thank you for doing this Salimoneus! Haven't used it yet but as a fellow developer I can appreciate the hard work involved & the gift to the community.

salimoneus
04-14-2015, 12:12 AM
Was able to get the modes in without too much trouble.

Now there are two modes, Basic and Advanced. Basic mode only operates on the friends list, and has a minimal information panel with just the most important details. The only thing you can do in this mode is perform an Update if recommended. The program still need to be configured the first time it is run as described in previous posts, but after that it's as simple as clicking Update if recommended.

There are the three different states the program can detect while in Basic mode:


1) No Update Needed - this is pretty straight forward, it just means all your character files are in sync, and nothing needs to be done...

http://i59.tinypic.com/vi4b4.jpg




2) Update Recommended - this means that the program has detected an Update should be performed to sync the character files...

http://i58.tinypic.com/11l1wrq.jpg




3) Deletions Required - this means you have over 100 combined friend, and must switch to Advanced mode to delete enough so an Update can be performed...

http://i58.tinypic.com/11bjivl.jpg




If the Advanced mode is selected, it will look and work exactly as it did before, with full capability to update only selected character files, or copy/paste friends from one toon to another or one installation folder to another, etc...

http://i57.tinypic.com/wmbl0x.jpg



Hopefully this makes it a little easier to use the tool in a simpler form, while at the same time allow for more complex operations if the user wants to work in Advanced mode.

Program and source code download links on GitHub are always available in the first post of this thread.

salimoneus
04-14-2015, 09:46 PM
Just to clarify something as a couple people have asked about it. This app will make backup copies of all character files being updated, as long as the Create Backups checkbox is checked. This option is checked by default and I would recommend leaving it checked. If backups are enabled the app will create a folder under your EQ install folder called EQFriends_Backups and store the backup character files there in dated folders so they can be easily found and restored if desired.

To restore a character file, quit EQ, then simply copy one or more of the character files from a dated backup folder to your EQ install folder, then restart EQ. You should then have all friends restored as they were on that date.