From 6e7738881292a4642cf1e7c1229b0e2bc5227283 Mon Sep 17 00:00:00 2001 From: Jonathan Barrow Date: Wed, 6 Dec 2023 02:13:27 -0500 Subject: [PATCH 01/14] subscription: added Subscription protocol docs --- docs/nex/protocols/index.md | 99 ++++++------ docs/nex/protocols/subscription.md | 239 +++++++++++++++++++++++++++++ 2 files changed, 289 insertions(+), 49 deletions(-) create mode 100644 docs/nex/protocols/subscription.md diff --git a/docs/nex/protocols/index.md b/docs/nex/protocols/index.md index 4092ea8..324f759 100644 --- a/docs/nex/protocols/index.md +++ b/docs/nex/protocols/index.md @@ -12,27 +12,27 @@ See also: [RMC Protocol](/docs/rmc) ## Common Protocols -| ID | Protocol | -| --- | ---------------------------------------------------------------- | -| 1 | [Remote log device](/docs/nex/protocols/remote-log-device) | -| 3 | [NAT traversal](/docs/nex/protocols/nat-traversal) | -| 10 | [Ticket granting](/docs/nex/protocols/authentication) | -| 11 | [Secure connection](/docs/nex/protocols/secure-connection) | -| 14 | [Notification events](/docs/nex/protocols/notifications) | -| 18 | [Health](/docs/nex/protocols/health) | -| 19 | [Monitoring](/docs/nex/protocols/monitoring) | -| 20 | [Friends](/docs/nex/protocols/friends) | -| 21 | [Match making](/docs/nex/protocols/match-making) | -| 23 | [Messaging](/docs/nex/protocols/messaging) | -| 24 | [Persistent store](/docs/nex/protocols/persistent-store) | -| 25 | [Account management](/docs/nex/protocols/account-management) | -| 27 | [Message delivery](/docs/nex/protocols/message-delivery) | -| 50 | [Match making (extension)](/docs/nex/protocols/match-making-ext) | +| ID | Protocol | +|----|------------------------------------------------------------------| +| 1 | [Remote log device](/docs/nex/protocols/remote-log-device) | +| 3 | [NAT traversal](/docs/nex/protocols/nat-traversal) | +| 10 | [Ticket granting](/docs/nex/protocols/authentication) | +| 11 | [Secure connection](/docs/nex/protocols/secure-connection) | +| 14 | [Notification events](/docs/nex/protocols/notifications) | +| 18 | [Health](/docs/nex/protocols/health) | +| 19 | [Monitoring](/docs/nex/protocols/monitoring) | +| 20 | [Friends](/docs/nex/protocols/friends) | +| 21 | [Match making](/docs/nex/protocols/match-making) | +| 23 | [Messaging](/docs/nex/protocols/messaging) | +| 24 | [Persistent store](/docs/nex/protocols/persistent-store) | +| 25 | [Account management](/docs/nex/protocols/account-management) | +| 27 | [Message delivery](/docs/nex/protocols/message-delivery) | +| 50 | [Match making (extension)](/docs/nex/protocols/match-making-ext) | ## Nintendo Only | ID | Protocol | -| --- | ----------------------------------------------------------------------------------------------- | +|-----|-------------------------------------------------------------------------------------------------| | 100 | [Nintendo notification events](/docs/nex/protocols/nintendo-notifications) | | 101 | [Friends (3DS)](/docs/nex/protocols/friends-3ds) | | 102 | [Friends (Wii U)](/docs/nex/protocols/friends-wiiu) | @@ -41,6 +41,7 @@ See also: [RMC Protocol](/docs/rmc) | 112 | [Ranking](/docs/nex/protocols/ranking) | | 115 | [Data store](/docs/nex/protocols/datastore) | | 116 | [Debug](/docs/nex/protocols/debug) | +| 117 | [Subscription](/docs/nex/protocols/subscription) | | 119 | [Service item](/docs/nex/protocols/service-item) | | 120 | [Matchmake referee](/docs/nex/protocols/matchmake-referee) | | 121 | [Subscriber](/docs/nex/protocols/subscriber) | @@ -51,41 +52,41 @@ See also: [RMC Protocol](/docs/rmc) ## Game-Specific | ID | Game | Protocol | -| --- | -------------------------- | -------------------------------------------- | +|-----|----------------------------|----------------------------------------------| | 200 | Pokemon Bank | [Shop](/docs/nex/protocols/shop) | | 201 | Super Smash Bros. Ultimate | [Tournament](/docs/nex/protocols/tournament) | ## Not provided by NEX Ubisoft games always use the original Quazal Rendez-Vous library instead of NEX. The following protocols are not implemented by NEX, but may seen in Ubisoft games: -| ID | Protocol | -| --- | ---------------------------------------------------------------------------- | -| 12 | Back end management | -| 16 | [Simple authentication](/docs/nex/protocols/simple-authentication) | -| 17 | Siege | -| 26 | Competition | -| 28 | Client settings | -| 29 | [Ubi account management](/docs/nex/protocols/ubi-account-management) | -| 30 | Geo localization | -| 31 | [News](/docs/nex/protocols/news) | -| 35 | [Privileges](/docs/nex/protocols/privileges) | -| 36 | [Tracking 3](/docs/nex/protocols/tracking-3) | -| 39 | [Localization](/docs/nex/protocols/localization) | -| 42 | [Game session](/docs/nex/protocols/game-session) | -| 44 | Sub account management | -| 45 | IP to location | -| 46 | IP to location admin | -| 47 | Ubi friends | -| 48 | Skill rating | -| 49 | [Uplay win](/docs/nex/protocols/uplay-win) | -| 51 | [Title storage](/docs/nex/protocols/title-storage) | -| 53 | [User storage](/docs/nex/protocols/user-storage) | -| 55 | [Player stats](/docs/nex/protocols/player-stats) | -| 60 | Spark | -| 71 | [Offline game notifications](/docs/nex/protocols/offline-game-notifications) | -| 72 | [User account management](/docs/nex/protocols/user-account-management) | -| 84 | Siege admin | -| ? | [Web notifications storage](/docs/nex/protocols/web-notifications-storage) | -| ? | [Title storage admin](/docs/nex/protocols/title-storage-admin) | -| ? | [User storage admin](/docs/nex/protocols/user-storage-admin) | -| ? | [OLS storage](/docs/nex/protocols/ols-storage) | +| ID | Protocol | +|----|------------------------------------------------------------------------------| +| 12 | Back end management | +| 16 | [Simple authentication](/docs/nex/protocols/simple-authentication) | +| 17 | Siege | +| 26 | Competition | +| 28 | Client settings | +| 29 | [Ubi account management](/docs/nex/protocols/ubi-account-management) | +| 30 | Geo localization | +| 31 | [News](/docs/nex/protocols/news) | +| 35 | [Privileges](/docs/nex/protocols/privileges) | +| 36 | [Tracking 3](/docs/nex/protocols/tracking-3) | +| 39 | [Localization](/docs/nex/protocols/localization) | +| 42 | [Game session](/docs/nex/protocols/game-session) | +| 44 | Sub account management | +| 45 | IP to location | +| 46 | IP to location admin | +| 47 | Ubi friends | +| 48 | Skill rating | +| 49 | [Uplay win](/docs/nex/protocols/uplay-win) | +| 51 | [Title storage](/docs/nex/protocols/title-storage) | +| 53 | [User storage](/docs/nex/protocols/user-storage) | +| 55 | [Player stats](/docs/nex/protocols/player-stats) | +| 60 | Spark | +| 71 | [Offline game notifications](/docs/nex/protocols/offline-game-notifications) | +| 72 | [User account management](/docs/nex/protocols/user-account-management) | +| 84 | Siege admin | +| ? | [Web notifications storage](/docs/nex/protocols/web-notifications-storage) | +| ? | [Title storage admin](/docs/nex/protocols/title-storage-admin) | +| ? | [User storage admin](/docs/nex/protocols/user-storage-admin) | +| ? | [OLS storage](/docs/nex/protocols/ols-storage) | diff --git a/docs/nex/protocols/subscription.md b/docs/nex/protocols/subscription.md new file mode 100644 index 0000000..3870d27 --- /dev/null +++ b/docs/nex/protocols/subscription.md @@ -0,0 +1,239 @@ +--- +layout: post +toc: true +title: Subscription (117) +--- + +## Methods + +| Method ID | Method Name | +|-----------|------------------------------------------------------------------------------------------------------| +| 1 | [CreateMySubscriptionData](#1-createmysubscriptiondata) | +| 2 | [UpdateMySubscriptionData](#2-updatemysubscriptiondata) | +| 3 | [ClearMySubscriptionData](#3-clearmysubscriptiondata) | +| 4 | [AddTarget](#4-addtarget) | +| 5 | [DeleteTarget](#5-deletetarget) | +| 6 | [ClearTarget](#6-cleartarget) | +| 7 | [GetFriendSubscriptionData](#7-getfriendsubscriptiondata) | +| 8 | [GetTargetSubscriptionData](#8-gettargetsubscriptiondata) | +| 9 | [GetActivePlayerSubscriptionData](#9-getactiveplayersubscriptiondata) | +| 10 | [GetSubscriptionData](#10-getsubscriptiondata) | +| 11 | [ReplaceTargetAndGetSubscriptionData](#11-replacetargetandgetsubscriptiondata) | +| 12 | [SetPrivacyLevel](#12-setprivacylevel) | +| 13 | [GetPrivacyLevel](#13-getprivacylevel) | +| 14 | [GetSubscriptionUserFriendList](#14-getsubscriptionuserfriendlist) | +| 15 | [GetPrivacyLevels](#15-getprivacylevels) | +| 16 | [CreateMySubscriptionDataWithNotificationParams](#16-createmysubscriptiondatawithnotificationparams) | +| 17 | [UpdateMySubscriptionDataWithNotificationParams](#17-updatemysubscriptiondatawithnotificationparams) | +| 18 | [ClearMySubscriptionDataWithNotificationParams](#18-clearmysubscriptiondatawithnotificationparams) | + +### (1) CreateMySubscriptionData +#### Request + +| Type | Description | +|-------------------------------------------------|-------------| +| Uint32 | Unknown | +| [SubscriptionData](#subscriptiondata-nulldata) | Param | + +#### Response +This method does not return anything. + +### (2) PostContent +#### Request + +| Type | Description | +|-------------------------------------------------|-------------| +| [SubscriptionData](#subscriptiondata-nulldata) | Param | + +#### Response +This method does not return anything. + +### (3) ClearMySubscriptionData +This method does not take any parameters and does not return anything. + +### (4) AddTarget +#### Request + +| Type | Description | +|---------------------|-------------| +| [List]<[PID]> | Targets | + +#### Response +This method does not return anything. + +### (5) DeleteTarget +#### Request + +| Type | Description | +|---------------------|-------------| +| [List]<[PID]> | Targets | + +#### Response +This method does not return anything. + +### (6) ClearTarget +This method does not take any parameters and does not return anything. + +### (7) GetFriendSubscriptionData +#### Request +This method does not take any parameters. + +#### Response + +| Type | Description | +|---------------------------------------------------------------|--------------| +| [List]<[SubscriptionData](#subscriptiondata-nulldata)> | Friends data | + +### (8) GetTargetSubscriptionData +#### Request +This method does not take any parameters. + +#### Response + +| Type | Description | +|---------------------------------------------------------------|--------------| +| [List]<[SubscriptionData](#subscriptiondata-nulldata)> | Targets data | + +### (9) GetActivePlayerSubscriptionData +#### Request + +| Type | Description | +|--------|-------------| +| Uint32 | Unknown | +| Uint32 | Unknown | +| Uint32 | Unknown | + +#### Response + +| Type | Description | +|----------------------------------------------------------------------------------------------|-------------| +| [List]<[ActivePlayerSubscriptionData](#activeplayersubscriptiondata-subscriptiondata)> | Unknown | + +### (10) GetSubscriptionData +#### Request + +| Type | Description | +|---------------------|-------------| +| [List]<[PID]> | PIDs | + +#### Response + +| Type | Description | +|---------------------------------------------------------------|---------------| +| [List]<[SubscriptionData](#subscriptiondata-nulldata)> | Data for PIDs | + +### (11) ReplaceTargetAndGetSubscriptionData +#### Request + +| Type | Description | +|---------------------|-------------| +| [List]<[PID]> | New targets | + +#### Response + +| Type | Description | +|---------------------------------------------------------------|---------------| +| [List]<[SubscriptionData](#subscriptiondata-nulldata)> | Data for PIDs | + +### (12) SetPrivacyLevel +#### Request + +| Type | Description | +|--------|---------------| +| Uint32 | Privacy level | + +#### Response +This method does not return anything. + +### (13) GetPrivacyLevel +#### Request +This method does not take any parameters. + +#### Response + +| Type | Description | +|--------|---------------| +| Uint32 | Privacy level | + +### (14) GetSubscriptionUserFriendList +#### Request +This method does not take any parameters. + +#### Response + +| Type | Description | +|---------------------|-------------| +| [List]<[PID]> | Friend PIDs | + +### (15) GetPrivacyLevels +#### Request + +| Type | Description | +|---------------------|-------------| +| [List]<[PID]> | PIDs | + +#### Response + +| Type | Description | +|----------------------|----------------| +| [List]<Uint32> | Privacy levels | + +### (16) CreateMySubscriptionDataWithNotificationParams +#### Request + +| Type | Description | +|-------------------------------------------------|-------------| +| Uint32 | Unknown | +| [SubscriptionData](#subscriptiondata-nulldata) | Param | +| Uint32 | Unknown | +| Uint32 | Unknown | +| [String] | Unknown | + +#### Response +This method does not return anything. + +### (17) UpdateMySubscriptionDataWithNotificationParams +#### Request + +| Type | Description | +|-------------------------------------------------|-------------| +| [SubscriptionData](#subscriptiondata-nulldata) | Param | +| Uint32 | Unknown | +| Uint32 | Unknown | +| [String] | Unknown | + +#### Response +This method does not return anything. + +### (18) ClearMySubscriptionDataWithNotificationParams +#### Request + +| Type | Description | +|----------|-------------| +| Uint32 | Unknown | +| Uint32 | Unknown | +| [String] | Unknown | + +#### Response +This method does not return anything. + +## Types +### SubscriptionData ([NullData]) + +| Type | Description | +|-----------|-------------| +| Uint32 | Unknown | +| [qBuffer] | Unknown | + +### ActivePlayerSubscriptionData ([SubscriptionData](#subscriptiondata-nulldata)) + +| Type | Description | +|--------|-------------| +| Uint8 | Unknown | +| Uint32 | Unknown | + +[String]: /docs/nex/types#string +[PID]: /docs/nex/types#pid +[NullData]: /docs/nex/types#data-structure +[List]: /docs/nex/types#list +[qBuffer]: /docs/nex/types#qbuffer From 568c3ca6c7576a07d76611386f3f2bff9ec2a671 Mon Sep 17 00:00:00 2001 From: Jonathan Barrow Date: Wed, 6 Dec 2023 04:04:04 -0500 Subject: [PATCH 02/14] xenoblade: added Ranking patches --- docs/nex/protocols/ranking/index.md | 1 + .../ranking/xenoblade-chronicles-x.md | 52 +++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 docs/nex/protocols/ranking/xenoblade-chronicles-x.md diff --git a/docs/nex/protocols/ranking/index.md b/docs/nex/protocols/ranking/index.md index 3861455..8972968 100644 --- a/docs/nex/protocols/ranking/index.md +++ b/docs/nex/protocols/ranking/index.md @@ -14,6 +14,7 @@ The following games have additional methods in the ranking protocol: * [Super Smash Bros. 4](/docs/nex/protocols/ranking/super-smash-bros-4) * [Splatoon](/docs/nex/protocols/ranking/splatoon) * [Splatoon 2](/docs/nex/protocols/ranking/splatoon-2) +* [Xenoblade Chronicles X](/docs/nex/protocols/ranking/xenoblade-chronicles-x) This remainder of this page describes the methods that are not specific to any game. diff --git a/docs/nex/protocols/ranking/xenoblade-chronicles-x.md b/docs/nex/protocols/ranking/xenoblade-chronicles-x.md new file mode 100644 index 0000000..20bb8f6 --- /dev/null +++ b/docs/nex/protocols/ranking/xenoblade-chronicles-x.md @@ -0,0 +1,52 @@ +--- +layout: post +toc: true +title: Xenoblade Chronicles X (112) +--- + +This page describes the methods that are only seen in Xenoblade Chronicles X. + +## Methods + +| Method ID | Method Name | +|-----------|-----------------------------------------------------------------| +| 14 | [UploadScores_Lazy](14-uploadscores_lazy) | +| 15 | [GetMultiCategoryRanking_Lazy](15-getmulticategoryranking_lazy) | +| 16 | [DebugUpdateRanking_Lazy](16-debugupdateranking_lazy) | + +### (14) UploadScores_Lazy +#### Request + +| Type | Description | +|------------------------------------------------------------------------------------------|-------------| +| [List]<[RankingScoreData](/docs/nex/protocols/ranking#rankingscoredata-structure)> | Scores | +| Uint64 | Unknown | + +#### Response + +| Type | Description | +|------------------------|-------------| +| [List]<[Result]> | Results | + +### (15) GetMultiCategoryRanking_Lazy +#### Request + +| Type | Description | +|------------------------------------------------------------------------------|-------------| +| Uint8 | Unknown | +| [List]<Uint32> | Categories | +| [RankingOrderParam](/docs/nex/protocols/ranking#rankingorderparam-structure) | Order param | +| Uint64 | Unknown | +| Uint32 | Unknown | + +#### Response + +| Type | Description | +|------------------------------------------------------------------------------------|-------------| +| [List]<[RankingResult](/docs/nex/protocols/ranking#rankingresult-structure)> | pResults | + +### (16) DebugUpdateRanking_Lazy +This method does not take any parameters and does not return anything. + +[Result]: /docs/nex/types#result +[List]: /docs/nex/types#list From bdb442f96f97f953fef34523219e7797062f88ee Mon Sep 17 00:00:00 2001 From: Jonathan Barrow Date: Wed, 6 Dec 2023 04:19:39 -0500 Subject: [PATCH 03/14] messaging: document DeliverMessageMultiTarget --- docs/nex/protocols/messaging.md | 56 +++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/docs/nex/protocols/messaging.md b/docs/nex/protocols/messaging.md index 1957ec5..b7fe4f4 100644 --- a/docs/nex/protocols/messaging.md +++ b/docs/nex/protocols/messaging.md @@ -7,7 +7,7 @@ title: Messaging (23) ## Methods | Method ID | Method Name | -| --------- | ------------------------------------------------------------------- | +|-----------|---------------------------------------------------------------------| | 1 | [DeliverMessage](#1-delivermessage) | | 2 | [GetNumberOfMessages](#2-getnumberofmessages) | | 3 | [GetMessagesHeaders](#3-getmessagesheaders) | @@ -15,19 +15,19 @@ title: Messaging (23) | 5 | [RetrieveMessages](#5-retrievemessages) | | 6 | [DeleteMessages](#6-deletemessages) | | 7 | [DeleteAllMessages](#7-deleteallmessages) | -| 8 | DeliverMessageMultiTarget | +| 8 | [DeliverMessageMultiTarget](#8-delivermessagemultitarget) | ### (1) DeliverMessage #### Request | Type | Name | -| ------ | ------------ | +|--------|--------------| | [Data] | oUserMessage | #### Response | Type | Name | -| -------------------- | ---------------- | +|----------------------|------------------| | [Data] | oModifiedMessage | | [List]<Uint32> | lstSandboxNodeId | | [List]<[PID]> | lstParticipants | @@ -36,48 +36,48 @@ title: Messaging (23) #### Request | Type | Name | -| ----------------------------------------------- | --------- | +|-------------------------------------------------|-----------| | [MessageRecipient](#messagerecipient-structure) | recipient | #### Response | Type | Name | -| ------ | ------------ | +|--------|--------------| | Uint32 | uiNbMessages | ### (3) GetMessagesHeaders #### Request | Type | Name | -| ----------------------------------------------- | --------- | +|-------------------------------------------------|-----------| | [MessageRecipient](#messagerecipient-structure) | recipient | | [ResultRange] | range | #### Response | Type | Name | -| --------------------------------------------------- | ------------- | +|-----------------------------------------------------|---------------| | [List]<[UserMessage](#usermessage-structure)> | lstMsgHeaders | ### (4) RetrieveAllMessagesWithinRange #### Request | Type | Name | -| ----------------------------------------------- | --------- | +|-------------------------------------------------|-----------| | [MessageRecipient](#messagerecipient-structure) | recipient | | [ResultRange] | range | #### Response | Type | Name | -| -------------------- | ----------- | +|----------------------|-------------| | [List]<[Data]> | lstMessages | ### (5) RetrieveMessages #### Request | Type | Name | -| ----------------------------------------------- | -------------- | +|-------------------------------------------------|----------------| | [MessageRecipient](#messagerecipient-structure) | recipient | | [List]<Uint32> | lstMsgIDs | | Bool | bLeaveOnServer | @@ -85,14 +85,14 @@ title: Messaging (23) #### Response | Type | Name | -| -------------------- | ----------- | +|----------------------|-------------| | [List]<[Data]> | lstMessages | ### (6) DeleteMessages #### Request | Type | Name | -| ----------------------------------------------- | ------------------- | +|-------------------------------------------------|---------------------| | [MessageRecipient](#messagerecipient-structure) | recipient | | [List]<Uint32> | lstMessagesToDelete | @@ -103,20 +103,36 @@ This method does not return anything. #### Request | Type | Name | -| ----------------------------------------------- | --------- | +|-------------------------------------------------|-----------| | [MessageRecipient](#messagerecipient-structure) | recipient | #### Response | Type | Name | -| ------ | ------------------- | +|--------|---------------------| | Uint32 | uiNbDeletedMessages | +### (8) DeliverMessageMultiTarget +#### Request + +| Type | Name | +|---------------------|---------| +| [List]<[PID]> | Targets | +| [Data] | Message | + +#### Response + +| Type | Name | +|----------------------|---------| +| [Data] | Unknown | +| [List]<Uint32> | Unknown | +| [List]<Uint32> | Unknown | + ## Types ### MessageRecipient ([Structure]) | Type | Name | -| ------ | ----------------- | +|--------|-------------------| | Uint32 | m_uiRecipientType | | [PID] | m_principalId | | Uint32 | m_gatheringId | @@ -124,7 +140,7 @@ This method does not return anything. Recipient type: | Type | Description | -| ---- | ------------ | +|------|--------------| | 1 | Principal id | | 2 | Gathering id | @@ -133,7 +149,7 @@ Recipient type: {: .prompt-info } | Type | Name | -| ----------------------------------------------- | ------------------ | +|-------------------------------------------------|--------------------| | Uint32 | m_uiID | | Uint32 | m_uiParentID | | [PID] | m_pidSender | @@ -149,7 +165,7 @@ Recipient type: {: .prompt-info } | Type | Name | -| -------- | ------------- | +|----------|---------------| | [String] | m_strTextBody | ### BinaryMessage ([Structure]) @@ -157,7 +173,7 @@ Recipient type: {: .prompt-info } | Type | Name | -| --------- | ------------ | +|-----------|--------------| | [qBuffer] | m_binaryBody | [String]: /docs/nex/types#string From 25e862d9c02f7539645eb6f1c8e01aef6d77415a Mon Sep 17 00:00:00 2001 From: Jonathan Barrow Date: Wed, 6 Dec 2023 04:46:37 -0500 Subject: [PATCH 04/14] xenoblade: document MatchMaking version differences --- docs/nex/protocols/match-making/index.md | 173 +++++++++--------- .../match-making/xenoblade-chronicles-x.md | 41 +++++ 2 files changed, 131 insertions(+), 83 deletions(-) create mode 100644 docs/nex/protocols/match-making/xenoblade-chronicles-x.md diff --git a/docs/nex/protocols/match-making/index.md b/docs/nex/protocols/match-making/index.md index 0f8a078..e8b4e66 100644 --- a/docs/nex/protocols/match-making/index.md +++ b/docs/nex/protocols/match-making/index.md @@ -4,10 +4,17 @@ toc: true title: Match Making (21) --- +## Extended protocols + +The following games have changed methods in the protocol: +* [Xenoblade Chronicles X](/docs/nex/protocols/match-making/xenoblade-chronicles-x) + +This remainder of this page describes the methods that are not specific to any game. + ## Methods | Method ID | Method Name | -| --------- | -------------------------------------------------------------- | +|-----------|----------------------------------------------------------------| | 1 | [RegisterGathering](#1-registergathering) | | 2 | [UnregisterGathering](#2-unregistergathering) | | 3 | [UnregisterGatherings](#3-unregistergatherings) | @@ -57,59 +64,59 @@ title: Match Making (21) #### Request | Type | Name | Description | -| ------------------------- | ------------ | ----------- | +|---------------------------|--------------|-------------| | [Data]<[Gathering]> | anyGathering | Gathering | #### Response | Type | Name | Description | -| ------ | -------- | ------------ | +|--------|----------|--------------| | Uint32 | %retval% | Gathering id | ### (2) UnregisterGathering #### Request | Type | Name | Description | -| ------ | ----------- | ------------ | +|--------|-------------|--------------| | Uint32 | idGathering | Gathering id | #### Response | Type | Name | Description | -| ---- | -------- | ----------- | +|------|----------|-------------| | Bool | %retval% | Result | ### (3) UnregisterGatherings #### Request | Type | Name | Description | -| -------------------- | ------------- | ------------- | +|----------------------|---------------|---------------| | [List]<Uint32> | lstGatherings | Gathering ids | #### Response | Type | Name | Description | -| ---- | -------- | ----------- | +|------|----------|-------------| | Bool | %retval% | Result | ### (4) UpdateGathering #### Request | Type | Name | Description | -| ------------------------- | ------------ | ----------- | +|---------------------------|--------------|-------------| | [Data]<[Gathering]> | anyGathering | Gathering | #### Response | Type | Name | Description | -| ---- | -------- | ----------- | +|------|----------|-------------| | Bool | %retval% | Result | ### (5) Invite #### Request | Type | Name | Description | -| ------------------- | ------------- | ----------------- | +|---------------------|---------------|-------------------| | Uint32 | idGathering | Gathering id | | [List]<[PID]> | lstPrincipals | Invited user pids | | [String] | strMessage | Message | @@ -117,42 +124,42 @@ title: Match Making (21) #### Response | Type | Name | Description | -| ---- | -------- | ----------- | +|------|----------|-------------| | Bool | %retval% | Result | ### (6) AcceptInvitation #### Request | Type | Name | Description | -| -------- | ----------- | ------------ | +|----------|-------------|--------------| | Uint32 | idGathering | Gathering id | | [String] | strMessage | Message | #### Response | Type | Name | Description | -| ---- | -------- | ----------- | +|------|----------|-------------| | Bool | %retval% | Result | ### (7) DeclineInvitation #### Request | Type | Name | Description | -| -------- | ----------- | ------------ | +|----------|-------------|--------------| | Uint32 | idGathering | Gathering id | | [String] | strMessage | Message | #### Response | Type | Name | Description | -| ---- | -------- | ----------- | +|------|----------|-------------| | Bool | %retval% | Result | ### (8) CancelInvitation #### Request | Type | Name | Description | -| ------------------- | ------------- | ------------ | +|---------------------|---------------|--------------| | Uint32 | idGathering | Gathering id | | [List]<[PID]> | lstPrincipals | User pids | | [String] | strMessage | Message | @@ -160,20 +167,20 @@ title: Match Making (21) #### Response | Type | Name | Description | -| ---- | -------- | ----------- | +|------|----------|-------------| | Bool | %retval% | Result | ### (9) GetInvitationsSent #### Request | Type | Name | Description | -| ------ | ----------- | ------------ | +|--------|-------------|--------------| | Uint32 | idGathering | Gathering id | #### Response | Type | Name | Description | -| -------------------------- | -------------- | ----------- | +|----------------------------|----------------|-------------| | [List]<[Invitation]> | lstInvitations | Invitations | ### (10) GetInvitationsReceived @@ -183,55 +190,55 @@ This method does not take any parameters. #### Response | Type | Name | Description | -| -------------------------- | -------------- | ----------- | +|----------------------------|----------------|-------------| | [List]<[Invitation]> | lstInvitations | Invitations | ### (11) Participate #### Request | Type | Name | Description | -| -------- | ----------- | ------------ | +|----------|-------------|--------------| | Uint32 | idGathering | Gathering id | | [String] | strMessage | Message | #### Response | Type | Name | Description | -| ---- | -------- | ----------- | +|------|----------|-------------| | Bool | %retval% | Result | ### (12) CancelParticipation #### Request | Type | Name | Description | -| -------- | ----------- | ------------ | +|----------|-------------|--------------| | Uint32 | idGathering | Gathering id | | [String] | strMessage | Message | #### Response | Type | Name | Description | -| ---- | -------- | ----------- | +|------|----------|-------------| | Bool | %retval% | Result | ### (13) GetParticipants #### Request | Type | Name | Description | -| ------ | ----------- | ------------ | +|--------|-------------|--------------| | Uint32 | idGathering | Gathering id | #### Response | Type | Name | Description | -| ------------------- | --------------- | ---------------- | +|---------------------|-----------------|------------------| | [List]<[PID]> | lstParticipants | Participant pids | ### (14) AddParticipants #### Request | Type | Name | Description | -| ------------------- | --------------- | ---------------- | +|---------------------|-----------------|------------------| | Uint32 | idGathering | Gathering id | | [List]<[PID]> | lstParticipants | Participant pids | | [String] | strMessage | Message | @@ -239,101 +246,101 @@ This method does not take any parameters. #### Response | Type | Name | Description | -| ---- | -------- | ----------- | +|------|----------|-------------| | Bool | %retval% | Result | ### (15) GetDetailedParticipants #### Request | Type | Name | Description | -| ------ | ----------- | ------------ | +|--------|-------------|--------------| | Uint32 | idGathering | Gathering id | #### Response | Type | Name | Description | -| ---------------------------------- | --------------- | ------------------- | +|------------------------------------|-----------------|---------------------| | [List]<[ParticipantDetails]> | lstParticipants | Participant details | ### (16) GetParticipantsURLs #### Request | Type | Name | Description | -| ------ | ----------- | ------------ | +|--------|-------------|--------------| | Uint32 | idGathering | Gathering id | #### Response | Type | Name | Description | -| -------------------------- | ------------- | ---------------- | +|----------------------------|---------------|------------------| | [List]<[StationURL]> | lstStationURL | Participant urls | ### (17) FindByType #### Request | Type | Name | Description | -| ------------- | ----------- | ------------ | +|---------------|-------------|--------------| | [String] | strType | Type | | [ResultRange] | resultRange | Result range | #### Response | Type | Name | Description | -| --------------------------------------- | ------------ | ----------- | +|-----------------------------------------|--------------|-------------| | [List]<[Data]<[Gathering]>> | lstGathering | Gatherings | ### (18) FindByDescription #### Request | Type | Name | Description | -| ------------- | -------------- | ----------- | +|---------------|----------------|-------------| | [String] | strDescription | Description | | [ResultRange] | resultRange | ResultRange | #### Response | Type | Name | Description | -| --------------------------------------- | ------------ | ----------- | +|-----------------------------------------|--------------|-------------| | [List]<[Data]<[Gathering]>> | lstGathering | Gatherings | ### (19) FindByDescriptionRegex #### Request | Type | Name | Description | -| ------------- | ------------------- | ----------------- | +|---------------|---------------------|-------------------| | [String] | strDescriptionRegex | Description regex | | [ResultRange] | resultRange | ResultRange | #### Response | Type | Name | Description | -| --------------------------------------- | ------------ | ----------- | +|-----------------------------------------|--------------|-------------| | [List]<[Data]<[Gathering]>> | lstGathering | Gatherings | ### (20) FindByID #### Request | Type | Name | Description | -| -------------------- | ----- | ------------- | +|----------------------|-------|---------------| | [List]<Uint32> | lstID | Gathering ids | #### Response | Type | Name | Description | -| --------------------------------------- | ------------ | ----------- | +|-----------------------------------------|--------------|-------------| | [List]<[Data]<[Gathering]>> | lstGathering | Gatherings | ### (21) FindBySingleID #### Request | Type | Name | Description | -| ------ | ---- | ------------ | +|--------|------|--------------| | Uint32 | id | Gathering id | #### Response | Type | Name | Description | -| ------------------------- | ---------- | ----------- | +|---------------------------|------------|-------------| | Bool | bResult | Result | | [Data]<[Gathering]> | pGathering | Gathering | @@ -341,95 +348,95 @@ This method does not take any parameters. #### Request | Type | Name | Description | -| ------------- | ----------- | ----------- | +|---------------|-------------|-------------| | [PID] | id | Owner pid | | [ResultRange] | resultRange | ResultRange | #### Response | Type | Name | Description | -| --------------------------------------- | ------------ | ----------- | +|-----------------------------------------|--------------|-------------| | [List]<[Data]<[Gathering]>> | lstGathering | Gatherings | ### (23) FindByParticipants #### Request | Type | Name | Description | -| ------------------- | ---- | ---------------- | +|---------------------|------|------------------| | [List]<[PID]> | pid | Participant pids | #### Response | Type | Name | Description | -| --------------------------------------- | ------------ | ----------- | +|-----------------------------------------|--------------|-------------| | [List]<[Data]<[Gathering]>> | lstGathering | Gatherings | ### (24) FindInvitations #### Request | Type | Name | Description | -| ------------- | ----------- | ------------ | +|---------------|-------------|--------------| | [ResultRange] | resultRange | Result range | #### Response | Type | Name | Description | -| --------------------------------------- | ------------ | ----------- | +|-----------------------------------------|--------------|-------------| | [List]<[Data]<[Gathering]>> | lstGathering | Gatherings | ### (25) FindBySQLQuery #### Request | Type | Name | Description | -| ------------- | ----------- | ------------ | +|---------------|-------------|--------------| | [String] | strQuery | SQL query | | [ResultRange] | resultRange | Result range | #### Response | Type | Name | Description | -| --------------------------------------- | ------------ | ----------- | +|-----------------------------------------|--------------|-------------| | [List]<[Data]<[Gathering]>> | lstGathering | Gatherings | ### (26) LaunchSession #### Request | Type | Name | Description | -| -------- | ----------- | ------------ | +|----------|-------------|--------------| | Uint32 | idGathering | Gathering id | | [String] | strURL | Session url | #### Response | Type | Name | Description | -| ---- | -------- | ----------- | +|------|----------|-------------| | Bool | %retval% | Result | ### (27) UpdateSessionURL #### Request | Type | Name | Description | -| -------- | ----------- | ------------ | +|----------|-------------|--------------| | Uint32 | idGathering | Gathering id | | [String] | strURL | Session url | #### Response | Type | Name | Description | -| ---- | -------- | ----------- | +|------|----------|-------------| | Bool | %retval% | Result | ### (28) GetSessionURL #### Request | Type | Name | Description | -| ------ | ----------- | ------------ | +|--------|-------------|--------------| | Uint32 | idGathering | Gathering id | #### Response | Type | Name | Description | -| -------- | -------- | ----------- | +|----------|----------|-------------| | Bool | %retval% | Result | | [String] | strURL | Session url | @@ -437,13 +444,13 @@ This method does not take any parameters. #### Request | Type | Name | Description | -| ------ | ----------- | ------------ | +|--------|-------------|--------------| | Uint32 | idGathering | Gathering id | #### Response | Type | Name | Description | -| ------ | -------- | ----------- | +|--------|----------|-------------| | Bool | %retval% | Result | | Uint32 | uiState | State | @@ -451,35 +458,35 @@ This method does not take any parameters. #### Request | Type | Name | Description | -| ------ | ----------- | ------------ | +|--------|-------------|--------------| | Uint32 | idGathering | Gathering id | | Uint32 | uiNewState | New state | #### Response | Type | Name | Description | -| ---- | -------- | ----------- | +|------|----------|-------------| | Bool | %retval% | Result | ### (31) ReportStats #### Request | Type | Name | Description | -| ------------------------------ | ----------- | ------------ | +|--------------------------------|-------------|--------------| | Uint32 | idGathering | Gathering id | | [List]<[GatheringStats]> | lstStats | Stats | #### Response | Type | Name | Description | -| ---- | -------- | ----------- | +|------|----------|-------------| | Bool | %retval% | Result | ### (32) GetStats #### Request | Type | Name | Description | -| ------------------- | --------------- | ---------------- | +|---------------------|-----------------|------------------| | Uint32 | idGathering | Gathering id | | [List]<[PID]> | lstParticipants | Participant pids | | [List]<byte> | lstColumns | Columns | @@ -487,7 +494,7 @@ This method does not take any parameters. #### Response | Type | Name | Description | -| ------------------------------ | --------- | ----------- | +|--------------------------------|-----------|-------------| | Bool | %retval% | Result | | [List]<[GatheringStats]> | plstStats | Stats | @@ -495,27 +502,27 @@ This method does not take any parameters. #### Request | Type | Name | Description | -| ------ | ---- | ------------ | +|--------|------|--------------| | Uint32 | gid | Gathering id | #### Response | Type | Name | Description | -| ---- | -------- | ----------- | +|------|----------|-------------| | Bool | %retval% | Result | ### (34) GetPendingDeletions #### Request | Type | Name | Description | -| ------------- | ----------- | ------------ | +|---------------|-------------|--------------| | Uint32 | uiReason | Reason | | [ResultRange] | resultRange | Result range | #### Response | Type | Name | Description | -| ----------------------------- | ------------ | ----------- | +|-------------------------------|--------------|-------------| | Bool | %retval% | Result | | [List]<[DeletionEntry]> | lstDeletions | Deletions | @@ -523,48 +530,48 @@ This method does not take any parameters. #### Request | Type | Name | Description | -| -------------------- | ------------ | ----------- | +|----------------------|--------------|-------------| | [List]<Uint32> | lstDeletions | Deletions | #### Response | Type | Name | Description | -| ---- | -------- | ----------- | +|------|----------|-------------| | Bool | %retval% | Result | ### (36) MigrateGatheringOwnershipV1 #### Request | Type | Name | Description | -| ------------------- | ----------------------- | ------------------------ | +|---------------------|-------------------------|--------------------------| | Uint32 | gid | Gathering id | | [List]<[PID]> | lstPotentialNewOwnersID | Potential new owner pids | #### Response | Type | Name | Description | -| ---- | -------- | ----------- | +|------|----------|-------------| | Bool | %retval% | Result | ### (37) FindByDescriptionLike #### Request | Type | Name | Description | -| ------------- | ------------------ | ---------------- | +|---------------|--------------------|------------------| | [String] | strDescriptionLike | Description like | | [ResultRange] | resultRange | Result range | #### Response | Type | Name | Description | -| --------------------------------------- | ------------ | ----------- | +|-----------------------------------------|--------------|-------------| | [List]<[Data]<[Gathering]>> | lstGathering | Gatherings | ### (38) RegisterLocalURL #### Request | Type | Name | Description | -| ------------ | ---- | ------------ | +|--------------|------|--------------| | Uint32 | gid | Gathering id | | [StationURL] | url | Url | @@ -575,7 +582,7 @@ This method does not return anything. #### Request | Type | Name | Description | -| -------------------------- | ------- | ------------ | +|----------------------------|---------|--------------| | Uint32 | gid | Gathering id | | [List]<[StationURL]> | lstUrls | Urls | @@ -586,7 +593,7 @@ This method does not return anything. #### Request | Type | Name | Description | -| ------ | ---- | ------------ | +|--------|------|--------------| | Uint32 | gid | Gathering id | #### Response @@ -596,20 +603,20 @@ This method does not return anything. #### Request | Type | Name | Description | -| ------ | ---- | ------------ | +|--------|------|--------------| | Uint32 | gid | Gathering id | #### Response | Type | Name | Description | -| -------------------------- | ------- | ------------ | +|----------------------------|---------|--------------| | [List]<[StationURL]> | lstURLs | Session urls | ### (42) UpdateSessionHost #### Request | Type | Name | Description | -| ------ | -------------- | ------------- | +|--------|----------------|---------------| | Uint32 | gid | Gathering id | | Bool | isMigrateOwner | Migrate owner | @@ -620,21 +627,21 @@ This method does not return anything. #### Request | Type | Name | Description | -| ------ | ---------------- | ----------------- | +|--------|------------------|-------------------| | Uint32 | gid | Gathering id | | Bool | participantsOnly | Participants only | #### Response | Type | Name | Description | -| ---- | -------- | ----------- | +|------|----------|-------------| | Bool | %retval% | Result | ### (44) MigrateGatheringOwnership #### Request | Type | Name | Description | -| ------------------- | ----------------------- | ------------------------ | +|---------------------|-------------------------|--------------------------| | Uint32 | gid | Gathering id | | [List]<[PID]> | lstPotentialNewOwnersID | Potential new owner pids | | Bool | participantsOnly | Participants only | diff --git a/docs/nex/protocols/match-making/xenoblade-chronicles-x.md b/docs/nex/protocols/match-making/xenoblade-chronicles-x.md new file mode 100644 index 0000000..4314219 --- /dev/null +++ b/docs/nex/protocols/match-making/xenoblade-chronicles-x.md @@ -0,0 +1,41 @@ +--- +layout: post +toc: true +title: Xenoblade Chronicles X (112) +--- + +At some point NEX was updated and both `MigrateGatheringOwnership` and `UpdateSessionHost` to have additional parameters. These then became the new `MigrateGatheringOwnership` and `UpdateSessionHost`, and the old methods without the additional parameters became `MigrateGatheringOwnershipV1` and `UpdateSessionHostV1`. Xenoblade Chronicles X uses the old versions of these methods + +## Methods + +| Method ID | Method Name | +|-----------|-----------------------------------------------------------------| +| 36 | [MigrateGatheringOwnership](#36-migrategatheringownership) | +| 40 | [UpdateSessionHost](#40-updatesessionhost) | + +### (36) MigrateGatheringOwnership +#### Request + +| Type | Name | Description | +|---------------------|-------------------------|--------------------------| +| Uint32 | gid | Gathering id | +| [List]<[PID]> | lstPotentialNewOwnersID | Potential new owner pids | + +#### Response + +| Type | Name | Description | +|------|----------|-------------| +| Bool | %retval% | Result | + +### (40) UpdateSessionHost +#### Request + +| Type | Name | Description | +|--------|------|--------------| +| Uint32 | gid | Gathering id | + +#### Response +This method does not return anything. + +[List]: /docs/nex/types#list +[PID]: /docs/nex/types#pid From 39348cb3029214952608520e6e1c2ef7a91e10e8 Mon Sep 17 00:00:00 2001 From: Jonathan Barrow Date: Wed, 6 Dec 2023 05:17:52 -0500 Subject: [PATCH 05/14] xenoblade: document MessageDelivery patches --- docs/nex/protocols/message-delivery.md | 25 ---------- docs/nex/protocols/message-delivery/index.md | 32 +++++++++++++ .../xenoblade-chronicles-x.md | 46 +++++++++++++++++++ 3 files changed, 78 insertions(+), 25 deletions(-) delete mode 100644 docs/nex/protocols/message-delivery.md create mode 100644 docs/nex/protocols/message-delivery/index.md create mode 100644 docs/nex/protocols/message-delivery/xenoblade-chronicles-x.md diff --git a/docs/nex/protocols/message-delivery.md b/docs/nex/protocols/message-delivery.md deleted file mode 100644 index 51c0ebd..0000000 --- a/docs/nex/protocols/message-delivery.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: post -toc: true -title: Message Delivery (27) ---- - -For message types, see [Messaging Protocol](/docs/nex/protocols/messaging#types). - -## Methods - -| Method ID | Method Name | -| --------- | --------------------------------- | -| 1 | [DeliverMessage](#delivermessage) | - -### (1) DeliverMessage -#### Request - -| Type | Name | -| ------ | ------------ | -| [Data] | oUserMessage | - -#### Response -No RMC response is sent. - -[Data]: /docs/nex/types#anydataholder diff --git a/docs/nex/protocols/message-delivery/index.md b/docs/nex/protocols/message-delivery/index.md new file mode 100644 index 0000000..a6a5cb2 --- /dev/null +++ b/docs/nex/protocols/message-delivery/index.md @@ -0,0 +1,32 @@ +--- +layout: post +toc: true +title: Message Delivery (27) +--- + +## Extended protocols + +The following games have changed methods in the protocol: +* [Xenoblade Chronicles X](/docs/nex/protocols/message-delivery/xenoblade-chronicles-x) + +This remainder of this page describes the methods that are not specific to any game. + +For message types, see [Messaging Protocol](/docs/nex/protocols/messaging#types). + +## Methods + +| Method ID | Method Name | +|-----------|-------------------------------------| +| 1 | [DeliverMessage](#1-delivermessage) | + +### (1) DeliverMessage +#### Request + +| Type | Name | +|--------|--------------| +| [Data] | oUserMessage | + +#### Response +No RMC response is sent. + +[Data]: /docs/nex/types#anydataholder diff --git a/docs/nex/protocols/message-delivery/xenoblade-chronicles-x.md b/docs/nex/protocols/message-delivery/xenoblade-chronicles-x.md new file mode 100644 index 0000000..a016d16 --- /dev/null +++ b/docs/nex/protocols/message-delivery/xenoblade-chronicles-x.md @@ -0,0 +1,46 @@ +--- +layout: post +toc: true +title: Message Delivery (27) +--- + +## Extended protocols + +The following games have changed methods in the protocol: +* [Xenoblade Chronicles X](/docs/nex/protocols/message-delivery/xenoblade-chronicles-x) + +This remainder of this page describes the methods that are not specific to any game. + +For message types, see [Messaging Protocol](/docs/nex/protocols/messaging#types). + +## Methods + +| Method ID | Method Name | +|-----------|-----------------------------------------------------------| +| 1 | [DeliverMessage](#1-delivermessage) | +| 2 | [DeliverMessageMultiTarget](#2-delivermessagemultitarget) | + +### (1) DeliverMessage +#### Request + +| Type | Name | +|--------|--------------| +| [Data] | oUserMessage | + +#### Response +This method does not return anything. + +### (2) DeliverMessageMultiTarget +#### Request + +| Type | Name | +|---------------------|---------| +| [List]<[PID]> | Targets | +| [Data] | Message | + +#### Response +This method does not return anything. + +[List]: /docs/nex/types#list +[PID]: /docs/nex/types#pid +[Data]: /docs/nex/types#anydataholder From 230d45049022ccc73b08f06713339247899ee0e3 Mon Sep 17 00:00:00 2001 From: Jonathan Barrow Date: Wed, 6 Dec 2023 06:37:55 -0500 Subject: [PATCH 06/14] xenoblade: document MatchmakeExtension patches --- .../match-making/xenoblade-chronicles-x.md | 6 +- .../protocols/matchmake-extension/index.md | 169 +++++++++--------- .../xenoblade-chronicles-x.md | 163 +++++++++++++++++ 3 files changed, 251 insertions(+), 87 deletions(-) create mode 100644 docs/nex/protocols/matchmake-extension/xenoblade-chronicles-x.md diff --git a/docs/nex/protocols/match-making/xenoblade-chronicles-x.md b/docs/nex/protocols/match-making/xenoblade-chronicles-x.md index 4314219..5bda0c5 100644 --- a/docs/nex/protocols/match-making/xenoblade-chronicles-x.md +++ b/docs/nex/protocols/match-making/xenoblade-chronicles-x.md @@ -4,12 +4,12 @@ toc: true title: Xenoblade Chronicles X (112) --- -At some point NEX was updated and both `MigrateGatheringOwnership` and `UpdateSessionHost` to have additional parameters. These then became the new `MigrateGatheringOwnership` and `UpdateSessionHost`, and the old methods without the additional parameters became `MigrateGatheringOwnershipV1` and `UpdateSessionHostV1`. Xenoblade Chronicles X uses the old versions of these methods +At some point NEX was updated and both `MigrateGatheringOwnership` and `UpdateSessionHost` to have additional parameters. These then became the new `MigrateGatheringOwnership` and `UpdateSessionHost`, and the old methods without the additional parameters became `MigrateGatheringOwnershipV1` and `UpdateSessionHostV1`. Xenoblade Chronicles X uses the old versions of these methods. ## Methods -| Method ID | Method Name | -|-----------|-----------------------------------------------------------------| +| Method ID | Method Name | +|-----------|------------------------------------------------------------| | 36 | [MigrateGatheringOwnership](#36-migrategatheringownership) | | 40 | [UpdateSessionHost](#40-updatesessionhost) | diff --git a/docs/nex/protocols/matchmake-extension/index.md b/docs/nex/protocols/matchmake-extension/index.md index b804d2d..40a2921 100644 --- a/docs/nex/protocols/matchmake-extension/index.md +++ b/docs/nex/protocols/matchmake-extension/index.md @@ -16,13 +16,14 @@ The following games have additional methods in the matchmake extension protocol: * [Super Mario Bros. 35](/docs/nex/protocols/matchmake-extension/super-mario-bros-35) * [Super Smash Bros. 4](/docs/nex/protocols/matchmake-extension/super-smash-bros-4) * [Super Smash Bros. Ultimate](/docs/nex/protocols/matchmake-extension/super-smash-bros-ultimate) +* [Xenoblade Chronicles X](/docs/nex/protocols/matchmake-extension/xenoblade-chronicles-x) This remainder of this page describes the methods that are not specific to any game. ## Methods | Method ID | Method Name | -| --------- | ---------------------------------------------------------------------------------------------------------------------- | +|-----------|------------------------------------------------------------------------------------------------------------------------| | 1 | [CloseParticipation](#1-closeparticipation) | | 2 | [OpenParticipation](#2-openparticipation) | | 3 | [AutoMatchmake_Postpone](#3-automatchmake_postpone) | @@ -82,7 +83,7 @@ This remainder of this page describes the methods that are not specific to any g #### Request | Type | Name | -| ------ | ---- | +|--------|------| | Uint32 | gid | #### Response @@ -92,7 +93,7 @@ This method does not return anything. #### Request | Type | Name | -| ------ | ---- | +|--------|------| | Uint32 | gid | #### Response @@ -102,42 +103,42 @@ This method does not return anything. #### Request | Type | Name | -| ------------------------- | ------------ | +|---------------------------|--------------| | [Data]<[Gathering]> | anyGathering | | [String] | strMessage | #### Response | Type | Name | -| ------------------------- | --------------- | +|---------------------------|-----------------| | [Data]<[Gathering]> | joinedGathering | ### (4) BrowseMatchmakeSession #### Request | Type | Name | -| -------------------------------- | -------------- | +|----------------------------------|----------------| | [MatchmakeSessionSearchCriteria] | searchCriteria | | [ResultRange] | resultRange | #### Response | Type | Name | -| --------------------------------------- | ------------ | +|-----------------------------------------|--------------| | [List]<[Data]<[Gathering]>> | lstGathering | ### (5) BrowseMatchmakeSessionWithHostUrls #### Request | Type | Name | -| -------------------------------- | -------------- | +|----------------------------------|----------------| | [MatchmakeSessionSearchCriteria] | searchCriteria | | [ResultRange] | resultRange | #### Response | Type | Name | -| --------------------------------------- | ---------------- | +|-----------------------------------------|------------------| | [List]<[Data]<[Gathering]>> | lstGathering | | [List]<[GatheringURLs]> | lstGatheringUrls | @@ -145,7 +146,7 @@ This method does not return anything. #### Request | Type | Name | Only present in | -| ------------------------- | ------------------ | -------------------- | +|---------------------------|--------------------|----------------------| | [Data]<[Gathering]> | anyGathering | | | [String] | strMessage | | | Uint16 | participationCount | NEX v3.5.0 and later | @@ -153,7 +154,7 @@ This method does not return anything. #### Response | Type | Name | Only present in | -| -------- | ---------- | -------------------- | +|----------|------------|----------------------| | Uint32 | gid | | | [Buffer] | sessionKey | NEX v3.0.0 and later | @@ -161,21 +162,21 @@ This method does not return anything. #### Request | Type | Name | -| -------- | ---------- | +|----------|------------| | Uint32 | gid | | [String] | strMessage | #### Response | Type | Name | Only present in | -| -------- | ---------- | -------------------- | +|----------|------------|----------------------| | [Buffer] | sessionKey | NEX v3.0.0 and later | ### (8) ModifyCurrentGameAttribute #### Request | Type | Name | -| ------ | ----------- | +|--------|-------------| | Uint32 | gid | | Uint32 | attribIndex | | Uint32 | newValue | @@ -188,7 +189,7 @@ This method does not return anything. **Wii U and 3DS:** | Type | Name | -| -------- | -------- | +|----------|----------| | Uint32 | uiType | | Uint32 | uiParam1 | | Uint32 | uiParam2 | @@ -197,7 +198,7 @@ This method does not return anything. **Switch:** | Type | Name | -| -------- | -------- | +|----------|----------| | Uint32 | uiType | | Uint64 | uiParam1 | | Uint64 | uiParam2 | @@ -210,20 +211,20 @@ This method does not return anything. #### Request | Type | Name | -| ------ | ------ | +|--------|--------| | Sint32 | uiType | #### Response | Type | Name | -| --------------------------------- | -------- | +|-----------------------------------|----------| | [List]<[NotificationEvent]> | dataList | ### (11) UpdateApplicationBuffer #### Request | Type | Name | -| -------- | ----------------- | +|----------|-------------------| | Uint32 | gid | | [Buffer] | applicationBuffer | @@ -234,7 +235,7 @@ This method does not return anything. #### Request | Type | Name | -| -------------------- | ------- | +|----------------------|---------| | Uint32 | gid | | [List]<Uint32> | attribs | @@ -245,20 +246,20 @@ This method does not return anything. #### Request | Type | Name | -| -------------------- | -------- | +|----------------------|----------| | [List]<Uint32> | lstTypes | #### Response | Type | Name | -| --------------------------------- | -------- | +|-----------------------------------|----------| | [List]<[NotificationEvent]> | dataList | ### (14) UpdateMatchmakeSession #### Request | Type | Name | -| ------------------------- | ------------ | +|---------------------------|--------------| | [Data]<[Gathering]> | anyGathering | #### Response @@ -268,7 +269,7 @@ This method does not return anything. #### Request | Type | Name | -| ---------------------------------------------- | ----------------- | +|------------------------------------------------|-------------------| | [List]<[MatchmakeSessionSearchCriteria]> | lstSearchCriteria | | [Data]<[Gathering]> | anyGathering | | [String] | strMessage | @@ -276,41 +277,41 @@ This method does not return anything. #### Response | Type | Name | -| ------------------------- | --------------- | +|---------------------------|-----------------| | [Data]<[Gathering]> | joinedGathering | ### (16) GetPlayingSession #### Request | Type | Name | -| ------------------- | ------ | +|---------------------|--------| | [List]<[PID]> | lstPid | #### Response | Type | Name | -| ------------------------------ | ----------------- | +|--------------------------------|-------------------| | [List]<[PlayingSession]> | lstPlayingSession | ### (17) CreateCommunity #### Request | Type | Name | -| --------------------- | ---------- | +|-----------------------|------------| | [PersistentGathering] | community | | [String] | strMessage | #### Response | Type | Name | -| ------ | ---- | +|--------|------| | Uint32 | gid | ### (18) UpdateCommunity #### Request | Type | Name | -| --------------------- | --------- | +|-----------------------|-----------| | [PersistentGathering] | community | #### Response @@ -320,7 +321,7 @@ This method does not return anything. #### Request | Type | Name | -| -------- | ----------- | +|----------|-------------| | Uint32 | gid | | [String] | strMessage | | [String] | strPassword | @@ -332,48 +333,48 @@ This method does not return anything. #### Request | Type | Name | -| -------------------- | ------ | +|----------------------|--------| | [List]<Uint32> | lstGid | #### Response | Type | Name | -| ----------------------------------- | ------------ | +|-------------------------------------|--------------| | [List]<[PersistentGathering]> | lstCommunity | ### (21) FindOfficialCommunity #### Request | Type | Name | -| ------------- | --------------- | +|---------------|-----------------| | Bool | isAvailableOnly | | [ResultRange] | resultRange | #### Response | Type | Name | -| ----------------------------------- | ------------ | +|-------------------------------------|--------------| | [List]<[PersistentGathering]> | lstCommunity | ### (22) FindCommunityByParticipant #### Request | Type | Name | -| ------------- | ----------- | +|---------------|-------------| | [PID] | pid | | [ResultRange] | resultRange | #### Response | Type | Name | -| ----------------------------------- | ------------ | +|-------------------------------------|--------------| | [List]<[PersistentGathering]> | lstCommunity | ### (23) UpdatePrivacySetting #### Request | Type | Name | -| ---- | ---------------------- | +|------|------------------------| | Bool | onlineStatus | | Bool | participationCommunity | @@ -387,14 +388,14 @@ This method does not take any parameters. #### Response | Type | Name | -| ------------------- | -------------- | +|---------------------|----------------| | [List]<[PID]> | lstPrincipalId | ### (25) AddToBlockList #### Request | Type | Name | -| ------------------- | -------------- | +|---------------------|----------------| | [List]<[PID]> | lstPrincipalId | #### Response @@ -404,7 +405,7 @@ This method does not return anything. #### Request | Type | Name | -| ------------------- | -------------- | +|---------------------|----------------| | [List]<[PID]> | lstPrincipalId | #### Response @@ -421,7 +422,7 @@ This method does not return anything. #### Request | Type | Name | -| -------- | ------------- | +|----------|---------------| | [PID] | pid | | [String] | userName | | Uint32 | violationCode | @@ -436,7 +437,7 @@ This method does not take any parameters. #### Response | Type | Name | -| ------ | ----- | +|--------|-------| | Bool | flag | | Uint32 | score | @@ -444,7 +445,7 @@ This method does not take any parameters. #### Request | Type | Name | -| -------- | ------------------- | +|----------|---------------------| | Uint32 | gid | | [String] | strMessage | | Bool | dontCareMyBlockList | @@ -453,41 +454,41 @@ This method does not take any parameters. #### Response | Type | Name | -| -------- | ---------- | +|----------|------------| | [Buffer] | sessionKey | ### (31) GetSimplePlayingSession #### Request | Type | Name | -| ------------------- | ---------------- | +|---------------------|------------------| | [List]<[PID]> | lstPrincipalId | | Bool | includeLoginUser | #### Response | Type | Name | -| ------------------------------------ | ----------------------- | +|--------------------------------------|-------------------------| | [List]<[SimplePlayingSession]> | lstSimplePlayingSession | ### (32) GetSimpleCommunity #### Request | Type | Name | -| -------------------- | --------------- | +|----------------------|-----------------| | [List]<Uint32> | gatheringIdList | #### Response | Type | Name | -| ------------------------------- | ---------------------- | +|---------------------------------|------------------------| | [List]<[SimpleCommunity]> | lstSimpleCommunityList | ### (33) AutoMatchmakeWithGatheringId_Postpone #### Request | Type | Name | -| ------------------------- | ------------ | +|---------------------------|--------------| | [List]<Uint32> | lstGid | | [Data]<[Gathering]> | anyGathering | | [String] | strMessage | @@ -495,14 +496,14 @@ This method does not take any parameters. #### Response | Type | Name | -| ------------------------- | --------------- | +|---------------------------|-----------------| | [Data]<[Gathering]> | joinedGathering | ### (34) UpdateProgressScore #### Request | Type | Name | -| ------ | ------------- | +|--------|---------------| | Uint32 | gid | | Uint8 | progressScore | @@ -513,7 +514,7 @@ This method does not return anything. #### Request | Type | Name | -| -------- | ----------- | +|----------|-------------| | [PID] | pid | | Uint32 | mainType | | Uint32 | subType | @@ -528,20 +529,20 @@ This method does not return anything. #### Request | Type | Name | -| ------ | ---- | +|--------|------| | Uint32 | gid | #### Response | Type | Name | -| -------- | -------- | +|----------|----------| | [String] | password | ### (37) ClearMatchmakeSessionSystemPassword #### Request | Type | Name | -| ------ | ---- | +|--------|------| | Uint32 | gid | #### Response @@ -551,80 +552,80 @@ This method does not return anything. #### Request | Type | Name | -| ----------------------------- | --------------------------- | +|-------------------------------|-----------------------------| | [CreateMatchmakeSessionParam] | createMatchmakeSessionParam | #### Response | Type | Name | -| ------------------ | ---------------------- | +|--------------------|------------------------| | [MatchmakeSession] | joinedMatchmakeSession | ### (39) JoinMatchmakeSessionWithParam #### Request | Type | Name | -| --------------------------- | ------------------------- | +|-----------------------------|---------------------------| | [JoinMatchmakeSessionParam] | joinMatchmakeSessionParam | #### Response | Type | Name | -| ------------------ | ---------------------- | +|--------------------|------------------------| | [MatchmakeSession] | joinedMatchmakeSession | ### (40) AutoMatchmakeWithParam_Postpone #### Request | Type | Name | -| -------------------- | ------------------ | +|----------------------|--------------------| | [AutoMatchmakeParam] | autoMatchmakeParam | #### Response | Type | Name | -| ------------------ | ---------------------- | +|--------------------|------------------------| | [MatchmakeSession] | joinedMatchmakeSession | ### (41) FindMatchmakeSessionByGatheringIdDetail #### Request | Type | Name | -| ------ | ---- | +|--------|------| | Uint32 | gid | #### Response | Type | Name | -| ------------------ | ---------------- | +|--------------------|------------------| | [MatchmakeSession] | matchmakeSession | ### (42) BrowseMatchmakeSessionNoHolder #### Request | Type | Name | -| -------------------------------- | -------------- | +|----------------------------------|----------------| | [MatchmakeSessionSearchCriteria] | searchCriteria | | [ResultRange] | resultRange | #### Response | Type | Name | -| -------------------------------- | ------------------- | +|----------------------------------|---------------------| | [List]<[MatchmakeSession]> | lstMatchmakeSession | ### (43) BrowseMatchmakeSessionWithHostUrlsNoHolder #### Request | Type | Name | -| -------------------------------- | -------------- | +|----------------------------------|----------------| | [MatchmakeSessionSearchCriteria] | searchCriteria | | [ResultRange] | resultRange | #### Response | Type | Name | -| -------------------------------- | ------------------- | +|----------------------------------|---------------------| | [List]<[MatchmakeSession]> | lstMatchmakeSession | | [List]<[GatheringURLs]> | lstGatheringUrls | @@ -632,7 +633,7 @@ This method does not return anything. #### Request | Type | Name | -| ----------------------------- | --------------------------- | +|-------------------------------|-----------------------------| | [UpdateMatchmakeSessionParam] | updateMatchmakeSessionParam | #### Response @@ -642,20 +643,20 @@ This method does not return anything. #### Request | Type | Name | -| -------------------- | ------------------ | +|----------------------|--------------------| | [AutoMatchmakeParam] | autoMatchmakeParam | #### Response | Type | Name | -| ------ | --------- | +|--------|-----------| | Uint64 | requestId | ### (46) WithdrawMatchmaking #### Request | Type | Name | -| ------ | --------- | +|--------|-----------| | Uint64 | requestId | #### Response @@ -672,79 +673,79 @@ This method does not return anything. #### Request | Type | Name | -| -------------------- | ------ | +|----------------------|--------| | [List]<Uint32> | lstGid | #### Response | Type | Name | -| -------------------------------- | ------------------- | +|----------------------------------|---------------------| | [List]<[MatchmakeSession]> | lstMatchmakeSession | ### (49) FindMatchmakeSessionBySingleGatheringId #### Request | Type | Name | -| ------ | ---- | +|--------|------| | Uint32 | gid | #### Response | Type | Name | -| ------------------ | ---------------- | +|--------------------|------------------| | [MatchmakeSession] | matchmakeSession | ### (50) FindMatchmakeSessionByOwner #### Request | Type | Name | -| ------------- | ----------- | +|---------------|-------------| | [PID] | id | | [ResultRange] | resultRange | #### Response | Type | Name | -| -------------------------------- | ------------------- | +|----------------------------------|---------------------| | [List]<[MatchmakeSession]> | lstMatchmakeSession | ### (51) FindMatchmakeSessionByParticipant #### Request | Type | Name | -| ---------------------------------------- | ----- | +|------------------------------------------|-------| | [FindMatchmakeSessionByParticipantParam] | param | #### Response | Type | Name | -| ------------------------------------------------------- | ---------- | +|---------------------------------------------------------|------------| | [List]<[FindMatchmakeSessionByParticipantResult]> | lstSession | ### (52) BrowseMatchmakeSessionNoHolderNoResultRange #### Request | Type | Name | -| -------------------------------- | -------------- | +|----------------------------------|----------------| | [MatchmakeSessionSearchCriteria] | searchCriteria | #### Response | Type | Name | -| -------------------------------- | ------------------- | +|----------------------------------|---------------------| | [List]<[MatchmakeSession]> | lstMatchmakeSession | ### (53) BrowseMatchmakeSessionWithHostUrlsNoHolderNoResultRange #### Request | Type | Name | -| -------------------------------- | -------------- | +|----------------------------------|----------------| | [MatchmakeSessionSearchCriteria] | searchCriteria | #### Response | Type | Name | -| -------------------------------- | ------------------- | +|----------------------------------|---------------------| | [List]<[MatchmakeSession]> | lstMatchmakeSession | | [List]<[GatheringURLs]> | lstGatheringUrls | diff --git a/docs/nex/protocols/matchmake-extension/xenoblade-chronicles-x.md b/docs/nex/protocols/matchmake-extension/xenoblade-chronicles-x.md new file mode 100644 index 0000000..64a5aae --- /dev/null +++ b/docs/nex/protocols/matchmake-extension/xenoblade-chronicles-x.md @@ -0,0 +1,163 @@ +--- +layout: post +toc: true +title: Xenoblade Chronicles X (109) +--- + +This page describes the methods that are only seen in Xenoblade Chronicles X. The `BlackList` methods seem identical to the `BlockList` methods, just renamed. + +## Methods + +| Method ID | Method Name | +|-----------|------------------------------------------------------------------------------------------------------| +| 24 | [GetMyBlackList](#24-getmyblacklist) | +| 25 | [AddToBlackList](#25-addtoblacklist) | +| 26 | [RemoveFromBlackList](#26-removefromblacklist) | +| 27 | [ClearMyBlackList](#27-clearmyblacklist) | +| 36 | [JoinCommunityReturnJoinId](#36-joincommunityreturnjoinid) | +| 37 | [SearchPersistentGathering](#37-searchpersistentgathering) | +| 38 | [GetMatchmakeExtensionSetting](#38-getmatchmakeextensionsetting) | +| 39 | [CustomAutoMatchmake_Postpone](#39-customautomatchmake_postpone) | +| 40 | [CustomAutoMatchmakeWithSearchCriteria_Postpone](#40-customautomatchmakewithsearchcriteria_postpone) | +| 41 | [CustomJoinMatchmakeSessionEx](#41-customjoinmatchmakesessionex) | + +### (24) GetMyBlackList +#### Request +This method does not take any parameters. + +#### Response + +| Type | Name | +|---------------------|----------------| +| [List]<[PID]> | lstPrincipalId | + +### (25) AddToBlackList +#### Request + +| Type | Name | +|---------------------|----------------| +| [List]<[PID]> | lstPrincipalId | + +#### Response +This method does not return anything. + +### (26) RemoveFromBlackList +#### Request + +| Type | Name | +|---------------------|----------------| +| [List]<[PID]> | lstPrincipalId | + +#### Response +This method does not return anything. + +### (27) ClearMyBlackList +This method does not take any parameters and does not return anything. + +### (36) JoinCommunityReturnJoinId +#### Request + +| Type | Name | +|----------|---------| +| Uint32 | unknown | +| [String] | unknown | +| [String] | unknown | + +#### Response + +| Type | Name | +|--------|------| +| Uint32 | ID | + +### (37) SearchPersistentGathering +#### Request + +| Type | Name | +|-----------------------------------------------------------------------------------|--------------| +| [PersistentGatheringSearchCriteria](#persistentgatheringsearchcriteria-structure) | Search param | +| [ResultRange] | Result range | + +#### Response + +| Type | Name | +|-----------------------------------------------------------------------------------------------------------|------------| +| [List]<[PersistentGathering](/docs/nex/protocols/match-making/types#persistentgathering-structure)> | Gatherings | + +### (38) GetMatchmakeExtensionSetting +#### Request + +| Type | Name | +|----------|--------------| +| [String] | Setting name | + +#### Response + +| Type | Name | +|----------|---------------| +| [String] | Setting value | + +### (39) CustomAutoMatchmake_Postpone +#### Request + +| Type | Name | +|---------------------------|--------------| +| [Data]<[Gathering]> | anyGathering | +| [String] | strMessage | + +#### Response + +| Type | Name | +|---------------------------|-----------------| +| [Data]<[Gathering]> | joinedGathering | +| Uint32 | Unknown | + +### (40) CustomAutoMatchmakeWithSearchCriteria_Postpone +#### Request + +| Type | Name | +|------------------------------------------------|-------------------| +| [List]<[MatchmakeSessionSearchCriteria]> | lstSearchCriteria | +| [Data]<[Gathering]> | anyGathering | +| [String] | strMessage | + +#### Response + +| Type | Name | +|---------------------------|-----------------| +| [Data]<[Gathering]> | joinedGathering | +| Uint32 | Unknown | + +### (41) CustomJoinMatchmakeSessionEx +#### Request + +| Type | Name | +|----------|--------------------| +| Uint32 | gid | +| [String] | strMessage | +| Uint16 | participationCount | +| Uint32 | Unknown | + +#### Response + +| Type | Name | +|----------|------------| +| [Buffer] | sessionKey | +| Uint32 | Unknown | + +## Types +### PersistentGatheringSearchCriteria ([Structure]) + +| Type | Description | +|------------------------|-------------| +| [List]<[String]> | Unknown | +| [String] | Unknown | + +[Structure]: /docs/nex/types#structure +[PID]: /docs/nex/types#pid +[Buffer]: /docs/nex/types#buffer +[String]: /docs/nex/types#string +[List]: /docs/nex/types#list +[ResultRange]: /docs/nex/types#resultrange-structure +[Data]: /docs/nex/types#anydataholder +[Gathering]: /docs/nex/protocols/match-making/types#gathering-structure +[MatchmakeSessionSearchCriteria]: /docs/nex/protocols/match-making/types#matchmakesessionsearchcriteria-structure From 681dd243089968c9ce6b0c42e5a1a59f42c30f3a Mon Sep 17 00:00:00 2001 From: Jonathan Barrow Date: Wed, 6 Dec 2023 18:48:31 -0500 Subject: [PATCH 07/14] xenoblade: document DataStore patches --- docs/nex/protocols/datastore/index.md | 1 + .../datastore/xenoblade-chronicles-x.md | 368 ++++++++++++++++++ 2 files changed, 369 insertions(+) create mode 100644 docs/nex/protocols/datastore/xenoblade-chronicles-x.md diff --git a/docs/nex/protocols/datastore/index.md b/docs/nex/protocols/datastore/index.md index fdd9c8e..2a5159b 100644 --- a/docs/nex/protocols/datastore/index.md +++ b/docs/nex/protocols/datastore/index.md @@ -15,6 +15,7 @@ The following games have additional methods in the datastore protocol: * [Super Mario Odyssey](/docs/nex/protocols/datastore/super-mario-odyssey) * [Super Smash Bros. 4](/docs/nex/protocols/datastore/super-smash-bros-4) * [Super Smash Bros. Ultimate](/docs/nex/protocols/datastore/super-smash-bros-ultimate) +* [Xenoblade Chronicles X](/docs/nex/protocols/datastore/xenoblade-chronicles-x) This remainder of this page describes the methods that are not specific to any game. diff --git a/docs/nex/protocols/datastore/xenoblade-chronicles-x.md b/docs/nex/protocols/datastore/xenoblade-chronicles-x.md new file mode 100644 index 0000000..e988b08 --- /dev/null +++ b/docs/nex/protocols/datastore/xenoblade-chronicles-x.md @@ -0,0 +1,368 @@ +--- +layout: post +toc: true +title: Xenoblade Chronicles X (115) +--- + +This page describes the methods that are only seen in Xenoblade Chronicles X. Parts of the protocol has been renamed from `DataStoreProtocol` to `SocialDataStoreProtocol`. + +## Methods + +| Method ID | Method Name | +|-----------|------------------------------------------------------------------| +| 43 | [SearchRentalObject](#43-searchrentalobject) | +| 44 | [UploadRentalObject](#44-uploadrentalobject) | +| 45 | [GetRentalObject](#45-getrentalobject) | +| 46 | [DisableRentalObject](#46-disablerentalobject) | +| 47 | [BorrowRentalObject](#47-borrowrentalobject) | +| 48 | [GetBorrowingRentalObject](#48-getborrowingrentalobject) | +| 49 | [ReturnBorrowingRentalObject](#49-returnborrowingrentalobject) | +| 50 | [GetPeriodicRating](#50-getperiodicrating) | +| 51 | [RatePeriodicObject](#51-rateperiodicobject) | +| 52 | [SearchRentalObjectByDataId](#52-searchrentalobjectbydataid) | +| 53 | [SearchScheduledObject](#53-searchscheduledobject) | +| 54 | [PostScheduledObject](#54-postscheduledobject) | +| 55 | [RequestPost_Lazy](#55-requestpost_lazy) | +| 56 | [GetPeriodicRatingWithOffset](#56-getperiodicratingwithoffset) | +| 57 | [RatePeriodicObjectWithOffset](#57-rateperiodicobjectwithoffset) | +| 58 | [DebugUploadRentalObject](#58-debuguploadrentalobject) | +| 59 | [IsOliveCommunityExists](#59-isolivecommunityexists) | +| 60 | [ReplaceMetaBinaryWithDataId](#60-replacemetabinarywithdataid) | +| 61 | [DebugChangeMeta](#61-debugchangemeta) | + +### (43) SearchRentalObject +#### Request + +| Type | Name | +|---------------------------------------------------------------|-------| +| [RentalObjectSearchParam](#rentalobjectsearchparam-structure) | param | + +#### Response + +| Type | Name | +|-----------------------------------------------------------------|---------| +| [RentalObjectSearchResult](#rentalobjectsearchresult-structure) | results | + +### (44) UploadRentalObject +#### Request + +| Type | Name | +|---------------------------------------------------------------|-------| +| [RentalObjectUploadParam](#rentalobjectuploadparam-structure) | param | + +#### Response + +| Type | Name | +|--------|---------| +| Uint64 | Data ID | + +### (45) GetRentalObject +#### Request +This method does not take any parameters. + +#### Response + +| Type | Name | +|-------------------------------------------------|---------------| +| [RentalObjectInfo](#rentalobjectinfo-structure) | Rental object | + +### (46) DisableRentalObject +This method does not take any parameters and does not return anything. + +### (47) BorrowRentalObject +#### Request + +| Type | Name | +|--------|---------| +| Uint64 | Data ID | + +#### Response +This method does not return anything. + +### (48) GetBorrowingRentalObject +#### Request +This method does not take any parameters. + +#### Response + +| Type | Name | +|---------------------------------------------------------------|---------| +| [List]<[RentalObjectInfo](#rentalobjectinfo-structure)> | Unknown | +| [List]<Uint64> | Unknown | + +### (49) ReturnBorrowingRentalObject +#### Request + +| Type | Name | +|--------|---------| +| Uint64 | Data ID | + +#### Response +This method does not return anything. + +### (50) GetPeriodicRating +#### Request + +| Type | Name | +|--------|---------| +| Sint8 | Unknown | +| Sint32 | Unknown | + +#### Response + +| Type | Name | +|------------------------------------|---------| +| [List]<[List]<Uint64>> | Unknown | +| [List]<Uint64> | Unknown | + +### (51) RatePeriodicObject +#### Request + +| Type | Name | +|--------|---------| +| Sint8 | Unknown | +| Sint8 | Unknown | +| Sint32 | Unknown | + +#### Response + +| Type | Name | +|--------|---------| +| Uint64 | Unknown | +| Uint64 | Unknown | + +### (52) SearchRentalObjectByDataId +#### Request + +| Type | Name | +|---------------------------------------------------------------|---------| +| Uint64 | Data ID | +| [RentalObjectSearchParam](#rentalobjectsearchparam-structure) | param | + +#### Response + +| Type | Name | +|-----------------------------------------------------------------|---------| +| [RentalObjectSearchResult](#rentalobjectsearchresult-structure) | results | + +### (53) SearchScheduledObject +#### Request + +| Type | Name | +|------------------------|-------| +| [DataStoreSearchParam] | param | + +#### Response + +| Type | Name | +|-----------------------------------|---------| +| [List]<[DataStoreMetaInfo]> | Objects | + +### (54) PostScheduledObject +#### Request + +| Type | Name | +|-----------------------------|----------------| +| [DataStorePreparePostParam] | param | +| [DateTime] | Scheduled time | + +#### Response + +| Type | Name | +|--------|---------| +| Uint64 | Data ID | + +### (55) RequestPost_Lazy +#### Request + +| Type | Name | +|-------------------------------------------------|----------------| +| [RequestPostParam](#requestpostparam-structure) | param | +| [DateTime] | Scheduled time | + +#### Response + +| Type | Name | +|----------|---------| +| [String] | Unknown | + +### (56) GetPeriodicRatingWithOffset +#### Request + +| Type | Name | +|--------|---------| +| Uint32 | Unknown | +| Sint32 | Unknown | +| Sint32 | Unknown | + +#### Response + +| Type | Name | +|------------------------------------|---------| +| [List]<[List]<Uint64>> | Unknown | +| [List]<Uint64> | Unknown | + +### (57) RatePeriodicObjectWithOffset +#### Request + +| Type | Name | +|--------|---------| +| Uint32 | Unknown | +| Sint32 | Unknown | +| Sint8 | Unknown | +| Sint32 | Unknown | + +#### Response + +| Type | Name | +|--------|---------| +| Uint64 | Unknown | +| Uint64 | Unknown | + +### (58) DebugUploadRentalObject +#### Request + +| Type | Name | +|---------------------------------------------------------------|---------| +| [RentalObjectUploadParam](#rentalobjectuploadparam-structure) | param | +| Uint32 | Unknown | + +#### Response + +| Type | Name | +|--------|---------| +| Uint64 | Data ID | + +### (59) IsOliveCommunityExists +#### Request + +| Type | Name | +|----------------------|------------------------| +| [List]<Uint32> | Miiverse community IDs | +| Uint32 | Unknown | + +#### Response + +| Type | Name | +|--------------------|---------| +| [List]<Bool> | Results | + +### (60) ReplaceMetaBinaryWithDataId +#### Request + +| Type | Name | +|-----------------------------|---------| +| Uint64 | Data ID | +| [DataStorePreparePostParam] | param | + +#### Response +This method does not return anything. + +### (61) DebugChangeMeta +#### Request + +| Type | Name | +|---------------------------------------------------------------------------|-------| +| [DebugDataStoreChangeMetaParam](#debugdatastorechangemetaparam-structure) | param | + +#### Response +This method does not return anything. + + +## Types +### RentalObjectInfo ([Structure]) + +| Type | Name | +|----------------------|---------| +| Uint64 | Data ID | +| Uint32 | Unknown | +| Uint32 | Unknown | +| [String] | Unknown | +| Uint16 | Unknown | +| [qBuffer] | Unknown | +| [DateTime] | Unknown | +| [DateTime] | Unknown | +| Uint16 | Unknown | +| Uint8 | Unknown | +| Uint32 | Unknown | +| Uint64 | Unknown | +| Uint32 | Unknown | +| [DateTime] | Unknown | +| [DateTime] | Unknown | +| [List]<Uint32> | Unknown | + +### RentalObjectSearchCondition ([Structure]) + +| Type | Name | +|--------|---------| +| Uint32 | Unknown | +| Uint32 | Unknown | +| Uint32 | Unknown | +| Uint32 | Unknown | + +### RentalObjectSearchParam ([Structure]) + +| Type | Name | +|-------------------------------------------------------------------------------------|--------------| +| [List]<[RentalObjectSearchCondition](#rentalobjectsearchcondition-structure)> | Conditions | +| [List]<Uint32> | Unknown | +| Uint8 | Unknown | +| [ResultRange] | Result range | + +### RentalObjectSearchResult ([Structure]) + +| Type | Name | +|---------------------------------------------------------------|---------| +| Uint32 | Unknown | +| [List]<[RentalObjectInfo](#rentalobjectinfo-structure)> | Results | +| Uint8 | Unknown | + +### RentalObjectUploadParam ([Structure]) + +| Type | Name | +|----------------------|---------| +| [String] | Unknown | +| [qBuffer] | Unknown | +| [List]<Uint32> | Unknown | + +### RequestPostParam ([Structure]) + +| Type | Name | +|------------------------|---------| +| Uint32 | Unknown | +| Sint32 | Unknown | +| [qBuffer] | Unknown | +| [String] | Unknown | +| Uint32 | Unknown | +| Uint32 | Unknown | +| Uint8 | Unknown | +| Uint8 | Unknown | +| [qBuffer] | Unknown | +| [qBuffer] | Unknown | +| [List]<[String]> | Unknown | +| [String] | Unknown | + +### DebugDataStoreChangeMetaParam ([Structure]) +> This structure [inherits](/docs/nex/types#structure-inheritance) from [DataStoreChangeMetaParam] +{: .prompt-info } + +| Type | Name | +|------------|---------| +| Uint32 | Unknown | +| [DateTime] | Unknown | +| [DateTime] | Unknown | +| [DateTime] | Unknown | +| [DateTime] | Unknown | +| Uint32 | Unknown | + +[Structure]: /docs/nex/types#structure +[String]: /docs/nex/types#string +[List]: /docs/nex/types#list +[qBuffer]: /docs/nex/types#qbuffer +[DateTime]: /docs/nex/types#datetime +[ResultRange]: /docs/nex/types#resultrange-structure + +[DataStoreSearchParam]: /docs/nex/protocols/datastore/types#datastoresearchparam-structure +[DataStoreMetaInfo]: /docs/nex/protocols/datastore/types#datastoremetainfo-structure +[DataStorePreparePostParam]: /docs/nex/protocols/datastore/types#datastorepreparepostparam-structure +[DataStoreChangeMetaParam]: /docs/nex/protocols/datastore/types#datastorechangemetaparam-structure From 9bd7564ac26534be820ee80456dd94a49f116268 Mon Sep 17 00:00:00 2001 From: Jonathan Barrow Date: Wed, 6 Dec 2023 18:52:35 -0500 Subject: [PATCH 08/14] subscription: fix formatting and inheritance --- docs/nex/protocols/subscription.md | 31 +++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/docs/nex/protocols/subscription.md b/docs/nex/protocols/subscription.md index 3870d27..29e9c03 100644 --- a/docs/nex/protocols/subscription.md +++ b/docs/nex/protocols/subscription.md @@ -33,7 +33,7 @@ title: Subscription (117) | Type | Description | |-------------------------------------------------|-------------| | Uint32 | Unknown | -| [SubscriptionData](#subscriptiondata-nulldata) | Param | +| [SubscriptionData](#subscriptiondata-structure) | Param | #### Response This method does not return anything. @@ -43,7 +43,7 @@ This method does not return anything. | Type | Description | |-------------------------------------------------|-------------| -| [SubscriptionData](#subscriptiondata-nulldata) | Param | +| [SubscriptionData](#subscriptiondata-structure) | Param | #### Response This method does not return anything. @@ -82,7 +82,7 @@ This method does not take any parameters. | Type | Description | |---------------------------------------------------------------|--------------| -| [List]<[SubscriptionData](#subscriptiondata-nulldata)> | Friends data | +| [List]<[SubscriptionData](#subscriptiondata-structure)> | Friends data | ### (8) GetTargetSubscriptionData #### Request @@ -92,7 +92,7 @@ This method does not take any parameters. | Type | Description | |---------------------------------------------------------------|--------------| -| [List]<[SubscriptionData](#subscriptiondata-nulldata)> | Targets data | +| [List]<[SubscriptionData](#subscriptiondata-structure)> | Targets data | ### (9) GetActivePlayerSubscriptionData #### Request @@ -105,9 +105,9 @@ This method does not take any parameters. #### Response -| Type | Description | -|----------------------------------------------------------------------------------------------|-------------| -| [List]<[ActivePlayerSubscriptionData](#activeplayersubscriptiondata-subscriptiondata)> | Unknown | +| Type | Description | +|---------------------------------------------------------------------------------------|-------------| +| [List]<[ActivePlayerSubscriptionData](#activeplayersubscriptiondata-structure)> | Unknown | ### (10) GetSubscriptionData #### Request @@ -120,7 +120,7 @@ This method does not take any parameters. | Type | Description | |---------------------------------------------------------------|---------------| -| [List]<[SubscriptionData](#subscriptiondata-nulldata)> | Data for PIDs | +| [List]<[SubscriptionData](#subscriptiondata-structure)> | Data for PIDs | ### (11) ReplaceTargetAndGetSubscriptionData #### Request @@ -133,7 +133,7 @@ This method does not take any parameters. | Type | Description | |---------------------------------------------------------------|---------------| -| [List]<[SubscriptionData](#subscriptiondata-nulldata)> | Data for PIDs | +| [List]<[SubscriptionData](#subscriptiondata-structure)> | Data for PIDs | ### (12) SetPrivacyLevel #### Request @@ -184,7 +184,7 @@ This method does not take any parameters. | Type | Description | |-------------------------------------------------|-------------| | Uint32 | Unknown | -| [SubscriptionData](#subscriptiondata-nulldata) | Param | +| [SubscriptionData](#subscriptiondata-structure) | Param | | Uint32 | Unknown | | Uint32 | Unknown | | [String] | Unknown | @@ -197,7 +197,7 @@ This method does not return anything. | Type | Description | |-------------------------------------------------|-------------| -| [SubscriptionData](#subscriptiondata-nulldata) | Param | +| [SubscriptionData](#subscriptiondata-structure) | Param | | Uint32 | Unknown | | Uint32 | Unknown | | [String] | Unknown | @@ -218,20 +218,25 @@ This method does not return anything. This method does not return anything. ## Types -### SubscriptionData ([NullData]) +### SubscriptionData ([Structure]) +> This structure [inherits](/docs/nex/types#structure-inheritance) from [NullData] +{: .prompt-info } | Type | Description | |-----------|-------------| | Uint32 | Unknown | | [qBuffer] | Unknown | -### ActivePlayerSubscriptionData ([SubscriptionData](#subscriptiondata-nulldata)) +### ActivePlayerSubscriptionData ([Structure]) +> This structure [inherits](/docs/nex/types#structure-inheritance) from [SubscStructureriptionData](#subscriptiondata-structure) +{: .prompt-info } | Type | Description | |--------|-------------| | Uint8 | Unknown | | Uint32 | Unknown | +[Structure]: /docs/nex/types#structure [String]: /docs/nex/types#string [PID]: /docs/nex/types#pid [NullData]: /docs/nex/types#data-structure From 8ceed40f0f9f6eda000b52d2fbc26c83959c3d59 Mon Sep 17 00:00:00 2001 From: Jonathan Barrow Date: Wed, 6 Dec 2023 19:09:35 -0500 Subject: [PATCH 09/14] xenoblade: update RentalObjectSearchCondition --- docs/nex/protocols/datastore/xenoblade-chronicles-x.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/nex/protocols/datastore/xenoblade-chronicles-x.md b/docs/nex/protocols/datastore/xenoblade-chronicles-x.md index e988b08..63c96ae 100644 --- a/docs/nex/protocols/datastore/xenoblade-chronicles-x.md +++ b/docs/nex/protocols/datastore/xenoblade-chronicles-x.md @@ -298,7 +298,6 @@ This method does not return anything. | Uint32 | Unknown | | Uint32 | Unknown | | Uint32 | Unknown | -| Uint32 | Unknown | ### RentalObjectSearchParam ([Structure]) From a06f35408adb99addd285be44b9f8c1de99e63b3 Mon Sep 17 00:00:00 2001 From: Jonathan Barrow Date: Wed, 6 Dec 2023 19:34:10 -0500 Subject: [PATCH 10/14] xenoblade: document NATTraversalReportInternal protocol --- docs/nex/internal-protocols.md | 19 ------- docs/nex/protocols/dummy.md | 14 ++++++ docs/nex/protocols/index.md | 11 +++- .../nat-traversal-report-internal.md | 50 +++++++++++++++++++ .../protocols/secure-connection-internal.md | 19 +++++++ 5 files changed, 92 insertions(+), 21 deletions(-) delete mode 100644 docs/nex/internal-protocols.md create mode 100644 docs/nex/protocols/dummy.md create mode 100644 docs/nex/protocols/nat-traversal-report-internal.md create mode 100644 docs/nex/protocols/secure-connection-internal.md diff --git a/docs/nex/internal-protocols.md b/docs/nex/internal-protocols.md deleted file mode 100644 index 085092d..0000000 --- a/docs/nex/internal-protocols.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: post -toc: true -title: Internal Protocols ---- - -There seem to be some protocols that are used internally by the server and can only be observed through the [debug protocol](/docs/nex/protocols/debug). - -- DummyProtocol::LogoutNormally -- DummyProtocol::LogoutFaultily -- SecureConnectionInternalProtocol::GetConnectionID -- SecureConnectionInternalProtocol::InsertConnectionProperties -- SecureConnectionInternalProtocol::RequestURLs -- SecureConnectionInternalProtocol::TestConnectivity -- SecureConnectionInternalProtocol::UpdateConnectionProperties -- SecureConnectionInternalProtocol::ReplaceConnectionProperties -- SecureConnectionInternalProtocol::SendReport -- NATTraversalReportInternalProtocol::ReportNATProperties -- NATTraversalReportInternalProtocol::ReportNATTraversalResult diff --git a/docs/nex/protocols/dummy.md b/docs/nex/protocols/dummy.md new file mode 100644 index 0000000..46eec01 --- /dev/null +++ b/docs/nex/protocols/dummy.md @@ -0,0 +1,14 @@ +--- +layout: post +toc: true +title: Dummy (?) +--- + +This is an internal protocol used for inter-server communications. + +## Methods + +| Method ID | Method Name | +|-----------|----------------| +| ? | LogoutNormally | +| ? | LogoutFaultily | diff --git a/docs/nex/protocols/index.md b/docs/nex/protocols/index.md index 324f759..a96f929 100644 --- a/docs/nex/protocols/index.md +++ b/docs/nex/protocols/index.md @@ -6,8 +6,6 @@ title: NEX Protocols As explained on the [Game Server Overview](/docs/nex) page, NEX is based on Quazal Rendez-Vous. Many protocols come from the original Quazal Rendez-Vous library, but Nintendo also implemented some new protocols. -The servers also seem to use some [internal protocols](/docs/nex/internal-protocols). - See also: [RMC Protocol](/docs/rmc) ## Common Protocols @@ -90,3 +88,12 @@ Ubisoft games always use the original Quazal Rendez-Vous library instead of NEX. | ? | [Title storage admin](/docs/nex/protocols/title-storage-admin) | | ? | [User storage admin](/docs/nex/protocols/user-storage-admin) | | ? | [OLS storage](/docs/nex/protocols/ols-storage) | + +## Internal protocols +These protocols seem to be used internally by the servers. Likely for their inter-server communications. Many of these can only be observed through the [Debug](/docs/nex/protocols/debug) protocol. However some games implement subsets of these protocols + +| ID | Protocol | +|----|---------------------------------------------------------------------------------| +| ? | [Dummy](/docs/nex/protocols/dummy) | +| ? | [SecureConnectionInternal](/docs/nex/protocols/secure-connection-internal) | +| ? | [NATTraversalReportInternal](/docs/nex/protocols/nat-traversal-report-internal) | diff --git a/docs/nex/protocols/nat-traversal-report-internal.md b/docs/nex/protocols/nat-traversal-report-internal.md new file mode 100644 index 0000000..0ad9b49 --- /dev/null +++ b/docs/nex/protocols/nat-traversal-report-internal.md @@ -0,0 +1,50 @@ +--- +layout: post +toc: true +title: NATTraversalReportInternal (?) +--- + +This is an internal protocol used for inter-server communications. + +## Methods + +| Method ID | Method Name | +|-----------|---------------------------------------------------------------------| +| 1 | [ReportNATTraversalResult](#1-reportnattraversalresult) | +| 2 | [ReportNATProperties](#2-reportnatproperties) | +| 3 | [ReportNATTraversalResultDetail](#3-reportnattraversalresultdetail) | + +### (1) ReportNATTraversalResult +#### Request + +| Type | Description | +|--------|-------------| +| Uint32 | Unknown | +| Uint32 | Unknown | + +#### Response +This method does not return anything. + +### (2) ReportNATProperties +#### Request + +| Type | Description | +|--------|-------------| +| Uint32 | Unknown | +| Uint32 | Unknown | +| Uint32 | Unknown | + +#### Response +This method does not return anything. + +### (3) ReportNATTraversalResultDetail +#### Request + +| Type | Description | +|--------|-------------| +| Uint32 | Unknown | +| Sint32 | Unknown | +| Uint32 | Unknown | + +#### Response +This method does not return anything. diff --git a/docs/nex/protocols/secure-connection-internal.md b/docs/nex/protocols/secure-connection-internal.md new file mode 100644 index 0000000..3e33f95 --- /dev/null +++ b/docs/nex/protocols/secure-connection-internal.md @@ -0,0 +1,19 @@ +--- +layout: post +toc: true +title: SecureConnectionInternal (?) +--- + +This is an internal protocol used for inter-server communications. + +## Methods + +| Method ID | Method Name | +|-----------|-----------------------------| +| ? | GetConnectionID | +| ? | InsertConnectionProperties | +| ? | RequestURLs | +| ? | TestConnectivity | +| ? | UpdateConnectionProperties | +| ? | ReplaceConnectionProperties | +| ? | SendReport | From e1b40918783984557d9c59a56374d24a142715bf Mon Sep 17 00:00:00 2001 From: Jonathan Barrow Date: Wed, 6 Dec 2023 21:06:24 -0500 Subject: [PATCH 11/14] xenoblade: update DataStore protocol names --- docs/nex/protocols/datastore/xenoblade-chronicles-x.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/nex/protocols/datastore/xenoblade-chronicles-x.md b/docs/nex/protocols/datastore/xenoblade-chronicles-x.md index 63c96ae..55633d7 100644 --- a/docs/nex/protocols/datastore/xenoblade-chronicles-x.md +++ b/docs/nex/protocols/datastore/xenoblade-chronicles-x.md @@ -4,7 +4,13 @@ toc: true title: Xenoblade Chronicles X (115) --- -This page describes the methods that are only seen in Xenoblade Chronicles X. Parts of the protocol has been renamed from `DataStoreProtocol` to `SocialDataStoreProtocol`. +This page describes the methods that are only seen in Xenoblade Chronicles X. + +Methods 43-49, 52 and 58 belong to `RentalObjectProtocol`. + +Methods 50, 51, 56 and 57 belong to `PeriodicObjectProtocol`. + +Methods 53 and 54 belong to `ScheduledObjectProtocol`. ## Methods From 9cb019538790b8362df81f43467f7dc3523ed235 Mon Sep 17 00:00:00 2001 From: Jonathan Barrow Date: Wed, 6 Dec 2023 21:09:32 -0500 Subject: [PATCH 12/14] xenoblade: update Name columns to Description --- .../datastore/xenoblade-chronicles-x.md | 308 +++++++++--------- .../xenoblade-chronicles-x.md | 52 +-- .../xenoblade-chronicles-x.md | 10 +- 3 files changed, 185 insertions(+), 185 deletions(-) diff --git a/docs/nex/protocols/datastore/xenoblade-chronicles-x.md b/docs/nex/protocols/datastore/xenoblade-chronicles-x.md index 55633d7..2af37ab 100644 --- a/docs/nex/protocols/datastore/xenoblade-chronicles-x.md +++ b/docs/nex/protocols/datastore/xenoblade-chronicles-x.md @@ -39,28 +39,28 @@ Methods 53 and 54 belong to `ScheduledObjectProtocol`. ### (43) SearchRentalObject #### Request -| Type | Name | -|---------------------------------------------------------------|-------| -| [RentalObjectSearchParam](#rentalobjectsearchparam-structure) | param | +| Type | Description | +|---------------------------------------------------------------|-------------| +| [RentalObjectSearchParam](#rentalobjectsearchparam-structure) | param | #### Response -| Type | Name | -|-----------------------------------------------------------------|---------| -| [RentalObjectSearchResult](#rentalobjectsearchresult-structure) | results | +| Type | Description | +|-----------------------------------------------------------------|-------------| +| [RentalObjectSearchResult](#rentalobjectsearchresult-structure) | results | ### (44) UploadRentalObject #### Request -| Type | Name | -|---------------------------------------------------------------|-------| -| [RentalObjectUploadParam](#rentalobjectuploadparam-structure) | param | +| Type | Description | +|---------------------------------------------------------------|-------------| +| [RentalObjectUploadParam](#rentalobjectuploadparam-structure) | param | #### Response -| Type | Name | -|--------|---------| -| Uint64 | Data ID | +| Type | Description | +|--------|-------------| +| Uint64 | Data ID | ### (45) GetRentalObject #### Request @@ -68,7 +68,7 @@ This method does not take any parameters. #### Response -| Type | Name | +| Type | Description | |-------------------------------------------------|---------------| | [RentalObjectInfo](#rentalobjectinfo-structure) | Rental object | @@ -78,9 +78,9 @@ This method does not take any parameters and does not return anything. ### (47) BorrowRentalObject #### Request -| Type | Name | -|--------|---------| -| Uint64 | Data ID | +| Type | Description | +|--------|-------------| +| Uint64 | Data ID | #### Response This method does not return anything. @@ -91,17 +91,17 @@ This method does not take any parameters. #### Response -| Type | Name | -|---------------------------------------------------------------|---------| -| [List]<[RentalObjectInfo](#rentalobjectinfo-structure)> | Unknown | -| [List]<Uint64> | Unknown | +| Type | Description | +|---------------------------------------------------------------|-------------| +| [List]<[RentalObjectInfo](#rentalobjectinfo-structure)> | Unknown | +| [List]<Uint64> | Unknown | ### (49) ReturnBorrowingRentalObject #### Request -| Type | Name | -|--------|---------| -| Uint64 | Data ID | +| Type | Description | +|--------|-------------| +| Uint64 | Data ID | #### Response This method does not return anything. @@ -109,157 +109,157 @@ This method does not return anything. ### (50) GetPeriodicRating #### Request -| Type | Name | -|--------|---------| -| Sint8 | Unknown | -| Sint32 | Unknown | +| Type | Description | +|--------|-------------| +| Sint8 | Unknown | +| Sint32 | Unknown | #### Response -| Type | Name | -|------------------------------------|---------| -| [List]<[List]<Uint64>> | Unknown | -| [List]<Uint64> | Unknown | +| Type | Description | +|------------------------------------|-------------| +| [List]<[List]<Uint64>> | Unknown | +| [List]<Uint64> | Unknown | ### (51) RatePeriodicObject #### Request -| Type | Name | -|--------|---------| -| Sint8 | Unknown | -| Sint8 | Unknown | -| Sint32 | Unknown | +| Type | Description | +|--------|-------------| +| Sint8 | Unknown | +| Sint8 | Unknown | +| Sint32 | Unknown | #### Response -| Type | Name | -|--------|---------| -| Uint64 | Unknown | -| Uint64 | Unknown | +| Type | Description | +|--------|-------------| +| Uint64 | Unknown | +| Uint64 | Unknown | ### (52) SearchRentalObjectByDataId #### Request -| Type | Name | -|---------------------------------------------------------------|---------| -| Uint64 | Data ID | -| [RentalObjectSearchParam](#rentalobjectsearchparam-structure) | param | +| Type | Description | +|---------------------------------------------------------------|-------------| +| Uint64 | Data ID | +| [RentalObjectSearchParam](#rentalobjectsearchparam-structure) | param | #### Response -| Type | Name | -|-----------------------------------------------------------------|---------| -| [RentalObjectSearchResult](#rentalobjectsearchresult-structure) | results | +| Type | Description | +|-----------------------------------------------------------------|-------------| +| [RentalObjectSearchResult](#rentalobjectsearchresult-structure) | results | ### (53) SearchScheduledObject #### Request -| Type | Name | -|------------------------|-------| -| [DataStoreSearchParam] | param | +| Type | Description | +|------------------------|-------------| +| [DataStoreSearchParam] | param | #### Response -| Type | Name | -|-----------------------------------|---------| -| [List]<[DataStoreMetaInfo]> | Objects | +| Type | Description | +|-----------------------------------|-------------| +| [List]<[DataStoreMetaInfo]> | Objects | ### (54) PostScheduledObject #### Request -| Type | Name | +| Type | Description | |-----------------------------|----------------| | [DataStorePreparePostParam] | param | | [DateTime] | Scheduled time | #### Response -| Type | Name | -|--------|---------| -| Uint64 | Data ID | +| Type | Description | +|--------|-------------| +| Uint64 | Data ID | ### (55) RequestPost_Lazy #### Request -| Type | Name | +| Type | Description | |-------------------------------------------------|----------------| | [RequestPostParam](#requestpostparam-structure) | param | | [DateTime] | Scheduled time | #### Response -| Type | Name | -|----------|---------| -| [String] | Unknown | +| Type | Description | +|----------|-------------| +| [String] | Unknown | ### (56) GetPeriodicRatingWithOffset #### Request -| Type | Name | -|--------|---------| -| Uint32 | Unknown | -| Sint32 | Unknown | -| Sint32 | Unknown | +| Type | Description | +|--------|-------------| +| Uint32 | Unknown | +| Sint32 | Unknown | +| Sint32 | Unknown | #### Response -| Type | Name | -|------------------------------------|---------| -| [List]<[List]<Uint64>> | Unknown | -| [List]<Uint64> | Unknown | +| Type | Description | +|------------------------------------|-------------| +| [List]<[List]<Uint64>> | Unknown | +| [List]<Uint64> | Unknown | ### (57) RatePeriodicObjectWithOffset #### Request -| Type | Name | -|--------|---------| -| Uint32 | Unknown | -| Sint32 | Unknown | -| Sint8 | Unknown | -| Sint32 | Unknown | +| Type | Description | +|--------|-------------| +| Uint32 | Unknown | +| Sint32 | Unknown | +| Sint8 | Unknown | +| Sint32 | Unknown | #### Response -| Type | Name | -|--------|---------| -| Uint64 | Unknown | -| Uint64 | Unknown | +| Type | Description | +|--------|-------------| +| Uint64 | Unknown | +| Uint64 | Unknown | ### (58) DebugUploadRentalObject #### Request -| Type | Name | -|---------------------------------------------------------------|---------| -| [RentalObjectUploadParam](#rentalobjectuploadparam-structure) | param | -| Uint32 | Unknown | +| Type | Description | +|---------------------------------------------------------------|-------------| +| [RentalObjectUploadParam](#rentalobjectuploadparam-structure) | param | +| Uint32 | Unknown | #### Response -| Type | Name | -|--------|---------| -| Uint64 | Data ID | +| Type | Description | +|--------|-------------| +| Uint64 | Data ID | ### (59) IsOliveCommunityExists #### Request -| Type | Name | +| Type | Description | |----------------------|------------------------| | [List]<Uint32> | Miiverse community IDs | | Uint32 | Unknown | #### Response -| Type | Name | -|--------------------|---------| -| [List]<Bool> | Results | +| Type | Description | +|--------------------|-------------| +| [List]<Bool> | Results | ### (60) ReplaceMetaBinaryWithDataId #### Request -| Type | Name | -|-----------------------------|---------| -| Uint64 | Data ID | -| [DataStorePreparePostParam] | param | +| Type | Description | +|-----------------------------|-------------| +| Uint64 | Data ID | +| [DataStorePreparePostParam] | param | #### Response This method does not return anything. @@ -267,9 +267,9 @@ This method does not return anything. ### (61) DebugChangeMeta #### Request -| Type | Name | -|---------------------------------------------------------------------------|-------| -| [DebugDataStoreChangeMetaParam](#debugdatastorechangemetaparam-structure) | param | +| Type | Description | +|---------------------------------------------------------------------------|-------------| +| [DebugDataStoreChangeMetaParam](#debugdatastorechangemetaparam-structure) | param | #### Response This method does not return anything. @@ -278,36 +278,36 @@ This method does not return anything. ## Types ### RentalObjectInfo ([Structure]) -| Type | Name | -|----------------------|---------| -| Uint64 | Data ID | -| Uint32 | Unknown | -| Uint32 | Unknown | -| [String] | Unknown | -| Uint16 | Unknown | -| [qBuffer] | Unknown | -| [DateTime] | Unknown | -| [DateTime] | Unknown | -| Uint16 | Unknown | -| Uint8 | Unknown | -| Uint32 | Unknown | -| Uint64 | Unknown | -| Uint32 | Unknown | -| [DateTime] | Unknown | -| [DateTime] | Unknown | -| [List]<Uint32> | Unknown | +| Type | Description | +|----------------------|-------------| +| Uint64 | Data ID | +| Uint32 | Unknown | +| Uint32 | Unknown | +| [String] | Unknown | +| Uint16 | Unknown | +| [qBuffer] | Unknown | +| [DateTime] | Unknown | +| [DateTime] | Unknown | +| Uint16 | Unknown | +| Uint8 | Unknown | +| Uint32 | Unknown | +| Uint64 | Unknown | +| Uint32 | Unknown | +| [DateTime] | Unknown | +| [DateTime] | Unknown | +| [List]<Uint32> | Unknown | ### RentalObjectSearchCondition ([Structure]) -| Type | Name | -|--------|---------| -| Uint32 | Unknown | -| Uint32 | Unknown | -| Uint32 | Unknown | +| Type | Description | +|--------|-------------| +| Uint32 | Unknown | +| Uint32 | Unknown | +| Uint32 | Unknown | ### RentalObjectSearchParam ([Structure]) -| Type | Name | +| Type | Description | |-------------------------------------------------------------------------------------|--------------| | [List]<[RentalObjectSearchCondition](#rentalobjectsearchcondition-structure)> | Conditions | | [List]<Uint32> | Unknown | @@ -316,49 +316,49 @@ This method does not return anything. ### RentalObjectSearchResult ([Structure]) -| Type | Name | -|---------------------------------------------------------------|---------| -| Uint32 | Unknown | -| [List]<[RentalObjectInfo](#rentalobjectinfo-structure)> | Results | -| Uint8 | Unknown | +| Type | Description | +|---------------------------------------------------------------|-------------| +| Uint32 | Unknown | +| [List]<[RentalObjectInfo](#rentalobjectinfo-structure)> | Results | +| Uint8 | Unknown | ### RentalObjectUploadParam ([Structure]) -| Type | Name | -|----------------------|---------| -| [String] | Unknown | -| [qBuffer] | Unknown | -| [List]<Uint32> | Unknown | +| Type | Description | +|----------------------|-------------| +| [String] | Unknown | +| [qBuffer] | Unknown | +| [List]<Uint32> | Unknown | ### RequestPostParam ([Structure]) -| Type | Name | -|------------------------|---------| -| Uint32 | Unknown | -| Sint32 | Unknown | -| [qBuffer] | Unknown | -| [String] | Unknown | -| Uint32 | Unknown | -| Uint32 | Unknown | -| Uint8 | Unknown | -| Uint8 | Unknown | -| [qBuffer] | Unknown | -| [qBuffer] | Unknown | -| [List]<[String]> | Unknown | -| [String] | Unknown | +| Type | Description | +|------------------------|-------------| +| Uint32 | Unknown | +| Sint32 | Unknown | +| [qBuffer] | Unknown | +| [String] | Unknown | +| Uint32 | Unknown | +| Uint32 | Unknown | +| Uint8 | Unknown | +| Uint8 | Unknown | +| [qBuffer] | Unknown | +| [qBuffer] | Unknown | +| [List]<[String]> | Unknown | +| [String] | Unknown | ### DebugDataStoreChangeMetaParam ([Structure]) > This structure [inherits](/docs/nex/types#structure-inheritance) from [DataStoreChangeMetaParam] {: .prompt-info } -| Type | Name | -|------------|---------| -| Uint32 | Unknown | -| [DateTime] | Unknown | -| [DateTime] | Unknown | -| [DateTime] | Unknown | -| [DateTime] | Unknown | -| Uint32 | Unknown | +| Type | Description | +|------------|-------------| +| Uint32 | Unknown | +| [DateTime] | Unknown | +| [DateTime] | Unknown | +| [DateTime] | Unknown | +| [DateTime] | Unknown | +| Uint32 | Unknown | [Structure]: /docs/nex/types#structure [String]: /docs/nex/types#string diff --git a/docs/nex/protocols/matchmake-extension/xenoblade-chronicles-x.md b/docs/nex/protocols/matchmake-extension/xenoblade-chronicles-x.md index 64a5aae..b3ec12b 100644 --- a/docs/nex/protocols/matchmake-extension/xenoblade-chronicles-x.md +++ b/docs/nex/protocols/matchmake-extension/xenoblade-chronicles-x.md @@ -27,14 +27,14 @@ This method does not take any parameters. #### Response -| Type | Name | +| Type | Description | |---------------------|----------------| | [List]<[PID]> | lstPrincipalId | ### (25) AddToBlackList #### Request -| Type | Name | +| Type | Description | |---------------------|----------------| | [List]<[PID]> | lstPrincipalId | @@ -44,7 +44,7 @@ This method does not return anything. ### (26) RemoveFromBlackList #### Request -| Type | Name | +| Type | Description | |---------------------|----------------| | [List]<[PID]> | lstPrincipalId | @@ -57,56 +57,56 @@ This method does not take any parameters and does not return anything. ### (36) JoinCommunityReturnJoinId #### Request -| Type | Name | -|----------|---------| -| Uint32 | unknown | -| [String] | unknown | -| [String] | unknown | +| Type | Description | +|----------|-------------| +| Uint32 | unknown | +| [String] | unknown | +| [String] | unknown | #### Response -| Type | Name | -|--------|------| -| Uint32 | ID | +| Type | Description | +|--------|-------------| +| Uint32 | ID | ### (37) SearchPersistentGathering #### Request -| Type | Name | +| Type | Description | |-----------------------------------------------------------------------------------|--------------| | [PersistentGatheringSearchCriteria](#persistentgatheringsearchcriteria-structure) | Search param | | [ResultRange] | Result range | #### Response -| Type | Name | -|-----------------------------------------------------------------------------------------------------------|------------| -| [List]<[PersistentGathering](/docs/nex/protocols/match-making/types#persistentgathering-structure)> | Gatherings | +| Type | Description | +|-----------------------------------------------------------------------------------------------------------|-------------| +| [List]<[PersistentGathering](/docs/nex/protocols/match-making/types#persistentgathering-structure)> | Gatherings | ### (38) GetMatchmakeExtensionSetting #### Request -| Type | Name | +| Type | Description | |----------|--------------| | [String] | Setting name | #### Response -| Type | Name | +| Type | Description | |----------|---------------| | [String] | Setting value | ### (39) CustomAutoMatchmake_Postpone #### Request -| Type | Name | +| Type | Description | |---------------------------|--------------| | [Data]<[Gathering]> | anyGathering | | [String] | strMessage | #### Response -| Type | Name | +| Type | Description | |---------------------------|-----------------| | [Data]<[Gathering]> | joinedGathering | | Uint32 | Unknown | @@ -114,7 +114,7 @@ This method does not take any parameters and does not return anything. ### (40) CustomAutoMatchmakeWithSearchCriteria_Postpone #### Request -| Type | Name | +| Type | Description | |------------------------------------------------|-------------------| | [List]<[MatchmakeSessionSearchCriteria]> | lstSearchCriteria | | [Data]<[Gathering]> | anyGathering | @@ -122,7 +122,7 @@ This method does not take any parameters and does not return anything. #### Response -| Type | Name | +| Type | Description | |---------------------------|-----------------| | [Data]<[Gathering]> | joinedGathering | | Uint32 | Unknown | @@ -130,7 +130,7 @@ This method does not take any parameters and does not return anything. ### (41) CustomJoinMatchmakeSessionEx #### Request -| Type | Name | +| Type | Description | |----------|--------------------| | Uint32 | gid | | [String] | strMessage | @@ -139,10 +139,10 @@ This method does not take any parameters and does not return anything. #### Response -| Type | Name | -|----------|------------| -| [Buffer] | sessionKey | -| Uint32 | Unknown | +| Type | Description | +|----------|-------------| +| [Buffer] | sessionKey | +| Uint32 | Unknown | ## Types ### PersistentGatheringSearchCriteria ([Structure]) diff --git a/docs/nex/protocols/message-delivery/xenoblade-chronicles-x.md b/docs/nex/protocols/message-delivery/xenoblade-chronicles-x.md index a016d16..e1022dd 100644 --- a/docs/nex/protocols/message-delivery/xenoblade-chronicles-x.md +++ b/docs/nex/protocols/message-delivery/xenoblade-chronicles-x.md @@ -23,7 +23,7 @@ For message types, see [Messaging Protocol](/docs/nex/protocols/messaging#types) ### (1) DeliverMessage #### Request -| Type | Name | +| Type | Description | |--------|--------------| | [Data] | oUserMessage | @@ -33,10 +33,10 @@ This method does not return anything. ### (2) DeliverMessageMultiTarget #### Request -| Type | Name | -|---------------------|---------| -| [List]<[PID]> | Targets | -| [Data] | Message | +| Type | Description | +|---------------------|-------------| +| [List]<[PID]> | Targets | +| [Data] | Message | #### Response This method does not return anything. From a09a4deb3102416585812d7ee3e61155c0bead26 Mon Sep 17 00:00:00 2001 From: Jonathan Barrow Date: Wed, 6 Dec 2023 21:12:00 -0500 Subject: [PATCH 13/14] xenoblade: rename BlockList methods to BlackList in common --- .../protocols/matchmake-extension/index.md | 18 ++++----- .../xenoblade-chronicles-x.md | 39 +------------------ 2 files changed, 10 insertions(+), 47 deletions(-) diff --git a/docs/nex/protocols/matchmake-extension/index.md b/docs/nex/protocols/matchmake-extension/index.md index 40a2921..04ad748 100644 --- a/docs/nex/protocols/matchmake-extension/index.md +++ b/docs/nex/protocols/matchmake-extension/index.md @@ -47,10 +47,10 @@ This remainder of this page describes the methods that are not specific to any g | 21 | [FindOfficialCommunity](#21-findofficialcommunity) | | 22 | [FindCommunityByParticipant](#22-findcommunitybyparticipant) | | 23 | [UpdatePrivacySetting](#23-updateprivacysetting) | -| 24 | [GetMyBlockList](#24-getmyblocklist) | -| 25 | [AddToBlockList](#25-addtoblocklist) | -| 26 | [RemoveFromBlockList](#26-removefromblocklist) | -| 27 | [ClearMyBlockList](#27-clearmyblocklist) | +| 24 | [GetMyBlackList](#24-getmyblacklist) | +| 25 | [AddToBlackList](#25-addtoblacklist) | +| 26 | [RemoveFromBlackList](#26-removefromblacklist) | +| 27 | [ClearMyBlackList](#27-clearmyblacklist) | | 28 | [ReportViolation](#28-reportviolation) | | 29 | [IsViolationUser](#29-isviolationuser) | | 30 | [JoinMatchmakeSessionEx](#30-joinmatchmakesessionex) | @@ -381,7 +381,7 @@ This method does not return anything. #### Response This method does not return anything. -### (24) GetMyBlockList +### (24) GetMyBlackList #### Request This method does not take any parameters. @@ -391,7 +391,7 @@ This method does not take any parameters. |---------------------|----------------| | [List]<[PID]> | lstPrincipalId | -### (25) AddToBlockList +### (25) AddToBlackList #### Request | Type | Name | @@ -401,7 +401,7 @@ This method does not take any parameters. #### Response This method does not return anything. -### (26) RemoveFromBlockList +### (26) RemoveFromBlackList #### Request | Type | Name | @@ -411,7 +411,7 @@ This method does not return anything. #### Response This method does not return anything. -### (27) ClearMyBlockList +### (27) ClearMyBlackList #### Request This method does not take any parameters. @@ -448,7 +448,7 @@ This method does not take any parameters. |----------|---------------------| | Uint32 | gid | | [String] | strMessage | -| Bool | dontCareMyBlockList | +| Bool | dontCareMyBlackList | | Uint16 | participationCount | #### Response diff --git a/docs/nex/protocols/matchmake-extension/xenoblade-chronicles-x.md b/docs/nex/protocols/matchmake-extension/xenoblade-chronicles-x.md index b3ec12b..9a675f4 100644 --- a/docs/nex/protocols/matchmake-extension/xenoblade-chronicles-x.md +++ b/docs/nex/protocols/matchmake-extension/xenoblade-chronicles-x.md @@ -4,16 +4,12 @@ toc: true title: Xenoblade Chronicles X (109) --- -This page describes the methods that are only seen in Xenoblade Chronicles X. The `BlackList` methods seem identical to the `BlockList` methods, just renamed. +This page describes the methods that are only seen in Xenoblade Chronicles X ## Methods | Method ID | Method Name | |-----------|------------------------------------------------------------------------------------------------------| -| 24 | [GetMyBlackList](#24-getmyblacklist) | -| 25 | [AddToBlackList](#25-addtoblacklist) | -| 26 | [RemoveFromBlackList](#26-removefromblacklist) | -| 27 | [ClearMyBlackList](#27-clearmyblacklist) | | 36 | [JoinCommunityReturnJoinId](#36-joincommunityreturnjoinid) | | 37 | [SearchPersistentGathering](#37-searchpersistentgathering) | | 38 | [GetMatchmakeExtensionSetting](#38-getmatchmakeextensionsetting) | @@ -21,39 +17,6 @@ This page describes the methods that are only seen in Xenoblade Chronicles X. Th | 40 | [CustomAutoMatchmakeWithSearchCriteria_Postpone](#40-customautomatchmakewithsearchcriteria_postpone) | | 41 | [CustomJoinMatchmakeSessionEx](#41-customjoinmatchmakesessionex) | -### (24) GetMyBlackList -#### Request -This method does not take any parameters. - -#### Response - -| Type | Description | -|---------------------|----------------| -| [List]<[PID]> | lstPrincipalId | - -### (25) AddToBlackList -#### Request - -| Type | Description | -|---------------------|----------------| -| [List]<[PID]> | lstPrincipalId | - -#### Response -This method does not return anything. - -### (26) RemoveFromBlackList -#### Request - -| Type | Description | -|---------------------|----------------| -| [List]<[PID]> | lstPrincipalId | - -#### Response -This method does not return anything. - -### (27) ClearMyBlackList -This method does not take any parameters and does not return anything. - ### (36) JoinCommunityReturnJoinId #### Request From 6e1a215f90f630b4929dfe4841424d5a1f8167ff Mon Sep 17 00:00:00 2001 From: Jonathan Barrow Date: Thu, 7 Dec 2023 15:04:46 -0500 Subject: [PATCH 14/14] xenoblade: removed unnecessary MatchMaking patch docs --- docs/nex/protocols/match-making/index.md | 15 +++---- .../match-making/xenoblade-chronicles-x.md | 41 ------------------- 2 files changed, 8 insertions(+), 48 deletions(-) delete mode 100644 docs/nex/protocols/match-making/xenoblade-chronicles-x.md diff --git a/docs/nex/protocols/match-making/index.md b/docs/nex/protocols/match-making/index.md index e8b4e66..9a09299 100644 --- a/docs/nex/protocols/match-making/index.md +++ b/docs/nex/protocols/match-making/index.md @@ -4,13 +4,6 @@ toc: true title: Match Making (21) --- -## Extended protocols - -The following games have changed methods in the protocol: -* [Xenoblade Chronicles X](/docs/nex/protocols/match-making/xenoblade-chronicles-x) - -This remainder of this page describes the methods that are not specific to any game. - ## Methods | Method ID | Method Name | @@ -540,6 +533,8 @@ This method does not take any parameters. | Bool | %retval% | Result | ### (36) MigrateGatheringOwnershipV1 +Before NEX 3.7 this method was named `MigrateGatheringOwnership`. As of NEX 3.7 this has been renamed to `MigrateGatheringOwnershipV1` and a new `MigrateGatheringOwnership` method has been added with a different structure + #### Request | Type | Name | Description | @@ -590,6 +585,8 @@ This method does not return anything. This method does not return anything. ### (40) UpdateSessionHostV1 +Before NEX 3.7 this method was named `UpdateSessionHost`. As of NEX 3.7 this has been renamed to `UpdateSessionHostV1` and a new `UpdateSessionHost` method has been added with a different structure + #### Request | Type | Name | Description | @@ -613,6 +610,8 @@ This method does not return anything. | [List]<[StationURL]> | lstURLs | Session urls | ### (42) UpdateSessionHost +Before NEX 3.7 this method did not exist, and the method currently named `UpdateSessionHostV1` was named `UpdateSessionHost`. As of NEX 3.7 the old method was renamed to `UpdateSessionHostV1` and this new `UpdateSessionHost` method was added with a different structure + #### Request | Type | Name | Description | @@ -638,6 +637,8 @@ This method does not return anything. | Bool | %retval% | Result | ### (44) MigrateGatheringOwnership +Before NEX 3.7 this method did not exist, and the method currently named `MigrateGatheringOwnershipV1` was named `MigrateGatheringOwnership`. As of NEX 3.7 the old method was renamed to `MigrateGatheringOwnershipV1` and this new `MigrateGatheringOwnership` method was added with a different structure + #### Request | Type | Name | Description | diff --git a/docs/nex/protocols/match-making/xenoblade-chronicles-x.md b/docs/nex/protocols/match-making/xenoblade-chronicles-x.md deleted file mode 100644 index 5bda0c5..0000000 --- a/docs/nex/protocols/match-making/xenoblade-chronicles-x.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: post -toc: true -title: Xenoblade Chronicles X (112) ---- - -At some point NEX was updated and both `MigrateGatheringOwnership` and `UpdateSessionHost` to have additional parameters. These then became the new `MigrateGatheringOwnership` and `UpdateSessionHost`, and the old methods without the additional parameters became `MigrateGatheringOwnershipV1` and `UpdateSessionHostV1`. Xenoblade Chronicles X uses the old versions of these methods. - -## Methods - -| Method ID | Method Name | -|-----------|------------------------------------------------------------| -| 36 | [MigrateGatheringOwnership](#36-migrategatheringownership) | -| 40 | [UpdateSessionHost](#40-updatesessionhost) | - -### (36) MigrateGatheringOwnership -#### Request - -| Type | Name | Description | -|---------------------|-------------------------|--------------------------| -| Uint32 | gid | Gathering id | -| [List]<[PID]> | lstPotentialNewOwnersID | Potential new owner pids | - -#### Response - -| Type | Name | Description | -|------|----------|-------------| -| Bool | %retval% | Result | - -### (40) UpdateSessionHost -#### Request - -| Type | Name | Description | -|--------|------|--------------| -| Uint32 | gid | Gathering id | - -#### Response -This method does not return anything. - -[List]: /docs/nex/types#list -[PID]: /docs/nex/types#pid