Skip to content

Getting your plugin listed in ACT

EQAditu edited this page Apr 24, 2023 · 6 revisions

Intro

The main download page of the Advanced Combat Tracker website lists a number of parsing plugins and more general plugins. Each of these can be downloaded directly by ACT using the Startup Wizard or Get Plugins button. This page is a description of how to get a 3rd party plugin listed in these places for ACT users to find more easily. Using these methods also allows usage of ACT's APIs for version checking and automatic updates.

To prevent abuse and/or misconfiguration, there is no self-serve method of getting listed. You can send me an email(found in the About tab of ACT), send me a PM on the ACT Forums or maybe even find me on Discord(EQAditu#2691).

Required Info

There are a few basic things I need to know to list the plugin properly...

  • The display name of the plugin (to show)
  • A short description of the plugin (to show)
  • If the plugin is intended for a specific game audience (FFXIV, EQ2, etc)
  • Hosting method (if your plugin is very large or very popular, GitHub may be necessary)
    • Hosted by the ACT website and updated using FTP (or)
    • Hosted by your public GitHub repository and updated using Releases
  • Method for users to report issues or find information
    • ACT Forum post for the plugin (or)
    • GitHub Repository/Issues page
  • Your nickname to serve as author credit

Packaging

If your plugin is large or contains more than one file, you will want to ZIP it for distribution. ACT's Unzip() method will preserve folder paths when extracting, so you may wish to put numerous files in a subfolder inside of the ZIP.

Startup Wizard / Get Plugins windows

The save path for plugins is Path.Combine(ActGlobals.oFormActMain.AppDataFolder.FullName, "Plugins") which by default is %APPDATA%\Advanced Combat Tracker\Plugins; this may be altered by the -portable switch. If the download is a ZIP file and there are no folders in the ZIP, ACT will not create any nor will it remove any. If two different archives put the same file in the root folder of a ZIP, one will be overwritten in the Plugins folder. If the ZIP is named MyPlugin.zip, ACT will first look for MyPlugin.dll to enable as a plugin. Otherwise ACT will attempt to load and enable any applicable assembly it finds inside of the ZIP. This usually works fine, but will sometimes fill the error log with failed attempts.

Updates

Updates are handled by plugin code and can be more flexible. See the Code Examples below.

Available Plugin API Methods

Once hosted, several ACT API methods become available.

Hosting Details

  • If the plugin is hosted on the ACT website
    • PluginGetRemoteDateUtc() gets the timestamp from the FTP uploaded file.
    • PluginGetRemoteVersion() gets a version string from a *.version file that must be placed next to and named after the plugin file. Such as plugin.dll.version.
  • If the plugin is hosted on GitHub
    • PluginGetRemoteDateUtc() gets the latest release(checked once per 3 mins) and uses the updated time of the asset. (the asset must maintain the same index each release)
    • PluginGetRemoteVersion() gets the latest release(checked once per 3 mins) and uses the release tag name as the version string.
    • PluginGetGithubApi() gets the cached response(JSON) from the GitHub APIs that's stored on ACT's website.

Final Implementation

Once you have configured your plugin with the ID that is given, you may wish to test things before the listing goes public on the ACT website. At first, the ID is invisible but functional. Once everything is ready, the ID will be made public and the plugin will appear on the Downloads page and within ACT where applicable. To update your plugin, simply replace the files on the FTP server or make a new release on GitHub. The rest is automatic.