kinnay / NintendoClients

Python package to communicate with Switch, Wii U and 3DS servers
MIT License
537 stars 63 forks source link

Some fields are unexpectedly disabled when nex.version >= 40000 #126

Open Coxxs opened 2 months ago

Coxxs commented 2 months ago

If I'm understanding correctly, when nex.version >= 40000, a field with nex.version >= 30800 and revision >= 3 should still be enabled. However, in the currently generated code, some fields are unexpectedly disabled when nex.version >= 40000.

Example: When nex.version = 41000 and revision = 0, these fields are end up being disabled: user_password, refer_gid, user_password_enabled, system_password_enabled https://github.com/kinnay/NintendoClients/blob/50c68c207a04f955b4ccbee4f0f8b80b5288663e/nintendo/nex/matchmaking.py#L361-L370

kinnay commented 2 months ago

Nice catch! I think the problem is that Nintendo has reset the revision number back to 0 in the 4.0.0 release... otherwise there would be no issues. Do you have an idea how we can fix this properly?

Coxxs commented 2 months ago

I thought about this today, but didn't come up with a good solution... Maybe it can be written like this in .proto, but I'm not sure if this can be parsed easily in generate_protocols.py

image_2024-04-12_15