tylerbrawl / Galaxy-Plugin-Rockstar

MIT License
69 stars 7 forks source link

Red Dead Redemption 2 Not Showing As Owned #160

Open finkleroy opened 2 years ago

finkleroy commented 2 years ago

The games I've owned for years show as being owned with the Galaxy plugin. Yesterday, I used the Rockstar launcher to redeem a key for the ultimate edition of Red Dead Redemption 2. The redemption was successful, and I was able to use the Rockstar launcher to download and install the game, but Galaxy still doesn't show it as being owned or installed. I've restarted Galaxy and disconnected and reconnected the Rockstar plugin, but to no avail. I have no idea if this issue only affects Red Dead Redemption 2, or only the ultimate edition of the game, or all new games that are purchased/redeemed for the Rockstar launcher.

agerard57 commented 2 years ago

Same

tylerbrawl commented 2 years ago

I've done a little investigating, and it seems like Rockstar has changed the output of their log file. For years at this point, the Rockstar plugin for Galaxy 2.0 read the log file to determine which games the user has available. It was a hacky solution, but it basically worked.

Their new log file format, however, does not output the list of owned games. (It does output a list of installed games, but that's not particularly useful in this case.) However, it does mention the following API endpoint for getting the user's owned games list:

https://rgl-prod.ros.rockstargames.com/launcher/11/LauncherServices/App.asmx/GetDefaultApps?accessToken=

Visiting this endpoint in a browser shows that the returned XML file basically contains the data which we are looking for. However, it requires specifying a string parameter representing some accessToken used to authenticate the user, and I have no idea which token they are using and how to get it.

Figuring this out is going to require more reverse-engineering than simply looking at a log file. I might actually have to pull out the disassembler for this one. I'm no master with x86 assembly, and considering all of the other things I need to take care of in my personal life, I expect finding a solution to this will take an especially long time.

If anybody with reverse-engineering and/or network analysis knowledge wants to lend a hand here, I'll be more than grateful.

evlo commented 1 year ago

https://scapi.rockstargames.com/profile/getprofile?nickname=<nickaname> returns

{
    "viewerRockstarId": ,
    "accounts": [
        {
                "gamesOwned": [
                    {
                        "id": 13,
                        "name": "RDR2",
                        "defaultPlatform": "ps4",
                        "platform": "ps4",
                        "lastSeen": "2019-11-29T21:54:23.93"
                    },
                    {
                        "id": 9,
                        "name": "LAN",
                        "defaultPlatform": "ps3",
                        "platform": "ps3",
                        "lastSeen": "2015-09-19T11:11:43.46"
                    },
                    {
                        "id": 11,
                        "name": "GTAV",
                        "defaultPlatform": "pc",
                        "platform": "pc",
                        "lastSeen": "2015-04-22T20:00:57.05"
                    },
                    {
                        "id": 10,
                        "name": "MP3",
                        "defaultPlatform": "pc",
                        "platform": "pc",
                        "lastSeen": "2014-08-31T20:01:39.88"
                    }
                ],

But it does not say la noire, but lan, mp3 = max payne 3, etc. Also needs to be called in authenticated session, dunno if it is possible to store all the cookies etc. after user logs in in python

Anyway I have installed Release - v0.5.15 from this repo and it jsut works so i guess this is actually no longer relevant and could be closed