DCUO Character Name Tracker Tool

Discussion in 'Oracle’s Database (Guides)' started by Superskull85, Feb 14, 2016.

  1. Superskull85 Devoted Player

    Link: DCUO Character Name Tracker

    Overview

    This is a Google Sheet that will allow you to track various characters names and character data. It can be used for simply stat updates (for example PvE CR and skill points) or, its main use, to track activity.

    Activity is tracked by watching the hash data each character has. This data changes whenever the character is "saved" and it allows a tool to track character in-game activity. It is not popular in larger apps due it requiring the creation and maintenance of a database storing the character id and hash for that character. It also requires fairly constant updating/pings in order for the activity information to be accurate. This is not easily manageable for large datasets while maintaining a lower hosting cost. However in a smaller dataset (such as a personal one) this is typically manageable. Google Sheets provides a way to conveniently store this data.

    Alternatively you can also track alias character names, powerset and leagues. This can be helpful to keep track of name hoping, powerset hoping or league hoping friends.

    Usages

    This tool can be used to:
    • Keep track of your own characters progression without needing to manually search or login to the game
    • Keep track of your league outside of the game and see who is active regularly or to simply track progression rates
    • Track the roles and character name changes of your friends. If you ever wondered which roles your friend on your friends list could play you can use this tool to keep track. Or you can you can lookup an unrecognized name and see what your friends used to be named. May be helpful if another reclaim or merge were to happen again
    • Track names that you would like to have but are currently taken. By using alias names you can figure out when a name becomes available again daily
    • Simply lurk someone for your trollish needs. :D
    Instructions

    I have provided a fairly comprehensive list of instructions on the index of the spreadsheet. In summary:
    1. Open the sheet and save a copy to your Google Account. Create one first if you don't have one.
    2. Follow the instructions under How to Setup and Use on the Index sheet
    3. Read the Index sheet thoroughly to figure out how to craft and use the spreadsheet
    4. Read the Google Scripts to figure out how to extend the spreadsheet's functionality if you have JavaScript development knowledge
    I have added some error checking but some errors/unexpected functionality may still happen. I tried to limit this occurring however. Also if you are to extend the functionality please note that you could start by making several optimizations to code structure and lookup techniques (for example further limiting which data you retrieve from Census) if you wish to do so. I may go back and perform some of these changes at some point.

    You will need your own Service ID to make Census requests. I cannot provide one as I would not be able to control who is requesting data. If I were to ever get a request to throttle data using a Service ID I provide I would not be able to do so since this is an open source client tool. It is not hard to obtain a Service ID. I have provided instructions on the Index sheet.

    Further Features

    Although it is fairly useable as is there are some key features I have yet to implement:
    • Notifications - Would be using for a Watchlist sheet. Would update through email, IFTTT, SMS, Android, etc. if, say, a character on your Watchlist changed their name. This would alert you to potentially claim that name.
    • Estimated Role - It is possible to estimate what role a character is in by comparing their stats (mainly Health) to certain tier spans. Before I can do this I need to create a lookup table containing their tier spans. I have templated a spot in the League and Friends sheets where this data could go.
    • Track Role Based CR - After estimating a character's role it would be possible to track a character's CR for each role. Would be useful for Owned, League and Friends sheets. It is also a fairly requested feature in DCUO in terms of Friends and League.
    • Options Sheet - Would include, but not limited to, push updated characters to the top, automatically sort characters by an attribute, self-updating attributes/realtime updates, notification preferences, etc.
    Some features I probably won't implement myself but others possibly could:
    • Allow access to more character data such as stats, feats, etc.
    • Implement a progression rates. You could add alias columns to data such as PvE CR and Last Recorded Save so that you can track how often PvE CR is upgraded per character. You will want to throttle how many aliases are stored in order to make the spreadsheet manageable.
    • You could create an Averages sheet that would average your various sheets in terms of PvE CR, # of aliases or total characters. You can make these changes in the data sheets itself however you will need to do it in a column without a predefined name.
    • Feats - It would be possible with the creation of a new capture routine to track feats as well. I provide the basics you need to access the Census API under the DCUO Census Calls script. You will just need to create the appropriate functions in order to call from either CaptureCharacters() under the DCUO Name Tracker script or through your own custom function (if using your own function you will need to exclude more sheets from the top under CaptureCharacters()).
    • Some applications regarding feats include: figuring out the feats most needed by your league or owned characters, get a list of feats you need to complete, see if a character you are tracking needs a particular feat. Note: I kind of have an interesting in tracking feats. However my implementation would be uncertain.
    Just some ideas regarding what you could do. I have made it fairly simple to reuse and add properties and tweaks to the spreadsheet.

    Additionally you could translate the Google Scripts to VBA (or somehow use them directly in Excel) so that they can be used in Excel and post the Excel sheet for others (or use for yourself). I don't have Excel access to even consider doing this at the moment.

    Feel free to make suggestions but I may not implement them quickly. I am currently working on a "what would be best for my use" principle at present.

    Thoughts?

    What do you think? Would you actually use a spreadsheet like this? Let me know what you think below! :D
    • Like x 4
  2. Polymerase Well-Known Player

    Nice, took me a minute to find the Character Field (Usage, Step 1).

    I've manually populated the Owned sheet with Tracking Name and World, then initialised/captured data:


    [IMG]

    Any plans to save/log and graph character progression?
  3. Superskull85 Devoted Player

    Oh sorry, I'll get that instruction fixed. In terms of graphing character progression I wasn't planning on it initially. I was mainly going to use it to track and notify me if someone changed their name. I don't have a notification routine in just yet so I want that to be implemented first. After that the features I mentioned in Further Features. But who knows after that.

    What do you mean exactly by save/log? Do you mean in relation to character progression or as a separate feature? Just want to make sure I understand.

    Edit: Fixed the character name instruction and some other naming errors.
  4. Polymerase Well-Known Player



    Something like a sparkline in one of the cells:
    https://support.google.com/docs/answer/3093289?hl=en
    just to track progression (CR/SP) over time - useful to see any character plateaus :)
  5. Superskull85 Devoted Player

    Gotcha. Just wanted to make sure your "save/log" comment didn't refer to a separate feature. ;) It's actually a good idea and I have an idea on how to implement it. I might actually go ahead and implement it before I do estimated roles. I want to get some notifications in first though since that was main reason I created the spreadsheet. lol
    • Like x 1
  6. Molholt Level 30

    Pretty cool, thanks for sharing!
  7. Superskull85 Devoted Player

    From here on out I'll label each update I make by a version. If you retrieve the spreadsheet when you read and update post with the "Version" headline you will be getting that version. However: you will not be able to manually select a version to download. I am doing this so that I can more easily track my own changes and help with any migration issues.

    Version 1.00

    I was able to add in a basic notification system. It currently supports email notifications but it does write all notifications to the spreadsheet so that you can use a service like IFTTT to send out notifications instead. However selecting iFTTT as a notification type currently doesn't change the functionality of the script. It is just cosmetic/reminder.

    A new Send Notifications menu item is available in addition to a new function for automatic updates. I'd recommend letting it update at the same rate as your automatic captures.

    In addition I changed:
    • Made sheet detection dynamic when capturing/initializing. This will allow you to move about the sheets like Index or the new Options and Notifications. In the previous version be sure not to move the Index sheet at all. If you do you will cause an error in the script. I forgot to mention this initially.
    • The Index sheet was renamed to Instructions
    • Error checking to make sure League sheets are titled correctly to prevent errors. Please note that currently if you don't title a League page correctly it will be treated as a regular character list and each try will be handled separately. So if you Initialized a League and then removed the "< >" brackets you may be retrieving data for up to 500 characters.
    In response to points 2 and 3 I will be changing up how the spreadsheet finds a character data sheet. This will mean that character data sheets will have to be named similar to a League sheet. I am currently thinking "List:<Chosen Name>" as the format.

    I don't have a migration tool to help migrate to a newer version at the moment. For the most part updates should just involve a script update. However for this version and the next version you will need to do some manual changes in the meantime.

    For Version 1.00 you will need to:
    1. Copy the new version of the spreadsheet to your account
    2. Open it.
    3. Make a copy of the Options sheet and put it in your previous sheet
    4. (optional) Copy the new Instructions content and rename your Index sheet. The new Instructions reclaim space from the old cell Service ID was placed, adds a warning to the page regarding renaming required sheets and adds SendNotificaitions as an option for automatic updates.
    5. Go to Tools -> Script editor...
    6. Find the script "DCUO Name Tracker.gs" and copy it's contents to the same file in your previous spreadsheet
    7. Find the script "DCUO Census Calls.gs" and copy it's contents to the same file in your previous spreadsheet
    Or you can copy the data from your previous spreadsheet to your new spreadsheet. Whichever is less hassle free for you.

    Let me you if you encounter any problems upgrading.

    Planned Updates
    • An upgrade tool
    • More flexible use of sheets. Redo character data sheets to include the title format or "List:<Chosen Name>"
    • Character progression as suggested by Polymerase
    Bugs:
    • When a character leaves a league the League page will record their data from the previous entry. This will be resolved in the next version.
    I'll likely do all of this in a single update to avoid a third manual upgrade for current users.
  8. Abel Well-Known Player

    Thank you very much SuperSkull for putting this together and making it available. The effort is appreciated.
  9. Superskull85 Devoted Player

    No problem. It is actually allowing me to piece together a smaller feature for a larger app so it is really helpful for me too. :)

    Have you used to the spreadsheet yet? Have any troubles/see any quirks?
  10. Nightcrawler Legionnaire

    I've been using this. Great job! Thank you!
  11. Tzalim Level 30

    Thanks so much SuperSkull! However, I followed all the instructions but I can't get the 'Send Notifications' tab under the "Tracker Updates". I'm getting a error that's saying "Failed to send email: no recipient". I know I have my E-mail and the Service ID in the Options tab. Am I doing something wrong?
  12. Nightcrawler Legionnaire

    With the introduction of the XBox server, the tool no longer works. I tried to rename the Worlds on the sheets and in the script to "US PS," etc. But that doesn't seem to work.

    Any solutions to this problem?
  13. Nightcrawler Legionnaire

    Ok, I looked up the worlds to see what they are actually.

    But, fixing them in the script doesn't seem to fix the error. Help?

    Changed the function to this...
    Code:
    function DCUOCensusGetWorldID (name)
    {
      if (name == "US")
      {
        Logger.log("CrossPlay US World Returned")
        return 2
      }
      else if (name == "EU")
      {
        Logger.log("CrossPlay EU World Returned")
        return 4
      }
        else if (name == "XBOX US")
      {
        Logger.log("Xbox US World Returned")
        return 5001
      }
        else if (name == "XBOX EU")
      {
        Logger.log("Xbox EU World Returned")
        return 5002
      }
      else
      {
        Logger.log("Unknown World Returned")
        return 0
      }
    }
    
  14. Superskull85 Devoted Player

    Hi Nightcrawler,

    Sorry for the longer wait (you may have noticed that I still active on the forums, etc.). I wanted to make sure I could make whatever changes were needed since I have made a lot of changes in my "dev" sheet that I haven't released yet (due to not having a complete upgrade tool, etc.).

    Anyhow I added the worlds to my check list and updated the data validation I put in place on the spreadsheet on my end. From there I initialized the character I was trying to lookup and it brought it up just fine. What kind of error are you getting? If it's to do with data validation add "XBOX US" and "XBOX EU" to the list and you should be fine. Let me know if you need instructions regarding how to do this.

    Edit: I made the necessary changes to include usage of the Xbox servers on the public sheet. There are 2 things you will need to do in your local sheet:

    1 - Add the code you mentioned. Which you said you did so I'll assume you did not remove it.
    2 - Update the Data Validation for each World cell for each sheet (tedious but you can copy a cell you have it in, right click the cell(s) you want it in, select Paste Special and then select Paste data validation only)
    3 - Use a valid character name that appears on XBOX US or XBOX EU. (This on should be implicit but wanted to include it just in case the character name is not valid, etc.)

    I'll note this as a potential feature that the user controls via Options. However I doubt more servers will be added down the line anyway.

    Let me know if that works in your sheet. Assuming you did not make any other code changes in your sheet that is all you should need to do.
  15. Superskull85 Devoted Player

    Hey there! I actually must of missed your post. Are you able to show me a screenshot of your Options sheet? Feel free to PM me it in case you don't want to show your email address. As long as the email name "before the @" is valid I don't need to see that information. I just want to verify that you put it in the appropriate location and the domain is valid in Google's eyes (I don't know of any restrictions though I can look into it if there is).

    If you have resolved the issue since you posted no need to reply back unless you had feedback to share. :)
  16. Nightcrawler Legionnaire

    I actually did want you said to do in your post (updated the validations), but was still coming up with an error while trying to "Capture" data (worked fine for Initializing).

    So, I opted in making a fresh copy from your updated version and everything works perfectly now. So, thank you for the help and the great tool!
  17. Superskull85 Devoted Player

    Ah, ok. I have populated sheets so I'll see if I can reproduce. You may also ran into bugs that I hadn't pushed out fixes for too. I lost a little bit of interest in working on this but I'll see if I can push out a newer version sometime this week. It's definitely far from bullet-proof.

    You're welcome though. :)
  18. MacFuego Active Player

    Hey Superskull85,
    I just wanna say, I love it. Just found it today. If anyone has made any variations for the league search sorting by cr and for feats I would love to see a copy.
    • Like x 1
  19. Tzalim Level 30

    I would like to see something like this too, especially for feats.
  20. Superskull85 Devoted Player

    I do have some still kind of unstable improvements I had made that added automatic sorting potential. I only supported sorting by activity but other sorting methods could easily be added. However you could do your own manual sorting relatively easily. All you would do is select the range you want to (make sure you select the entire row so that you include the hidden columns) and go to Data -> Sort range. Select the column you want to sort by and click ok. Just be careful about the hidden columns like I mentioned specifically: Character ID, Current Hash and Previous Hash.

    As for feats I actually did start a project regarding that too. I never got too much into it though. I put together a system to pull all feat data and organize it just like it is in-game. I also devised a simple way to do a basic "yes or no" check against each feat for each character. It is still a little bit from even a basic production state though. However once I had the automation/manual updating written it would be an easy matter to get these features running with traditional spreadsheet knowledge:
    • Character lookup - to pull which feats a specific character still needs
    • Feat lookup - Which characters still need a specific feat
    • Apply manual attributes such as actual difficulty, location, strategy, etc. Then do lookups on those attributes.
    • Feat totaling/Episode completion.
    And recently I put some time into creating statistics trackers and how that might be setup.
    I can't tell you when I might go back and work on these projects though. I could share updated versions/work in progress files (without service id's) if anyone wanted to optimize/expand on what I was doing. I don't want to share my development files directly since at any point of time I may have my own service id in it.

    Edit: I also have a basis for a base item tracker. I've been building up some attributes for it (since Census lacks a lot of it) and using it for my personal collection. I have not applied any code or automation to it just yet but it should be relatively simple to do. I would be willing to share access to a dev copy of that as well if anyone would like to apply autonomy/direct Census information to it. I have saved the Census queries that I get base items from within the sheet and use them to update my listing.

    Anyways thank you for the interest regardless. I know Google Sheets is not exactly the greatest platform for apps like these but it seems to work for what it needs to do within reason and important of all, free.

    P.S. No one has directly asked me because of this tool, or directly from this forum, however I thought I would say it anyways. I will not be adding stuff like this this on a hosted webpage or website any time soon. Nor would I be available to create or update Census fanapps at this time. I have knowledge of the Census API, etc. but don't have the time/interest or funds to dedicate to such things at this time. As is evident by the lack of progress on this specific tool. :)