Coder Social home page Coder Social logo

galaxy-integration-ffxiv's People

Contributors

friendsofgalaxy avatar rzetko avatar umbyumbreon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

galaxy-integration-ffxiv's Issues

Uninstalling game doesnt work

Hey,

currently attempting to uninstall the game using the plugins uninstall_game method through Galaxy uninstall game button will fail.

2019-10-14 16:23:17,734 - root - INFO - Handling notification: method=uninstall_game, params={'game_id': 'final_fantasy_xiv_shadowbringers'}
2019-10-14 16:23:17,843 - root - ERROR - Task exception was never retrieved
future: <Task finished coro=<FinalFantasyXIVPlugin.uninstall_game() done, defined at C:\Users\User\AppData\Local\GOG.com\Galaxy\plugins\installed\galaxy-integration-ffxiv-1.1.1 (1)\plugin.py:148> exception=TypeError("'NoneType' object is not iterable")>
Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\GOG.com\Galaxy\plugins\installed\galaxy-integration-ffxiv-1.1.1 (1)\plugin.py", line 149, in uninstall_game
    self._game_instances[0].delete_game()
  File "C:\Users\User\AppData\Local\GOG.com\Galaxy\plugins\installed\galaxy-integration-ffxiv-1.1.1 (1)\ffxiv_localgame.py", line 22, in delete_game
    subprocess.Popen(ffxiv_tools.get_uninstall_exe(), creationflags=0x00000008, cwd = self._dir, shell=True)
  File "D:\obj\Windows-Release\37win32_Release\msi_python\zip_win32\subprocess.py", line 775, in __init__
  File "D:\obj\Windows-Release\37win32_Release\msi_python\zip_win32\subprocess.py", line 1119, in _execute_child
  File "D:\obj\Windows-Release\37win32_Release\msi_python\zip_win32\subprocess.py", line 523, in list2cmdline
TypeError: 'NoneType' object is not iterable
2019-10-14 16:23:18,539 - root - DEBUG - Received 55 bytes of data
2019-10-14 16:23:18,540 - root - INFO - Handling request: id=96, method=ping, params={}

I see that there is a difference between what the get_uninstall_exe() method looks for in registry and what i have in mine

image

Hope this helps

Integration does not detect portable installation, asks to uninstall

This may be an issue on Galaxy itself and not specifically this integration, but Galaxy is asking me to install FFXIV and when I click the "Install" button, the installer asks me if I want to uninstall my game. I have it installed as a portable program (it's in my user folder, C:\Users\me\Games), not through Steam or Program Files.

Suggestion: Add Steam-installed FFXIV via this integration

This might be a bit of a special use case, but I bought FFXIV through Steam and yet launch it outside of Steam (don't want to have the Steam client running in the background constantly).

Trying to integrate that into GOG Galaxy, and also having this integration installed, this results in FF XIV being detected twice:

  1. Through Steam, the button says 'Play', clicking it launches Steam then FF XIV. As expected.
  2. Through FF XIV (this integration), button says 'Install', clicking it launches the normal FF XIV installer. I haven't tried yet but I heavily suspect it'd tell me after installation that I cannot log in my Steam-bound account.

What I'd basically want is a way to manually add my Steam-installed FF XIV through this integration so that it is launched with the -issteam-flag to prevent the Steam client from booted alongside it.

Would that be possible?

Exception on owned games if game not fully installed

Hello,

If a user downloads final fantasy installer but didn't finish downloading the game itself then plugin will recognize it as installed (a registry entry is created i guess) but it will throw an exception on owned games because the folder structure is not as expected

2019-11-25 12:46:43,343 - root - INFO - Handling request: id=8, method=import_local_games, params={}
2019-11-25 12:46:43,381 - root - DEBUG - Sending data: {"jsonrpc": "2.0", "id": "8", "result": {"local_games": [{"game_id": "final_fantasy_xiv_shadowbringers", "local_game_state": 1}]}}
2019-11-25 12:46:43,381 - root - DEBUG - Received 68 bytes of data
2019-11-25 12:46:43,381 - root - INFO - Handling request: id=9, method=import_owned_games, params={}
2019-11-25 12:46:43,443 - root - ERROR - Unexpected exception raised in plugin handler
Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\GOG.com\Galaxy\plugins\installed\ff\modules\galaxy\api\jsonrpc.py", line 187, in handle
    result = await callback(*bound_args.args, **bound_args.kwargs)
  File "C:\Users\User\AppData\Local\GOG.com\Galaxy\plugins\installed\ff\modules\galaxy\api\plugin.py", line 152, in method
    result = await handler(*args, **kwargs)
  File "C:\Users\User\AppData\Local\GOG.com\Galaxy\plugins\installed\ff\plugin.py", line 115, in get_owned_games
    dlclist = [ item for item in os.listdir(dlc_folder) if os.path.isdir(os.path.join(dlc_folder, item)) ]
FileNotFoundError: [WinError 3] The system cannot find the path specified: 'd:\\Program Files (x86)\\SquareEnix\\FINAL FANTASY XIV - A Realm Reborn\\game\\sqpack\\'
2019-11-25 12:46:43,445 - root - DEBUG - Sending data: {"jsonrpc": "2.0", "id": "9", "error": {"code": 0, "message": "Unknown error", "data": "[WinError 3] The system cannot find the path specified: 'd:\\\\Program Files (x86)\\\\SquareEnix\\\\FINAL FANTASY XIV - A Realm Reborn\\\\game\\\\sqpack\\\\'"}}
2019-11-25 12:46:43,446 - root - DEBUG - Received 65 bytes of data
2019-11-25 12:46:43,446 - root - INFO - Handling request: id=10, method=import_friends, params={}

image

Tbh i think that owned game status should not be based on local files and in the case of a plugin for a single game its fine to simply report it as owned from the get go (without dlcs - from what i see galaxy doesnt react to dlc information in any way right now).

If you can't find the dlc ownership through endpoint then its completely reasonable to do self.add_game() for the same id and title with additional dlc information once you find them locally (since its an additional info).

Lastly it would be best to check if path exists whenever you do such operations.

FOG Fork Autoupdate Request

Hey,

we're planning on creating a fork/autoupdate system with selected plugins. This would allow us to create a list of curated and reviewed plugins which could be of use to GOG Galaxy people.

Of course you will be credited as the creator and developer of the plugin in the fork readme and possibly other places.

Before we do that we need to ask you to create a fog_release branch which would contain only your plugin code, manifest.json and a requirements.txt file (without 3rdparty directories). For Github releases, we will include whole directory where manifest.json is placed and build dependencies directly there. This is for easier code verification. Code for repo synchronization can be found here: https://github.com/FriendsOfGalaxy/galaxy-integrations-updater

So in your case the branch could have an example structure of:

html/your-html-files.html
your-python-files.py
manifest.json
requirements.txt
README.md
LICENSE

just without the modules directory

Support searching for character instead of pasting ID

This is partially a concession for free trial players, since they don't have access to Lodestone.

I personally got around this using XIVAPI, a third party API, to search for my character and got the ID from that, though it's not particularly user-friendly if you're not familiar with APIs.
The specific endpoint to use would be /character/search.

Art from Shadowbringers?

Why does this integration use art from the original FFXIV instead of the newer art from the Shadowbringers page on Square's site?

It seems weird to use art from past versions of an MMO, using the newest art just makes more sense to me. Square Enix's store page has a format not too different from the actual game pages in GOG Galaxy.

XIV Meteor icon as the Galaxy "source" icon

Thanks for getting this integration for GOG, much appreciated.

Would be nice to get the Meteor symbol added in as a source icon if possible? Currently the only game I have appearing with a blank source.

Hopefully not too hard to integrate!

Plugin doesn't dynamically detect that a game was installed

Hey,

if i connect the plugin without having FFXIV previously installed and then install it through 'Install' in Galaxy Client then the plugin won't send information to Galaxy that the game status changed to Installed until the next client restart.

Similar thing happens if the game was uninstalled while plugin was running. The state won't be updated until user restarts the client.

I think it would be best to check the game installation status from time to time and report it using self.update_local_game_status() method.

Hope this helps.

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.