Giter Club home page Giter Club logo

mapgiltracker's Introduction

icon

FFXIV FATE/Map Gil Tracker

Dynamic XML Badge License GitHub Workflow Status (with event) Dalamud Repo

This plugin aims to simplify reward tracking for FCs who use FATEs/Maps as fundraising events! Simply install it, enable it, and it'll automatically track every chest or sack opened and calculate how much gil each person owes.

Screenshots

image1 image2

Installation

As of writing, this plugin is still in testing and not yet available on the general Dalamud plugin repo. That said, there are two ways you can install test builds onto your client.

Dalamud Testing Repo - Public Betas

As of now, the most official method of installation is via Dalamud's testing channel. Versions distributed via this method are reviewed, tested, and approved by the Dalamud devs, but there still might be some bugs in your experience.

To install a public beta, open the Dalamud Plugin Installer's settings, and under the "Experimental" tab, enable testing builds. After saving, closing, then reopening the installer, the plugin should now be visible in the new "Testing Available" section of the sidebar.

Third-Party Repo - Public Alphas

If you feel like living on the edge and would like to test new features the second they become available, you can install the public alpha via my third-party repo. Versions distributed via this method are generally tested by myself, but because they're only reviewed by one person, are bound to be buggy and may potentially crash your game. Tread lightly!

You can find the page for my repo, which contains instructions on how to use it, here or by clicking on the repo card below.

Card

Development

In order to set up a development environment to work on this plugin, perform the following steps:

  1. Install Visual Studio Code 2022 with C# support
  2. Fork this repo to your account, then clone it to your local machine
  3. Open MapGilTracker.sln in VS2022 and build it
  4. In Dalamud, open the Plugin Installer settings menu
  5. Under the "Experimental" tab, add the full path to the compiled debug DLL under "Dev Plugin Locations"
  6. Profit? (Heh.)

Contributions

Contributions are welcome! I respectfully ask that you follow the contribution guidelines for this project, located in CONTRIBUTING.md. Here's the TL;DR:

  • Pull Requests should be opened against develop. Any PRs opened against master will be denied.
  • If adding a feature, name your branch using the following pattern: f/[short-name].
  • If patching a bug, name your branch using the following pattern: b/[issue-#]-[short-name].
    • If there is no issue associated with the bug you're fixing, please open one before submitting your PR.

License

Distributed under the GNU General Public License v3.0 license. See LICENSE.md for more details.

Acknowledgements

I'd like to say thanks to a few people/teams who have made developing this project a very rewarding experience!

  • The Dalamud Team - For making and maintaining the Dalamud project, and also being helpful throughout the entire development process
  • Azure Infinitum - My FC, who gave me the idea to start this project
  • MajorPainOG - For being my primary tester and for helping me design much of this plugin

mapgiltracker's People

Contributors

azure-agst avatar

Stargazers

Half Eaten Chicken Sandwich avatar  avatar

Watchers

 avatar

mapgiltracker's Issues

Update Report Tab to Table

MajorPainOG — Today at 5:24 PM
ya a tab with all the attendees and amount owed listed to next would be easier for the user to see it quickly and give the amounts out

Also copy support is requested

MajorPainOG — Today at 5:24 PM
you could put a copy button at the end of the row as well or if you really wanted to get deep, a button with a slash /p "username" you owe this "$" amount.

Differentiate between Achievements & Maps

Major brought up a good point when I pitched the idea to him, mainly being the frequent reuse of the FATE popup for other things, like achievements.

It's important to note here that the plugin does not simply keep track of the differences in a player's gil over time. Since this tool explicitly hooks into the "FateReward" addon, it only keeps track of gil earned from sources that trigger said popup. (Only FATEs & Maps, at least to my current knowledge.)

MajorPainOG — Today at 5:00 PM
have you figured out how to seperate the gil earned from achivments?

azure — Today at 5:03 PM
Unsure, but probably? with some work. Essentially the plugin hooks into the FATE reward popup that appears upon opening chests or finishing a FATE and grabs the gil value from there.

MajorPainOG — Today at 5:03 PM
we had another fc membere make one but they could not figure that out

azure — Today at 5:03 PM
I imagine it wouldn't be too hard

MajorPainOG — Today at 5:04 PM
ya, if you could figure that out this plug-in would be very popular

azure — Today at 5:04 PM
Is there an example of an achievement that grants gil? I assume you mean like Hunting Log or Challenge log?

MajorPainOG — Today at 5:04 PM
i ahve asked for it for years in the dal discord
ya, they pop up and say you ahve earned such and such achivement here x gil

The best option here is probably a whitelist for the Title in the Popup's TextNode? I'll need to do some more research and see what all causes that popup to appear.

Make Report Table more concise

  • Show only last 100 unique events sorted by most recent first
  • Hide participants from row
  • Hovering the row shows a tooltip w/ list csv of participants

Add Info Tab

Show the following info:

  • Name
  • Author
  • Version
  • GitHub URL
  • Kofi link

Improve UI

The prototype is rough and could use some polish when I get time.

Modify Config to save per character

Realized this when logging onto Aurelius after doing some fates on Akira. Need to make the record list save per character. Maybe separate files?

Fix Challenge Log & Interrupted Treasure Sack edge case

I mentioned this here:

Just for posterity, I want to theorycraft as to how this bug could reappear. Two points of failure must be met within a 10s timespan:
1.) a player must get gil from an alternate source (i.e. challenge log)
2.) we must get a re-showing of a fate popup for the same amount of gil

The chances of that happening are pretty slim, but that might be an edge case we want to program for. Thoughts: > Upon reading a "Challenge complete" message, ignore the next gil message if possible.

Research Database vs. JSON w/ LINQ

Right now the project is designed as if it were using a database, but instead uses a list with LINQ. I don't like how the data serializes to JSON rn, especially since there could be hundreds (or even thousands) of entries in the file, causing it to balloon in size. Maybe it'd be more efficient (smaller, faster) if we used a database to do a database's job instead.

  • Could help solve #14 by using tables.
  • Could also cause the project to balloon in complexity.
  • Need to do some timing tests in a separate project.

Fix double popup counting

Sometimes FATE rewards in maps will pop up, be interrupted by another chest opening, then show the first one again, causing them to be double counted. We need to figure out how to differentiate between that.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.