diff --git a/javasteam-dota2/.gitignore b/javasteam-dota2/.gitignore new file mode 100644 index 00000000..d1638636 --- /dev/null +++ b/javasteam-dota2/.gitignore @@ -0,0 +1 @@ +build/ \ No newline at end of file diff --git a/javasteam-dota2/build.gradle.kts b/javasteam-dota2/build.gradle.kts new file mode 100644 index 00000000..46964b29 --- /dev/null +++ b/javasteam-dota2/build.gradle.kts @@ -0,0 +1,69 @@ +plugins { + alias(libs.plugins.protobuf.gradle) + id("java") + id("maven-publish") + id("signing") +} + +repositories { + mavenCentral() +} + +java { + sourceCompatibility = JavaVersion.toVersion(libs.versions.java.get()) + targetCompatibility = JavaVersion.toVersion(libs.versions.java.get()) + withSourcesJar() + withJavadocJar() +} + +/* Protobufs */ +protobuf.protoc { + artifact = libs.protobuf.protoc.get().toString() +} + +/* Java Docs */ +tasks.javadoc { + exclude("**/in/dragonbra/javasteam/protobufs/**") +} + +dependencies { + implementation(libs.protobuf.java) +} + +/* Artifact publishing */ +publishing { + publications { + create("mavenJava") { + from(components["java"]) + pom { + name = "JavaSteam-dota2" + packaging = "jar" + description = "Dota classes for JavaSteam." + url = "https://github.com/Longi94/JavaSteam" + inceptionYear = "2025" + scm { + connection = "scm:git:git://github.com/Longi94/JavaSteam.git" + developerConnection = "scm:git:ssh://github.com:Longi94/JavaSteam.git" + url = "https://github.com/Longi94/JavaSteam/tree/master" + } + licenses { + license { + name = "MIT License" + url = "https://www.opensource.org/licenses/mit-license.php" + } + } + developers { + developer { + id = "Longi" + name = "Long Tran" + email = "lngtrn94@gmail.com" + } + } + } + } + } +} + +signing { + sign(publishing.publications["mavenJava"]) +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/base_gcmessages.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/base_gcmessages.proto new file mode 100644 index 00000000..8dc6d09f --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/base_gcmessages.proto @@ -0,0 +1,417 @@ +import "in/dragonbra/javasteam/protobufs/dota2/steammessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/gcsdk_gcmessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/steammessages_steamlearn.steamworkssdk.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum EGCBaseMsg { + k_EMsgGCInviteToParty = 4501; + k_EMsgGCInvitationCreated = 4502; + k_EMsgGCPartyInviteResponse = 4503; + k_EMsgGCKickFromParty = 4504; + k_EMsgGCLeaveParty = 4505; + k_EMsgGCServerAvailable = 4506; + k_EMsgGCClientConnectToServer = 4507; + k_EMsgGCGameServerInfo = 4508; + k_EMsgGCLANServerAvailable = 4511; + k_EMsgGCInviteToLobby = 4512; + k_EMsgGCLobbyInviteResponse = 4513; + k_EMsgGCToClientPollFileRequest = 4514; + k_EMsgGCToClientPollFileResponse = 4515; + k_EMsgGCToGCPerformManualOp = 4516; + k_EMsgGCToGCPerformManualOpCompleted = 4517; + k_EMsgGCToGCReloadServerRegionSettings = 4518; + k_EMsgGCAdditionalWelcomeMsgList = 4519; + k_EMsgGCToClientApplyRemoteConVars = 4520; + k_EMsgGCToServerApplyRemoteConVars = 4521; + k_EMsgClientToGCIntegrityStatus = 4522; + k_EMsgClientToGCAggregateMetrics = 4523; + k_EMsgGCToClientAggregateMetricsBackoff = 4524; + k_EMsgGCToServerSteamLearnAccessTokensChanged = 4525; + k_EMsgGCToServerSteamLearnUseHTTP = 4526; +} + +enum ECustomGameInstallStatus { + k_ECustomGameInstallStatus_Unknown = 0; + k_ECustomGameInstallStatus_Ready = 1; + k_ECustomGameInstallStatus_Busy = 2; + k_ECustomGameInstallStatus_FailedGeneric = 101; + k_ECustomGameInstallStatus_FailedInternalError = 102; + k_ECustomGameInstallStatus_RequestedTimestampTooOld = 103; + k_ECustomGameInstallStatus_RequestedTimestampTooNew = 104; + k_ECustomGameInstallStatus_CRCMismatch = 105; + k_ECustomGameInstallStatus_FailedSteam = 106; + k_ECustomGameInstallStatus_FailedCanceled = 107; +} + +message CGCStorePurchaseInit_LineItem { + optional uint32 item_def_id = 1; + optional uint32 quantity = 2; + optional uint32 cost_in_local_currency = 3; + optional uint32 purchase_type = 4; + optional uint64 source_reference_id = 5; + optional int32 price_index = 6; +} + +message CMsgGCStorePurchaseInit { + optional string country = 1; + optional int32 language = 2; + optional int32 currency = 3; + repeated .CGCStorePurchaseInit_LineItem line_items = 4; +} + +message CMsgGCStorePurchaseInitResponse { + optional int32 result = 1; + optional uint64 txn_id = 2; +} + +message CMsgClientPingData { + repeated fixed32 relay_codes = 4 [packed = true]; + repeated uint32 relay_pings = 5 [packed = true]; + repeated uint32 region_codes = 8 [packed = true]; + repeated uint32 region_pings = 9 [packed = true]; + optional uint32 region_ping_failed_bitmask = 10; +} + +message CMsgInviteToParty { + optional fixed64 steam_id = 1; + optional uint32 client_version = 2; + optional uint32 team_id = 3; + optional bool as_coach = 4; + optional .CMsgClientPingData ping_data = 5; +} + +message CMsgInviteToLobby { + optional fixed64 steam_id = 1; + optional uint32 client_version = 2; +} + +message CMsgInvitationCreated { + optional uint64 group_id = 1; + optional fixed64 steam_id = 2; + optional bool user_offline = 3; +} + +message CMsgPartyInviteResponse { + optional uint64 party_id = 1; + optional bool accept = 2; + optional uint32 client_version = 3; + optional .CMsgClientPingData ping_data = 8; +} + +message CMsgLobbyInviteResponse { + optional fixed64 lobby_id = 1; + optional bool accept = 2; + optional uint32 client_version = 3; + optional fixed64 custom_game_crc = 6; + optional fixed32 custom_game_timestamp = 7; +} + +message CMsgKickFromParty { + optional fixed64 steam_id = 1; +} + +message CMsgLeaveParty { +} + +message CMsgCustomGameInstallStatus { + optional .ECustomGameInstallStatus status = 1 [default = k_ECustomGameInstallStatus_Unknown]; + optional string message = 2; + optional fixed32 latest_timestamp_from_steam = 3; +} + +message CMsgServerAvailable { + optional .CMsgCustomGameInstallStatus custom_game_install_status = 1; +} + +message CMsgLANServerAvailable { + optional fixed64 lobby_id = 1; +} + +message CSOEconGameAccountClient { + optional uint32 additional_backpack_slots = 1 [default = 0]; + optional bool trial_account = 2 [default = false]; + optional bool eligible_for_online_play = 3 [default = true]; + optional bool need_to_choose_most_helpful_friend = 4; + optional bool in_coaches_list = 5; + optional fixed32 trade_ban_expiration = 6; + optional fixed32 duel_ban_expiration = 7; + optional bool made_first_purchase = 9 [default = false]; +} + +message CMsgApplyStrangePart { + optional uint64 strange_part_item_id = 1; + optional uint64 item_item_id = 2; +} + +message CMsgApplyPennantUpgrade { + optional uint64 upgrade_item_id = 1; + optional uint64 pennant_item_id = 2; +} + +message CMsgApplyEggEssence { + optional uint64 essence_item_id = 1; + optional uint64 egg_item_id = 2; +} + +message CSOEconItemAttribute { + optional uint32 def_index = 1 [default = 65535]; + optional uint32 value = 2; + optional bytes value_bytes = 3; +} + +message CSOEconItemEquipped { + optional uint32 new_class = 1; + optional uint32 new_slot = 2; +} + +message CSOEconItem { + optional uint64 id = 1; + optional uint32 account_id = 2; + optional uint32 inventory = 3; + optional uint32 def_index = 4; + optional uint32 quantity = 5 [default = 1]; + optional uint32 level = 6 [default = 1]; + optional uint32 quality = 7 [default = 4]; + optional uint32 flags = 8 [default = 0]; + optional uint32 origin = 9 [default = 0]; + repeated .CSOEconItemAttribute attribute = 12; + optional .CSOEconItem interior_item = 13; + optional uint32 style = 15 [default = 0]; + optional uint64 original_id = 16; + repeated .CSOEconItemEquipped equipped_state = 18; +} + +message CMsgSortItems { + optional uint32 sort_type = 1; +} + +message CMsgItemAcknowledged { + optional uint32 account_id = 1; + optional uint32 inventory = 2; + optional uint32 def_index = 3; + optional uint32 quality = 4; + optional uint32 rarity = 5; + optional uint32 origin = 6; +} + +message CMsgSetItemPositions { + message ItemPosition { + optional uint64 item_id = 1; + optional uint32 position = 2; + } + + repeated .CMsgSetItemPositions.ItemPosition item_positions = 1; +} + +message CMsgGCStorePurchaseCancel { + optional uint64 txn_id = 1; +} + +message CMsgGCStorePurchaseCancelResponse { + optional uint32 result = 1; +} + +message CMsgGCStorePurchaseFinalize { + optional uint64 txn_id = 1; +} + +message CMsgGCStorePurchaseFinalizeResponse { + optional uint32 result = 1; + repeated uint64 item_ids = 2; +} + +message CMsgGCToGCBannedWordListUpdated { + optional uint32 group_id = 1; +} + +message CMsgGCToGCDirtySDOCache { + optional uint32 sdo_type = 1; + optional uint64 key_uint64 = 2; +} + +message CMsgSDONoMemcached { +} + +message CMsgGCToGCUpdateSQLKeyValue { + optional string key_name = 1; +} + +message CMsgGCServerVersionUpdated { + optional uint32 server_version = 1; +} + +message CMsgGCClientVersionUpdated { + optional uint32 client_version = 1; +} + +message CMsgGCToGCWebAPIAccountChanged { +} + +message CMsgExtractGems { + optional uint64 tool_item_id = 1; + optional uint64 item_item_id = 2; + optional uint32 item_socket_id = 3 [default = 65535]; +} + +message CMsgExtractGemsResponse { + enum EExtractGems { + k_ExtractGems_Succeeded = 0; + k_ExtractGems_Failed_ToolIsInvalid = 1; + k_ExtractGems_Failed_ItemIsInvalid = 2; + k_ExtractGems_Failed_ToolCannotRemoveGem = 3; + k_ExtractGems_Failed_FailedToRemoveGem = 4; + } + + optional uint64 item_id = 1; + optional .CMsgExtractGemsResponse.EExtractGems response = 2 [default = k_ExtractGems_Succeeded]; +} + +message CMsgAddSocket { + optional uint64 tool_item_id = 1; + optional uint64 item_item_id = 2; + optional bool unusual = 3; +} + +message CMsgAddSocketResponse { + enum EAddSocket { + k_AddSocket_Succeeded = 0; + k_AddSocket_Failed_ToolIsInvalid = 1; + k_AddSocket_Failed_ItemCannotBeSocketed = 2; + k_AddSocket_Failed_FailedToAddSocket = 3; + } + + optional uint64 item_id = 1; + repeated uint32 updated_socket_index = 2; + optional .CMsgAddSocketResponse.EAddSocket response = 3 [default = k_AddSocket_Succeeded]; +} + +message CMsgAddItemToSocketData { + optional uint64 gem_item_id = 1; + optional uint32 socket_index = 2 [default = 65535]; +} + +message CMsgAddItemToSocket { + optional uint64 item_item_id = 1; + repeated .CMsgAddItemToSocketData gems_to_socket = 2; +} + +message CMsgAddItemToSocketResponse { + enum EAddGem { + k_AddGem_Succeeded = 0; + k_AddGem_Failed_GemIsInvalid = 1; + k_AddGem_Failed_ItemIsInvalid = 2; + k_AddGem_Failed_FailedToAddGem = 3; + k_AddGem_Failed_InvalidGemTypeForSocket = 4; + k_AddGem_Failed_InvalidGemTypeForHero = 5; + k_AddGem_Failed_InvalidGemTypeForSlot = 6; + k_AddGem_Failed_SocketContainsUnremovableGem = 7; + } + + optional uint64 item_item_id = 1; + repeated uint32 updated_socket_index = 2; + optional .CMsgAddItemToSocketResponse.EAddGem response = 3 [default = k_AddGem_Succeeded]; +} + +message CMsgResetStrangeGemCount { + optional uint64 item_item_id = 1; + optional uint32 socket_index = 2 [default = 65535]; +} + +message CMsgResetStrangeGemCountResponse { + enum EResetGem { + k_ResetGem_Succeeded = 0; + k_ResetGem_Failed_FailedToResetGem = 1; + k_ResetGem_Failed_ItemIsInvalid = 2; + k_ResetGem_Failed_InvalidSocketId = 3; + k_ResetGem_Failed_SocketCannotBeReset = 4; + } + + optional .CMsgResetStrangeGemCountResponse.EResetGem response = 1 [default = k_ResetGem_Succeeded]; +} + +message CMsgGCToClientPollFileRequest { + optional string file_name = 1; + optional uint32 client_version = 2; + optional uint32 poll_id = 3; +} + +message CMsgGCToClientPollFileResponse { + optional uint32 poll_id = 1; + optional uint32 file_size = 2; + optional uint32 file_crc = 3; +} + +message CMsgGCToGCPerformManualOp { + optional uint64 op_id = 1; + optional uint32 group_code = 2; +} + +message CMsgGCToGCPerformManualOpCompleted { + optional bool success = 1; + optional int32 source_gc = 2 [default = -1]; +} + +message CMsgGCToGCReloadServerRegionSettings { +} + +message CMsgGCAdditionalWelcomeMsgList { + repeated .CExtraMsgBlock welcome_messages = 1; +} + +message CMsgApplyRemoteConVars { + message ConVar { + optional string name = 1; + optional string value = 2; + optional uint32 version_min = 3; + optional uint32 version_max = 4; + optional .EGCPlatform platform = 5 [default = k_eGCPlatform_None]; + } + + repeated .CMsgApplyRemoteConVars.ConVar con_vars = 1; +} + +message CMsgGCToClientApplyRemoteConVars { + optional .CMsgApplyRemoteConVars msg = 1; +} + +message CMsgGCToServerApplyRemoteConVars { + optional .CMsgApplyRemoteConVars msg = 1; +} + +message CMsgClientToGCIntegrityStatus { + message keyvalue { + optional uint32 id = 1; + optional uint32 extended = 2; + optional uint64 value = 3; + optional string string_value = 4; + } + + optional string report = 1; + optional bool secure_allowed = 2; + repeated .CMsgClientToGCIntegrityStatus.keyvalue diagnostics = 3; +} + +message CMsgClientToGCAggregateMetrics { + message SingleMetric { + optional string metric_name = 1; + optional uint32 metric_count = 2; + } + + repeated .CMsgClientToGCAggregateMetrics.SingleMetric metrics = 1; +} + +message CMsgGCToClientAggregateMetricsBackoff { + optional float upload_rate_modifier = 1; +} + +message CMsgGCToServerSteamLearnAccessTokensChanged { + optional .CMsgSteamLearnAccessTokens access_tokens = 1; +} + +message CMsgGCToServerSteamLearnUseHTTP { + optional bool use_http = 1; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_client_enums.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_client_enums.proto new file mode 100644 index 00000000..db40eeff --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_client_enums.proto @@ -0,0 +1,98 @@ +import "in/dragonbra/javasteam/protobufs/dota2/dota_shared_enums.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum ETournamentTemplate { + k_ETournamentTemplate_None = 0; + k_ETournamentTemplate_AutomatedWin3 = 1; +} + +enum ETournamentGameState { + k_ETournamentGameState_Unknown = 0; + k_ETournamentGameState_Canceled = 1; + k_ETournamentGameState_Scheduled = 2; + k_ETournamentGameState_Active = 3; + k_ETournamentGameState_RadVictory = 20; + k_ETournamentGameState_DireVictory = 21; + k_ETournamentGameState_RadVictoryByForfeit = 22; + k_ETournamentGameState_DireVictoryByForfeit = 23; + k_ETournamentGameState_ServerFailure = 40; + k_ETournamentGameState_NotNeeded = 41; +} + +enum ETournamentTeamState { + k_ETournamentTeamState_Unknown = 0; + k_ETournamentTeamState_Node1 = 1; + k_ETournamentTeamState_NodeMax = 1024; + k_ETournamentTeamState_Eliminated = 14003; + k_ETournamentTeamState_Forfeited = 14004; + k_ETournamentTeamState_Finished1st = 15001; + k_ETournamentTeamState_Finished2nd = 15002; + k_ETournamentTeamState_Finished3rd = 15003; + k_ETournamentTeamState_Finished4th = 15004; + k_ETournamentTeamState_Finished5th = 15005; + k_ETournamentTeamState_Finished6th = 15006; + k_ETournamentTeamState_Finished7th = 15007; + k_ETournamentTeamState_Finished8th = 15008; + k_ETournamentTeamState_Finished9th = 15009; + k_ETournamentTeamState_Finished10th = 15010; + k_ETournamentTeamState_Finished11th = 15011; + k_ETournamentTeamState_Finished12th = 15012; + k_ETournamentTeamState_Finished13th = 15013; + k_ETournamentTeamState_Finished14th = 15014; + k_ETournamentTeamState_Finished15th = 15015; + k_ETournamentTeamState_Finished16th = 15016; +} + +enum ETournamentState { + k_ETournamentState_Unknown = 0; + k_ETournamentState_CanceledByAdmin = 1; + k_ETournamentState_Completed = 2; + k_ETournamentState_Merged = 3; + k_ETournamentState_ServerFailure = 4; + k_ETournamentState_TeamAbandoned = 5; + k_ETournamentState_TeamTimeoutForfeit = 6; + k_ETournamentState_TeamTimeoutRefund = 7; + k_ETournamentState_ServerFailureGrantedVictory = 8; + k_ETournamentState_TeamTimeoutGrantedVictory = 9; + k_ETournamentState_InProgress = 100; + k_ETournamentState_WaitingToMerge = 101; +} + +enum ETournamentNodeState { + k_ETournamentNodeState_Unknown = 0; + k_ETournamentNodeState_Canceled = 1; + k_ETournamentNodeState_TeamsNotYetAssigned = 2; + k_ETournamentNodeState_InBetweenGames = 3; + k_ETournamentNodeState_GameInProgress = 4; + k_ETournamentNodeState_A_Won = 5; + k_ETournamentNodeState_B_Won = 6; + k_ETournamentNodeState_A_WonByForfeit = 7; + k_ETournamentNodeState_B_WonByForfeit = 8; + k_ETournamentNodeState_A_Bye = 9; + k_ETournamentNodeState_A_Abandoned = 10; + k_ETournamentNodeState_ServerFailure = 11; + k_ETournamentNodeState_A_TimeoutForfeit = 12; + k_ETournamentNodeState_A_TimeoutRefund = 13; +} + +enum EDOTAGroupMergeResult { + k_EDOTAGroupMergeResult_OK = 0; + k_EDOTAGroupMergeResult_FAILED_GENERIC = 1; + k_EDOTAGroupMergeResult_NOT_LEADER = 2; + k_EDOTAGroupMergeResult_TOO_MANY_PLAYERS = 3; + k_EDOTAGroupMergeResult_TOO_MANY_COACHES = 4; + k_EDOTAGroupMergeResult_ENGINE_MISMATCH = 5; + k_EDOTAGroupMergeResult_NO_SUCH_GROUP = 6; + k_EDOTAGroupMergeResult_OTHER_GROUP_NOT_OPEN = 7; + k_EDOTAGroupMergeResult_ALREADY_INVITED = 8; + k_EDOTAGroupMergeResult_NOT_INVITED = 9; +} + +enum EPartyBeaconType { + k_EPartyBeaconType_Available = 0; + k_EPartyBeaconType_Joinable = 1; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client.proto new file mode 100644 index 00000000..9fd3d06a --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client.proto @@ -0,0 +1,3436 @@ +import "in/dragonbra/javasteam/protobufs/dota2/steammessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_shared_enums.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_webapi.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/gcsdk_gcmessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_lobby.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_match_management.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/base_gcmessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/econ_gcmessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/valveextensions.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum CMsgDOTARequestMatches_SkillLevel { + CMsgDOTARequestMatches_SkillLevel_Any = 0; + CMsgDOTARequestMatches_SkillLevel_Normal = 1; + CMsgDOTARequestMatches_SkillLevel_High = 2; + CMsgDOTARequestMatches_SkillLevel_VeryHigh = 3; +} + +enum DOTA_WatchReplayType { + DOTA_WATCH_REPLAY_NORMAL = 0; + DOTA_WATCH_REPLAY_HIGHLIGHTS = 1; +} + +enum EItemEditorReservationResult { + k_EItemEditorReservationResult_OK = 1; + k_EItemEditorReservationResult_AlreadyExists = 2; + k_EItemEditorReservationResult_Reserved = 3; + k_EItemEditorReservationResult_TimedOut = 4; +} + +enum EWeekendTourneyRichPresenceEvent { + k_EWeekendTourneyRichPresenceEvent_None = 0; + k_EWeekendTourneyRichPresenceEvent_StartedMatch = 1; + k_EWeekendTourneyRichPresenceEvent_WonMatch = 2; + k_EWeekendTourneyRichPresenceEvent_Eliminated = 3; +} + +enum EDOTATriviaAnswerResult { + k_EDOTATriviaAnswerResult_Success = 0; + k_EDOTATriviaAnswerResult_InvalidQuestion = 1; + k_EDOTATriviaAnswerResult_InvalidAnswer = 2; + k_EDOTATriviaAnswerResult_QuestionLocked = 3; + k_EDOTATriviaAnswerResult_AlreadyAnswered = 4; + k_EDOTATriviaAnswerResult_TriviaDisabled = 5; +} + +enum EPurchaseHeroRelicResult { + k_EPurchaseHeroRelicResult_Success = 0; + k_EPurchaseHeroRelicResult_FailedToSend = 1; + k_EPurchaseHeroRelicResult_NotEnoughPoints = 2; + k_EPurchaseHeroRelicResult_InternalServerError = 3; + k_EPurchaseHeroRelicResult_PurchaseNotAllowed = 4; + k_EPurchaseHeroRelicResult_InvalidRelic = 5; + k_EPurchaseHeroRelicResult_AlreadyOwned = 6; + k_EPurchaseHeroRelicResult_InvalidRarity = 7; +} + +enum EDevEventRequestResult { + k_EDevEventRequestResult_Success = 0; + k_EDevEventRequestResult_NotAllowed = 1; + k_EDevEventRequestResult_InvalidEvent = 2; + k_EDevEventRequestResult_SqlFailure = 3; + k_EDevEventRequestResult_Timeout = 4; + k_EDevEventRequestResult_LockFailure = 5; + k_EDevEventRequestResult_SDOLoadFailure = 6; +} + +enum ESupportEventRequestResult { + k_ESupportEventRequestResult_Success = 0; + k_ESupportEventRequestResult_Timeout = 1; + k_ESupportEventRequestResult_CantLockSOCache = 2; + k_ESupportEventRequestResult_ItemNotInInventory = 3; + k_ESupportEventRequestResult_InvalidItemDef = 4; + k_ESupportEventRequestResult_InvalidEvent = 5; + k_ESupportEventRequestResult_EventExpired = 6; + k_ESupportEventRequestResult_InvalidSupportAccount = 7; + k_ESupportEventRequestResult_InvalidSupportMessage = 8; + k_ESupportEventRequestResult_InvalidEventPoints = 9; + k_ESupportEventRequestResult_InvalidPremiumPoints = 10; + k_ESupportEventRequestResult_InvalidActionID = 11; + k_ESupportEventRequestResult_InvalidActionScore = 12; + k_ESupportEventRequestResult_TransactionFailed = 13; +} + +enum EUnderDraftResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eNoGold = 2; + k_eInvalidSlot = 3; + k_eNoBenchSpace = 4; + k_eNoTickets = 5; + k_eEventNotOwned = 6; + k_eInvalidReward = 7; + k_eHasBigReward = 8; + k_eNoGCConnection = 9; + k_eTooBusy = 10; + k_eCantRollBack = 11; +} + +enum EDOTADraftTriviaAnswerResult { + k_EDOTADraftTriviaAnswerResult_Success = 0; + k_EDOTADraftTriviaAnswerResult_InvalidMatchID = 1; + k_EDOTADraftTriviaAnswerResult_AlreadyAnswered = 2; + k_EDOTADraftTriviaAnswerResult_InternalError = 3; + k_EDOTADraftTriviaAnswerResult_TriviaDisabled = 4; + k_EDOTADraftTriviaAnswerResult_GCDown = 5; +} + +enum CMsgClientToGCUpdateComicBookStat_Type { + CMsgClientToGCUpdateComicBookStat_Type_HighestPageRead = 1; + CMsgClientToGCUpdateComicBookStat_Type_SecondsSpentReading = 2; + CMsgClientToGCUpdateComicBookStat_Type_HighestPercentRead = 3; +} + +message CMsgClientSuspended { + optional uint32 time_end = 1; +} + +message CMsgBalancedShuffleLobby { +} + +message CMsgInitialQuestionnaireResponse { + optional uint32 initial_skill = 1; +} + +message CMsgDOTARequestMatchesResponse { + message Series { + repeated .CMsgDOTAMatch matches = 1; + optional uint32 series_id = 2; + optional uint32 series_type = 3; + } + + repeated .CMsgDOTAMatch matches = 1; + repeated .CMsgDOTARequestMatchesResponse.Series series = 2; + optional uint32 request_id = 3; + optional uint32 total_results = 4; + optional uint32 results_remaining = 5; +} + +message CMsgDOTAPopup { + enum PopupID { + NONE = -1; + KICKED_FROM_LOBBY = 0; + KICKED_FROM_PARTY = 1; + KICKED_FROM_TEAM = 2; + TEAM_WAS_DISBANDED = 3; + TEAM_MATCHMAKE_ALREADY_MATCH = 4; + TEAM_MATCHMAKE_ALREADY_FINDING = 5; + TEAM_MATCHMAKE_FULL = 6; + TEAM_MATCHMAKE_FAIL_ADD = 7; + TEAM_MATCHMAKE_FAIL_ADD_CURRENT = 8; + TEAM_MATCHMAKE_FAILED_TEAM_MEMBER = 9; + TEAM_MATCHMAKE_ALREADY_GAME = 10; + TEAM_MATCHMAKE_FAIL_GET_PARTY = 11; + MATCHMAKING_DISABLED = 12; + INVITE_DENIED = 13; + PARTY_FULL = 14; + MADE_ADMIN = 15; + NEED_TO_PURCHASE = 16; + SIGNON_MESSAGE = 17; + MATCHMAKING_REGION_OFFLINE = 19; + TOURNAMENT_GAME_NOT_FOUND = 21; + TOURNAMENT_GAME_HAS_LOBBY_ID = 22; + TOURNAMENT_GAME_HAS_MATCH_ID = 23; + TOURNAMENT_GAME_HAS_NO_RADIANT_TEAM = 24; + TOURNAMENT_GAME_HAS_NO_DIRE_TEAM = 25; + TOURNAMENT_GAME_SQL_UPDATE_FAILED = 26; + NOT_LEAGUE_ADMIN = 27; + IN_ANOTHER_GAME = 29; + PARTY_MEMBER_IN_ANOTHER_GAME = 30; + PARTY_MEMBER_IN_LOW_PRIORITY = 31; + CLIENT_OUT_OF_DATE = 32; + SAVE_GAME_CORRUPT = 38; + INSUFFICIENT_INGOTS = 39; + COMPETITIVE_MM_NOT_ENOUGH_PLAY_TIME_PLAY_MORE_CASUAL = 42; + PARTY_LEADER_JOINED_LOBBY = 44; + WEEKEND_TOURNEY_UNMATCHED = 48; + POST_MATCH_SURVEY = 49; + TROPHY_AWARDED = 50; + TROPHY_LEVEL_UP = 51; + ALL_HERO_CHALLENGE_PROGRESS = 52; + NEED_INITIAL_SKILL = 53; + NEED_INITIAL_SKILL_IN_PARTY = 54; + TARGET_ENGINE_MISMATCH = 55; + VAC_NOT_VERIFIED = 56; + KICKED_FROM_QUEUE_EVENT_STARTING = 57; + KICKED_FROM_QUEUE_EVENT_ENDING = 58; + LOBBY_FULL = 62; + EVENT_POINTS_EARNED = 63; + CUSTOM_GAME_INCORRECT_VERSION = 64; + LIMITED_USER_CHAT = 66; + EVENT_PREMIUM_POINTS_EARNED = 67; + LOBBY_MVP_AWARDED = 68; + LOW_BADGE_LEVEL_CHAT = 71; + LOW_WINS_CHAT = 72; + UNVERIFIED_USER_CHAT = 73; + PARTY_STARTED_FINDING_EVENT_MATCH = 74; + GENERIC_INFO = 69; + GENERIC_ERROR = 70; + RANK_TIER_UPDATED = 75; + CUSTOM_GAME_COOLDOWN_RESTRICTED = 76; + CREATE_LOBBY_FAILED_TOO_MUCH_PLAYTIME = 77; + CUSTOM_GAME_TOO_FEW_GAMES = 78; + COMM_SCORE_TOO_LOW = 79; + } + + optional .CMsgDOTAPopup.PopupID id = 1 [default = NONE]; + optional string custom_text = 2; + optional sint32 int_data = 3; + optional bytes popup_data = 4; + optional string loc_token_header = 5; + optional string loc_token_msg = 6; + repeated string var_names = 7; + repeated string var_values = 8; + optional string debug_text = 9; +} + +message CMsgDOTAReportsRemainingRequest { +} + +message CMsgDOTAReportsRemainingResponse { + optional uint32 num_positive_reports_remaining = 1; + optional uint32 num_negative_reports_remaining = 2; + optional uint32 num_positive_reports_total = 3; + optional uint32 num_negative_reports_total = 4; + optional uint32 num_comms_reports_remaining = 5; + optional uint32 num_comms_reports_total = 6; +} + +message CMsgDOTASubmitPlayerReport { + optional uint32 target_account_id = 1; + optional uint32 report_flags = 2; + optional uint64 lobby_id = 4; + optional string comment = 5; +} + +message CMsgDOTASubmitPlayerReportResponse { + enum EResult { + k_eInternalError = 0; + k_eSuccess = 1; + k_eDuplicateReport = 2; + k_eMixedReportFlags = 3; + k_eTooLate = 4; + k_eInvalidPregameReport = 5; + k_eHasntChatted = 6; + k_eInvalid = 7; + k_eOwnership = 8; + k_eMissingRequirements = 9; + k_eInvalidRoleReport = 10; + k_eInvalidCoachReport = 11; + k_eNoRemainingReports = 12; + k_eInvalidMember = 13; + } + + optional uint32 target_account_id = 1; + optional uint32 report_flags = 2; + optional string debug_message = 4; + optional .CMsgDOTASubmitPlayerReportResponse.EResult enum_result = 5 [default = k_eInternalError]; +} + +message CMsgDOTASubmitPlayerAvoidRequest { + optional uint32 target_account_id = 1; + optional uint64 lobby_id = 4; + optional string user_note = 5; +} + +message CMsgDOTASubmitPlayerAvoidRequestResponse { + optional uint32 target_account_id = 1; + optional uint32 result = 2; + optional string debug_message = 3; +} + +message CMsgDOTASubmitPlayerReportV2 { + optional uint32 target_account_id = 1; + repeated uint32 report_reason = 2; + optional uint64 lobby_id = 3; + optional float game_time = 4; + optional uint32 debug_slot = 5; + optional fixed64 debug_match_id = 6; +} + +message CMsgDOTASubmitPlayerReportResponseV2 { + enum EResult { + k_eInternalError = 0; + k_eSuccess = 1; + k_eDuplicateReport = 2; + k_eMixedReportFlags = 3; + k_eTooLate = 4; + k_eInvalidPregameReport = 5; + k_eHasntChatted = 6; + k_eInvalid = 7; + k_eOwnership = 8; + k_eMissingRequirements = 9; + k_eInvalidRoleReport = 10; + k_eInvalidCoachReport = 11; + k_eNoRemainingReports = 12; + k_eInvalidMember = 13; + k_eCannotReportPartyMember = 14; + } + + optional uint32 target_account_id = 1; + repeated uint32 report_reason = 2; + optional string debug_message = 4; + optional .CMsgDOTASubmitPlayerReportResponseV2.EResult enum_result = 5 [default = k_eInternalError]; +} + +message CMsgDOTASubmitLobbyMVPVote { + optional uint32 target_account_id = 1; +} + +message CMsgDOTASubmitLobbyMVPVoteResponse { + optional uint32 target_account_id = 1; + optional uint32 eresult = 2; +} + +message CMsgDOTALobbyMVPAwarded { + optional uint64 match_id = 1; + repeated uint32 mvp_account_id = 2; +} + +message CMsgDOTAKickedFromMatchmakingQueue { + optional .MatchType match_type = 1 [default = MATCH_TYPE_CASUAL]; +} + +message CMsgGCMatchDetailsRequest { + optional uint64 match_id = 1; +} + +message CMsgGCMatchDetailsResponse { + optional uint32 result = 1; + optional .CMsgDOTAMatch match = 2; + optional .DOTAMatchVote vote = 3 [default = DOTAMatchVote_INVALID]; +} + +message CMsgDOTAProfileTickets { + message LeaguePass { + optional uint32 league_id = 1; + optional uint32 item_def = 2; + } + + optional uint32 result = 1; + optional uint32 account_id = 2; + repeated .CMsgDOTAProfileTickets.LeaguePass league_passes = 3; +} + +message CMsgClientToGCGetProfileTickets { + optional uint32 account_id = 1; +} + +message CMsgGCToClientPartySearchInvites { + repeated .CMsgGCToClientPartySearchInvite invites = 1; +} + +message CMsgDOTAWelcome { + message CExtraMsg { + optional uint32 id = 1; + optional bytes contents = 2; + } + + optional uint32 store_item_hash = 5; + optional uint32 timeplayedconsecutively = 6; + optional bool allow_3rd_party_match_history = 7; + optional uint32 last_ip_address = 13; + optional bool profile_private = 17; + optional uint32 currency = 18; + optional bool should_request_player_origin = 20; + optional uint32 gc_socache_file_version = 22; + optional bool is_perfect_world_test_account = 24; + repeated .CMsgDOTAWelcome.CExtraMsg extra_messages = 26; + optional uint64 minimum_recent_item_id = 27; + optional .EEvent active_event = 28 [default = EVENT_ID_NONE]; + optional uint32 additional_user_message = 29; + optional uint32 custom_game_whitelist_version = 30; + optional .CMsgGCToClientPartySearchInvites party_search_friend_invites = 31; + optional int32 remaining_playtime = 32 [default = -1]; + optional bool disable_guild_persona_info = 33; + repeated .CExtraMsgBlock extra_message_blocks = 34; + optional .EEvent active_event_for_display = 35 [default = EVENT_ID_NONE]; +} + +message CSODOTAGameHeroFavorites { + optional uint32 account_id = 1 [(key_field) = true]; + optional int32 hero_id = 2 [(key_field) = true]; +} + +message CMsgDOTAMatchVotes { + message PlayerVote { + optional uint32 account_id = 1; + optional uint32 vote = 2; + } + + optional uint64 match_id = 1; + repeated .CMsgDOTAMatchVotes.PlayerVote votes = 2; +} + +message CMsgMatchmakingMatchGroupInfo { + optional uint32 players_searching = 1; + optional sint32 auto_region_select_ping_penalty = 2; + optional sint32 auto_region_select_ping_penalty_custom = 4; + optional .EMatchGroupServerStatus status = 3 [default = k_EMatchGroupServerStatus_OK]; +} + +message CMsgDOTAMatchmakingStatsRequest { +} + +message CMsgDOTAMatchmakingStatsResponse { + optional uint32 matchgroups_version = 1; + repeated uint32 legacy_searching_players_by_group_source2 = 7; + repeated .CMsgMatchmakingMatchGroupInfo match_groups = 8; +} + +message CMsgDOTAUpdateMatchmakingStats { + optional .CMsgDOTAMatchmakingStatsResponse stats = 1; +} + +message CMsgDOTAUpdateMatchManagementStats { + optional .CMsgDOTAMatchmakingStatsResponse stats = 1; +} + +message CMsgDOTASetMatchHistoryAccess { + optional bool allow_3rd_party_match_history = 1; +} + +message CMsgDOTASetMatchHistoryAccessResponse { + optional uint32 eresult = 1 [default = 2]; +} + +message CMsgDOTANotifyAccountFlagsChange { + optional uint32 accountid = 1; + optional uint32 account_flags = 2; +} + +message CMsgDOTASetProfilePrivacy { + optional bool profile_private = 1; +} + +message CMsgDOTASetProfilePrivacyResponse { + optional uint32 eresult = 1; +} + +message CMsgUpgradeLeagueItem { + optional uint64 match_id = 1; + optional uint32 league_id = 2; +} + +message CMsgUpgradeLeagueItemResponse { +} + +message CMsgGCWatchDownloadedReplay { + optional uint64 match_id = 1; + optional .DOTA_WatchReplayType watch_type = 2 [default = DOTA_WATCH_REPLAY_NORMAL]; +} + +message CMsgClientToGCWatchingBroadcast { + optional uint64 match_id = 1; +} + +message CMsgClientsRejoinChatChannels { +} + +message CMsgGCGetHeroStandings { +} + +message CMsgGCGetHeroStandingsResponse { + message Hero { + optional int32 hero_id = 1; + optional uint32 wins = 2; + optional uint32 losses = 3; + optional uint32 win_streak = 4; + optional uint32 best_win_streak = 5; + optional float avg_kills = 6; + optional float avg_deaths = 7; + optional float avg_assists = 8; + optional float avg_gpm = 9; + optional float avg_xpm = 10; + optional uint32 best_kills = 11; + optional uint32 best_assists = 12; + optional uint32 best_gpm = 13; + optional uint32 best_xpm = 14; + optional float performance = 15; + optional uint32 wins_with_ally = 16; + optional uint32 losses_with_ally = 17; + optional uint32 wins_against_enemy = 18; + optional uint32 losses_against_enemy = 19; + optional uint32 networth_peak = 20; + optional uint32 lasthit_peak = 21; + optional uint32 deny_peak = 22; + optional uint32 damage_peak = 23; + optional uint32 longest_game_peak = 24; + optional uint32 healing_peak = 25; + optional float avg_lasthits = 26; + optional float avg_denies = 27; + } + + repeated .CMsgGCGetHeroStandingsResponse.Hero standings = 1; +} + +message CMatchPlayerTimedStatAverages { + optional float kills = 2; + optional float deaths = 3; + optional float assists = 4; + optional float net_worth = 5; + optional float last_hits = 6; + optional float denies = 7; + optional float item_value = 8; + optional float support_gold_spent = 9; + optional float camps_stacked = 10; + optional float wards_placed = 11; + optional float dewards = 12; + optional float triple_kills = 13; + optional float rampages = 14; +} + +message CMatchPlayerTimedStatStdDeviations { + optional float kills = 2 [default = 1]; + optional float deaths = 3 [default = 1]; + optional float assists = 4 [default = 1]; + optional float net_worth = 5 [default = 1]; + optional float last_hits = 6 [default = 1]; + optional float denies = 7 [default = 1]; + optional float item_value = 8 [default = 1]; + optional float support_gold_spent = 9 [default = 1]; + optional float camps_stacked = 10 [default = 1]; + optional float wards_placed = 11 [default = 1]; + optional float dewards = 12 [default = 1]; + optional float triple_kills = 13 [default = 1]; + optional float rampages = 14 [default = 1]; +} + +message CMsgGCGetHeroTimedStatsResponse { + message TimedStatsContainer { + optional uint32 time = 1; + optional .CMatchPlayerTimedStatAverages all_stats = 2; + optional .CMatchPlayerTimedStatAverages winning_stats = 3; + optional .CMatchPlayerTimedStatAverages losing_stats = 4; + optional .CMatchPlayerTimedStatStdDeviations winning_stddevs = 5; + optional .CMatchPlayerTimedStatStdDeviations losing_stddevs = 6; + } + + message RankChunkedStats { + optional uint32 rank_chunk = 1; + repeated .CMsgGCGetHeroTimedStatsResponse.TimedStatsContainer timed_stats = 2; + } + + optional int32 hero_id = 1; + repeated .CMsgGCGetHeroTimedStatsResponse.RankChunkedStats rank_chunked_stats = 2; +} + +message CMsgGCItemEditorReservationsRequest { +} + +message CMsgGCItemEditorReservation { + optional uint32 def_index = 1; + optional string name = 2; +} + +message CMsgGCItemEditorReservationsResponse { + repeated .CMsgGCItemEditorReservation reservations = 1; +} + +message CMsgGCItemEditorReserveItemDef { + optional uint32 def_index = 1; + optional string username = 2; +} + +message CMsgGCItemEditorReserveItemDefResponse { + optional uint32 def_index = 1; + optional string username = 2; + optional uint32 result = 3; +} + +message CMsgGCItemEditorReleaseReservation { + optional uint32 def_index = 1; + optional string username = 2; +} + +message CMsgGCItemEditorReleaseReservationResponse { + optional uint32 def_index = 1; + optional bool released = 2; +} + +message CMsgFlipLobbyTeams { +} + +message CMsgGCLobbyUpdateBroadcastChannelInfo { + optional uint32 channel_id = 1; + optional string country_code = 2; + optional string description = 3; + optional string language_code = 4; +} + +message CMsgDOTAClaimEventActionData { + message GrantItemGiftData { + optional uint32 give_to_account_id = 1; + optional string gift_message = 2; + } + + optional .CMsgDOTAClaimEventActionData.GrantItemGiftData grant_item_gift_data = 4; + optional uint64 grant_item_choice_item_def = 5; +} + +message CMsgDOTAClaimEventAction { + optional uint32 event_id = 1; + optional uint32 action_id = 2; + optional uint32 quantity = 3; + optional .CMsgDOTAClaimEventActionData data = 4; + optional .EEventActionScoreMode score_mode = 5 [default = k_eEventActionScoreMode_Add]; + optional bool suppress_rewards = 6; +} + +message CMsgClientToGCClaimEventActionUsingItem { + optional uint32 event_id = 1; + optional uint32 action_id = 2; + optional uint64 item_id = 3; + optional uint32 quantity = 4; + optional bool suppress_rewards = 5; +} + +message CMsgClientToGCClaimEventActionUsingItemResponse { + optional .CMsgDOTAClaimEventActionResponse action_results = 1; +} + +message CMsgGCToClientClaimEventActionUsingItemCompleted { + optional uint64 item_id = 1; + optional .CMsgDOTAClaimEventActionResponse action_results = 2; +} + +message CMsgDOTAGetEventPoints { + optional uint32 event_id = 1; + optional uint32 account_id = 2; +} + +message CMsgDOTAGetEventPointsResponse { + message Action { + optional uint32 action_id = 1; + optional uint32 times_completed = 2 [default = 1]; + } + + optional uint32 total_points = 1; + optional uint32 total_premium_points = 2; + optional uint32 event_id = 3; + optional uint32 points = 4; + optional uint32 premium_points = 5; + repeated .CMsgDOTAGetEventPointsResponse.Action completed_actions = 6; + optional uint32 account_id = 7; + optional bool owned = 8; + optional uint32 audit_action = 9; + optional uint32 active_season_id = 10; +} + +message CMsgDOTAGetPeriodicResource { + optional uint32 account_id = 1; + optional uint32 periodic_resource_id = 2; + optional uint32 timestamp = 3; +} + +message CMsgDOTAGetPeriodicResourceResponse { + optional uint32 periodic_resource_max = 1; + optional uint32 periodic_resource_used = 2; +} + +message CMsgDOTAPeriodicResourceUpdated { + optional .CMsgDOTAGetPeriodicResource periodic_resource_key = 1; + optional .CMsgDOTAGetPeriodicResourceResponse periodic_resource_value = 2; +} + +message CMsgDOTACompendiumSelection { + optional uint32 selection_index = 1; + optional uint32 selection = 2; + optional uint32 leagueid = 3; +} + +message CMsgDOTACompendiumSelectionResponse { + optional uint32 eresult = 1 [default = 2]; +} + +message CMsgDOTACompendiumRemoveAllSelections { + optional uint32 leagueid = 1; +} + +message CMsgDOTACompendiumRemoveAllSelectionsResponse { + optional uint32 eresult = 1 [default = 2]; +} + +message CMsgDOTACompendiumData { + repeated .CMsgDOTACompendiumSelection selections = 1; +} + +message CMsgDOTACompendiumDataRequest { + optional uint32 account_id = 1; + optional uint32 leagueid = 2; +} + +message CMsgDOTACompendiumDataResponse { + optional uint32 account_id = 1; + optional uint32 leagueid = 2; + optional uint32 result = 3 [default = 2]; + optional .CMsgDOTACompendiumData compendium_data = 4; +} + +message CMsgDOTAGetPlayerMatchHistory { + optional uint32 account_id = 1; + optional uint64 start_at_match_id = 2; + optional uint32 matches_requested = 3; + optional int32 hero_id = 4; + optional uint32 request_id = 5; + optional bool include_practice_matches = 7; + optional bool include_custom_games = 8; + optional bool include_event_games = 9; +} + +message CMsgDOTAGetPlayerMatchHistoryResponse { + message Match { + optional uint64 match_id = 1; + optional uint32 start_time = 2; + optional int32 hero_id = 3; + optional bool winner = 4; + optional uint32 game_mode = 5; + optional int32 rank_change = 6; + optional uint32 previous_rank = 7; + optional uint32 lobby_type = 8; + optional bool solo_rank = 9; + optional bool abandon = 10; + optional uint32 duration = 11; + optional uint32 engine = 12; + optional bool active_plus_subscription = 13; + optional bool seasonal_rank = 14; + optional uint32 tourney_id = 15; + optional uint32 tourney_round = 16; + optional uint32 tourney_tier = 17; + optional uint32 tourney_division = 18; + optional uint32 team_id = 19; + optional string team_name = 20; + optional uint64 ugc_team_ui_logo = 21; + optional uint32 selected_facet = 22; + } + + repeated .CMsgDOTAGetPlayerMatchHistoryResponse.Match matches = 1; + optional uint32 request_id = 2; +} + +message CMsgGCNotificationsRequest { +} + +message CMsgGCNotifications_Notification { + optional uint64 id = 1; + optional uint32 type = 2; + optional uint32 timestamp = 3; + optional uint32 reference_a = 4; + optional uint32 reference_b = 5; + optional uint32 reference_c = 6; + optional string message = 7; + optional bool unread = 8; +} + +message CMsgGCNotificationsUpdate { + enum EResult { + SUCCESS = 0; + ERROR_UNSPECIFIED = 1; + } + + optional .CMsgGCNotificationsUpdate.EResult result = 1 [default = SUCCESS]; + repeated .CMsgGCNotifications_Notification notifications = 2; +} + +message CMsgGCNotificationsResponse { + optional .CMsgGCNotificationsUpdate update = 1; +} + +message CMsgGCNotificationsMarkReadRequest { +} + +message CMsgGCPlayerInfoSubmit { + optional string player_name = 1; + optional string country_code = 2; + optional uint32 fantasy_role = 3; + optional uint32 team_id = 4; + optional string sponsor = 5; + optional bool accepted_pro_agreement = 6; + optional uint32 registration_period = 7; + optional string real_name = 8; +} + +message CMsgGCPlayerInfoSubmitResponse { + enum EResult { + SUCCESS = 0; + ERROR_UNSPECIFIED = 1; + ERROR_INFO_LOCKED = 2; + ERROR_NOT_MEMBER_OF_TEAM = 3; + } + + optional .CMsgGCPlayerInfoSubmitResponse.EResult result = 1 [default = SUCCESS]; +} + +message CMsgDOTAEmoticonAccessSDO { + optional uint32 account_id = 1; + optional bytes unlocked_emoticons = 2; +} + +message CMsgClientToGCEmoticonDataRequest { +} + +message CMsgGCToClientEmoticonData { + optional .CMsgDOTAEmoticonAccessSDO emoticon_access = 1; +} + +message CMsgGCToClientTournamentItemDrop { + optional uint32 item_def = 1; + optional uint32 event_type = 2; +} + +message CMsgClientToGCGetAllHeroOrder { +} + +message CMsgClientToGCGetAllHeroOrderResponse { + repeated int32 hero_ids = 1; +} + +message CMsgClientToGCGetAllHeroProgress { + optional uint32 account_id = 1; +} + +message CMsgClientToGCGetAllHeroProgressResponse { + optional uint32 account_id = 1; + optional int32 curr_hero_id = 2; + optional uint32 laps_completed = 3; + optional uint32 curr_hero_games = 4; + optional uint32 curr_lap_time_started = 5; + optional uint32 curr_lap_games = 6; + optional uint32 best_lap_games = 7; + optional uint32 best_lap_time = 8; + optional uint32 lap_heroes_completed = 9; + optional uint32 lap_heroes_remaining = 10; + optional int32 next_hero_id = 11; + optional int32 prev_hero_id = 12; + optional uint32 prev_hero_games = 13; + optional float prev_avg_tries = 14; + optional float curr_avg_tries = 15; + optional float next_avg_tries = 16; + optional float full_lap_avg_tries = 17; + optional float curr_lap_avg_tries = 18; + optional string profile_name = 19; + optional int32 start_hero_id = 20; +} + +message CMsgClientToGCGetTrophyList { + optional uint32 account_id = 1; +} + +message CMsgClientToGCGetTrophyListResponse { + message Trophy { + optional uint32 trophy_id = 1; + optional uint32 trophy_score = 2; + optional uint32 last_updated = 3; + } + + repeated .CMsgClientToGCGetTrophyListResponse.Trophy trophies = 2; +} + +message CMsgGCToClientTrophyAwarded { + optional uint32 trophy_id = 1; + optional uint32 trophy_score = 2; + optional uint32 trophy_old_score = 3; + optional uint32 last_updated = 4; +} + +message CMsgClientToGCRankRequest { + optional .ERankType rank_type = 1 [default = k_ERankType_Invalid]; +} + +message CMsgGCToClientRankResponse { + enum EResultCode { + k_Succeeded = 0; + k_Failed = 1; + k_InvalidRankType = 2; + } + + optional .CMsgGCToClientRankResponse.EResultCode result = 1 [default = k_Succeeded]; + optional uint32 rank_value = 2; + optional uint32 rank_data1 = 3; + optional uint32 rank_data2 = 4; + optional uint32 rank_data3 = 5; +} + +message CMsgGCToClientRankUpdate { + optional .ERankType rank_type = 1 [default = k_ERankType_Invalid]; + optional .CMsgGCToClientRankResponse rank_info = 2; +} + +message CMsgClientToGCGetProfileCard { + optional uint32 account_id = 1; +} + +message CMsgClientToGCSetProfileCardSlots { + message CardSlot { + optional uint32 slot_id = 1; + optional .EProfileCardSlotType slot_type = 2 [default = k_EProfileCardSlotType_Empty]; + optional uint64 slot_value = 3; + } + + repeated .CMsgClientToGCSetProfileCardSlots.CardSlot slots = 1; +} + +message CMsgClientToGCGetProfileCardStats { +} + +message CMsgClientToGCCreateHeroStatue { + optional uint64 source_item_id = 1; + optional int32 hero_id = 3; + optional string sequence_name = 4; + optional float cycle = 5; + repeated uint32 wearables = 6; + optional string inscription = 7; + repeated uint32 styles = 8; + optional uint64 reforger_item_id = 9; + optional bool tournament_drop = 10; +} + +message CMsgGCToClientHeroStatueCreateResult { + optional uint64 resulting_item_id = 1; +} + +message CMsgClientToGCPlayerStatsRequest { + optional uint32 account_id = 1; +} + +message CMsgGCToClientPlayerStatsResponse { + optional uint32 account_id = 1; + repeated float player_stats = 2; + optional uint32 match_count = 3; + optional float mean_gpm = 4; + optional float mean_xppm = 5; + optional float mean_lasthits = 6; + optional uint32 rampages = 7; + optional uint32 triple_kills = 8; + optional uint32 first_blood_claimed = 9; + optional uint32 first_blood_given = 10; + optional uint32 couriers_killed = 11; + optional uint32 aegises_snatched = 12; + optional uint32 cheeses_eaten = 13; + optional uint32 creeps_stacked = 14; + optional float fight_score = 15; + optional float farm_score = 16; + optional float support_score = 17; + optional float push_score = 18; + optional float versatility_score = 19; + optional float mean_networth = 20; + optional float mean_damage = 21; + optional float mean_heals = 22; + optional uint32 rapiers_purchased = 23; +} + +message CMsgClientToGCCustomGamesFriendsPlayedRequest { +} + +message CMsgGCToClientCustomGamesFriendsPlayedResponse { + message CustomGame { + optional uint64 custom_game_id = 1; + repeated uint32 account_ids = 2; + } + + optional uint32 account_id = 1; + repeated .CMsgGCToClientCustomGamesFriendsPlayedResponse.CustomGame games = 2; +} + +message CMsgClientToGCSocialFeedPostCommentRequest { + optional uint64 event_id = 1; + optional string comment = 2; +} + +message CMsgGCToClientSocialFeedPostCommentResponse { + optional bool success = 1; +} + +message CMsgClientToGCSocialFeedPostMessageRequest { + optional string message = 1; + optional uint64 match_id = 2; + optional uint32 match_timestamp = 3; +} + +message CMsgGCToClientSocialFeedPostMessageResponse { + optional bool success = 1; +} + +message CMsgClientToGCFriendsPlayedCustomGameRequest { + optional uint64 custom_game_id = 1; +} + +message CMsgGCToClientFriendsPlayedCustomGameResponse { + optional uint64 custom_game_id = 1; + repeated uint32 account_ids = 2; +} + +message CMsgDOTAPartyRichPresence { + message Member { + optional fixed64 steam_id = 1; + optional bool coach = 2; + } + + message WeekendTourney { + optional uint32 division = 1; + optional uint32 skill_level = 2; + optional uint32 round = 3; + optional uint32 tournament_id = 4; + optional uint32 state_seq_num = 5; + optional .EWeekendTourneyRichPresenceEvent event = 6 [default = k_EWeekendTourneyRichPresenceEvent_None]; + optional uint32 event_round = 7; + } + + optional fixed64 party_id = 1; + optional .CSODOTAParty.State party_state = 2 [default = UI]; + optional bool open = 3; + optional bool low_priority = 5; + optional uint32 team_id = 7; + optional string team_name = 8; + optional uint64 ugc_team_ui_logo = 9; + repeated .CMsgDOTAPartyRichPresence.Member members = 4; + optional .CMsgDOTAPartyRichPresence.WeekendTourney weekend_tourney = 6; +} + +message CMsgDOTALobbyRichPresence { + optional fixed64 lobby_id = 1; + optional .CSODOTALobby.State lobby_state = 2 [default = UI]; + optional bool password = 3; + optional .DOTA_GameMode game_mode = 4 [default = DOTA_GAMEMODE_NONE]; + optional uint32 member_count = 5; + optional uint32 max_member_count = 6; + optional fixed64 custom_game_id = 7; + optional string name = 8; + optional uint32 lobby_type = 9; +} + +message CMsgDOTACustomGameListenServerStartedLoading { + optional fixed64 lobby_id = 1; + optional uint64 custom_game_id = 2; + repeated uint32 lobby_members = 3; + optional uint32 start_time = 4; +} + +message CMsgDOTACustomGameClientFinishedLoading { + optional fixed64 lobby_id = 1; + optional uint32 loading_duration = 2; + optional sint32 result_code = 3; + optional string result_string = 4; + optional uint32 signon_states = 5; + optional string comment = 6; +} + +message CMsgClientToGCApplyGemCombiner { + optional uint64 item_id_1 = 1; + optional uint64 item_id_2 = 2; +} + +message CMsgClientToGCH264Unsupported { +} + +message CMsgClientToGCGetQuestProgress { + repeated uint32 quest_ids = 1; +} + +message CMsgClientToGCGetQuestProgressResponse { + message Challenge { + optional uint32 challenge_id = 1; + optional uint32 time_completed = 2; + optional uint32 attempts = 3; + optional int32 hero_id = 4; + optional uint32 template_id = 5; + optional uint32 quest_rank = 6; + } + + message Quest { + optional uint32 quest_id = 1; + repeated .CMsgClientToGCGetQuestProgressResponse.Challenge completed_challenges = 2; + } + + optional bool success = 1; + repeated .CMsgClientToGCGetQuestProgressResponse.Quest quests = 2; +} + +message CMsgGCToClientMatchSignedOut { + optional uint64 match_id = 1; +} + +message CMsgGCGetHeroStatsHistory { + optional int32 hero_id = 1; +} + +message CMsgGCGetHeroStatsHistoryResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + } + + optional int32 hero_id = 1; + repeated .CMsgDOTASDOHeroStatsHistory records = 2; + optional .CMsgGCGetHeroStatsHistoryResponse.EResponse result = 3 [default = k_eInternalError]; +} + +message CMsgPlayerConductScorecardRequest { +} + +message CMsgPlayerConductScorecard { + enum EBehaviorRating { + k_eBehaviorGood = 0; + k_eBehaviorWarning = 1; + k_eBehaviorBad = 2; + } + + optional uint32 account_id = 1; + optional uint64 match_id = 2; + optional uint32 seq_num = 3; + optional uint32 reasons = 4; + optional uint32 matches_in_report = 5; + optional uint32 matches_clean = 6; + optional uint32 matches_reported = 7; + optional uint32 matches_abandoned = 8; + optional uint32 reports_count = 9; + optional uint32 reports_parties = 10; + optional uint32 commend_count = 11; + optional uint32 date = 14; + optional uint32 raw_behavior_score = 17; + optional uint32 old_raw_behavior_score = 18; + optional uint32 comms_reports = 19; + optional uint32 comms_parties = 20; + optional .CMsgPlayerConductScorecard.EBehaviorRating behavior_rating = 21 [default = k_eBehaviorGood]; +} + +message CMsgClientToGCWageringRequest { + optional uint32 event_id = 1; +} + +message CMsgGCToClientWageringResponse { + optional uint32 coins_remaining = 1; + optional uint32 total_points_won = 2; + optional uint32 total_points_wagered = 3; + optional uint32 total_points_tipped = 4; + optional uint32 success_rate = 5; + optional uint32 total_games_wagered = 6; + optional uint32 coins_max = 7; + optional uint32 rank_wagers_remaining = 8; + optional uint32 rank_wagers_max = 9; + optional uint32 prediction_tokens_remaining = 10; + optional uint32 prediction_tokens_max = 11; + optional uint32 bounties_remaining = 12; + optional uint32 bounties_max = 13; +} + +message CMsgGCToClientWageringUpdate { + optional uint32 event_id = 1; + optional .CMsgGCToClientWageringResponse wagering_info = 2; +} + +message CMsgGCToClientArcanaVotesUpdate { + optional uint32 event_id = 1; + optional .CMsgClientToGCRequestArcanaVotesRemainingResponse arcana_votes = 2; +} + +message CMsgClientToGCGetEventGoals { + repeated .EEvent event_ids = 1; +} + +message CMsgEventGoals { + message EventGoal { + optional .EEvent event_id = 1 [default = EVENT_ID_NONE]; + optional uint32 goal_id = 2; + optional uint64 value = 3; + } + + repeated .CMsgEventGoals.EventGoal event_goals = 1; +} + +message CMsgGCToGCLeaguePredictions { + optional uint32 league_id = 1; +} + +message CMsgPredictionRankings { + message PredictionLine { + optional uint32 answer_id = 1; + optional string answer_name = 2; + optional uint64 answer_logo = 3; + optional float answer_value = 4; + } + + message Prediction { + optional uint32 selection_id = 1; + repeated .CMsgPredictionRankings.PredictionLine prediction_lines = 2; + } + + repeated .CMsgPredictionRankings.Prediction predictions = 1; +} + +message CMsgPredictionResults { + message ResultBreakdown { + optional uint32 answer_selection = 2; + optional float answer_value = 3; + } + + message Result { + optional uint32 selection_id = 1; + repeated .CMsgPredictionResults.ResultBreakdown result_breakdown = 2; + } + + repeated .CMsgPredictionResults.Result results = 1; +} + +message CMsgClientToGCHasPlayerVotedForMVP { + optional uint64 match_id = 1; +} + +message CMsgClientToGCHasPlayerVotedForMVPResponse { + optional bool result = 1; +} + +message CMsgClientToGCVoteForMVP { + optional uint64 match_id = 1; + optional uint32 account_id = 3; +} + +message CMsgClientToGCVoteForMVPResponse { + optional bool result = 1; +} + +message CMsgClientToGCMVPVoteTimeout { + optional uint64 match_id = 1; +} + +message CMsgClientToGCMVPVoteTimeoutResponse { + optional bool result = 1; +} + +message CMsgClientToGCTeammateStatsRequest { +} + +message CMsgClientToGCTeammateStatsResponse { + message TeammateStat { + optional uint32 account_id = 1; + optional uint32 games = 2; + optional uint32 wins = 3; + optional uint32 most_recent_game_timestamp = 4; + optional uint64 most_recent_game_match_id = 5; + optional float performance = 100; + } + + optional bool success = 1; + repeated .CMsgClientToGCTeammateStatsResponse.TeammateStat teammate_stats = 2; +} + +message CMsgClientToGCVoteForArcana { + repeated .CMsgArcanaVoteMatchVotes matches = 1; +} + +message CMsgClientToGCVoteForArcanaResponse { + enum Result { + SUCCEEDED = 0; + VOTING_NOT_ENABLED_FOR_ROUND = 1; + UNKNOWN_FAILURE = 2; + } + + optional .CMsgClientToGCVoteForArcanaResponse.Result result = 1 [default = SUCCEEDED]; +} + +message CMsgClientToGCRequestArcanaVotesRemaining { +} + +message CMsgClientToGCRequestArcanaVotesRemainingResponse { + optional bool result = 1; + optional uint32 votes_remaining = 2; + optional uint32 votes_total = 3; + repeated .CMsgArcanaVoteMatchVotes matches_previously_voted_for = 4; +} + +message CMsgClientToGCRequestEventPointLogV2 { + optional uint32 event_id = 1; +} + +message CMsgClientToGCRequestEventPointLogResponseV2 { + message LogEntry { + optional uint32 timestamp = 1; + optional uint32 audit_action = 2; + optional int32 event_points = 3; + optional uint64 audit_data = 4; + } + + optional bool result = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; + repeated .CMsgClientToGCRequestEventPointLogResponseV2.LogEntry log_entries = 3; +} + +message CMsgClientToGCPublishUserStat { + optional uint32 user_stats_event = 1; + optional uint64 reference_data = 2; +} + +message CMsgClientToGCRequestSlarkGameResult { + optional .EEvent event_id = 1 [default = EVENT_ID_NONE]; + optional uint32 slot_chosen = 2; + optional uint32 week = 3; +} + +message CMsgClientToGCRequestSlarkGameResultResponse { + optional uint32 points_won = 1; + optional bool aura_won = 2; +} + +message CMsgGCToClientQuestProgressUpdated { + message Challenge { + optional uint32 challenge_id = 1; + optional uint32 time_completed = 2; + optional uint32 attempts = 3; + optional int32 hero_id = 4; + optional uint32 template_id = 5; + optional uint32 quest_rank = 6; + optional uint32 max_quest_rank = 7; + } + + optional uint32 quest_id = 1; + repeated .CMsgGCToClientQuestProgressUpdated.Challenge completed_challenges = 2; +} + +message CMsgDOTARedeemItem { + optional uint64 currency_id = 1; + optional uint32 purchase_def = 2; +} + +message CMsgDOTARedeemItemResponse { + enum EResultCode { + k_Succeeded = 0; + k_Failed = 1; + } + + optional .CMsgDOTARedeemItemResponse.EResultCode response = 1 [default = k_Succeeded]; +} + +message CMsgClientToGCSelectCompendiumInGamePrediction { + message Prediction { + optional uint32 prediction_id = 1; + optional uint32 prediction_value = 2; + } + + optional uint64 match_id = 1; + repeated .CMsgClientToGCSelectCompendiumInGamePrediction.Prediction predictions = 2; + optional uint32 league_id = 3; +} + +message CMsgClientToGCSelectCompendiumInGamePredictionResponse { + enum EResult { + SUCCESS = 0; + INVALID_MATCH = 1; + PREDICTIONS_ARE_CLOSED = 2; + OTHER_ERROR = 3; + } + + optional .CMsgClientToGCSelectCompendiumInGamePredictionResponse.EResult result = 1 [default = SUCCESS]; +} + +message CMsgClientToGCOpenPlayerCardPack { + optional uint64 player_card_pack_item_id = 1; + optional uint32 team_id = 2; + optional uint32 deprecated_league_id = 3; + optional .ELeagueRegion region = 4 [default = LEAGUE_REGION_UNSET]; +} + +message CMsgClientToGCOpenPlayerCardPackResponse { + enum Result { + SUCCESS = 1; + ERROR_INTERNAL = 2; + ERROR_FAILED_TO_FIND_PACK = 3; + ERROR_ITEM_NOT_CARD_PACK = 4; + ERROR_FAILED_CARD_CREATE = 5; + ERROR_INVALID_TEAM_ID_ATTRIBUTE = 6; + ERROR_INVALID_TEAM_ID = 7; + } + + optional .CMsgClientToGCOpenPlayerCardPackResponse.Result result = 1 [default = SUCCESS]; + repeated uint64 player_card_item_ids = 2; +} + +message CMsgClientToGCRecyclePlayerCard { + repeated uint64 player_card_item_ids = 3; + optional uint32 event_id = 2; +} + +message CMsgClientToGCRecyclePlayerCardResponse { + enum Result { + SUCCESS = 1; + ERROR_INTERNAL = 2; + ERROR_FAILED_TO_FIND_PLAYER_CARD = 3; + ERROR_ITEM_NOT_PLAYER_CARD = 4; + ERROR_FAILED_DUST_CARD_CREATE = 5; + ERROR_CARD_LOCKED = 6; + ERROR_NO_CARDS_SPECIFIED = 7; + } + + optional .CMsgClientToGCRecyclePlayerCardResponse.Result result = 1 [default = SUCCESS]; + optional uint32 dust_amount = 2; +} + +message CMsgClientToGCCreatePlayerCardPack { + optional uint64 card_dust_item_id = 1; + optional uint32 event_id = 2; + optional bool premium_pack = 3; +} + +message CMsgClientToGCCreatePlayerCardPackResponse { + enum Result { + SUCCESS = 1; + ERROR_INTERNAL = 2; + ERROR_INSUFFICIENT_DUST = 3; + ERROR_ITEM_NOT_DUST_ITEM = 4; + ERROR_FAILED_CARD_PACK_CREATE = 5; + ERROR_NO_CARD_PACK = 6; + ERROR_NOT_AVAILABLE = 7; + } + + optional .CMsgClientToGCCreatePlayerCardPackResponse.Result result = 1 [default = SUCCESS]; +} + +message CMsgClientToGCCreateTeamPlayerCardPack { + optional uint64 card_dust_item_id = 1; + optional uint32 event_id = 2; + optional bool premium_pack = 3; + optional uint32 team_id = 4; +} + +message CMsgClientToGCCreateTeamPlayerCardPackResponse { + enum Result { + SUCCESS = 1; + ERROR_INTERNAL = 2; + ERROR_INSUFFICIENT_DUST = 3; + ERROR_ITEM_NOT_DUST_ITEM = 4; + ERROR_FAILED_CARD_PACK_CREATE = 5; + ERROR_NO_CARD_PACK = 6; + ERROR_NOT_AVAILABLE = 7; + } + + optional .CMsgClientToGCCreateTeamPlayerCardPackResponse.Result result = 1 [default = SUCCESS]; +} + +message CMsgGCToClientBattlePassRollup_International2016 { + message Questlines { + optional string name = 1; + optional uint32 onestar = 2; + optional uint32 twostar = 3; + optional uint32 threestar = 4; + optional uint32 total = 5; + } + + message Wagering { + optional uint32 total_wagered = 1; + optional uint32 total_won = 2; + optional uint32 average_won = 3; + optional uint32 success_rate = 4; + optional uint32 total_tips = 5; + } + + message Achievements { + optional uint32 completed = 1; + optional uint32 total = 2; + optional uint32 points = 3; + } + + message BattleCup { + optional uint32 wins = 1; + optional uint32 score = 2; + } + + message Predictions { + optional uint32 correct = 1; + optional uint32 total = 2; + optional uint32 points = 3; + } + + message Bracket { + optional uint32 correct = 1; + optional uint32 points = 2; + } + + message PlayerCard { + optional uint32 account_id = 1; + optional uint32 quality = 2; + } + + message FantasyChallenge { + optional float total_score = 1; + optional float percentile = 2; + } + + optional uint32 battle_pass_level = 1; + repeated .CMsgGCToClientBattlePassRollup_International2016.Questlines questlines = 2; + optional .CMsgGCToClientBattlePassRollup_International2016.Wagering wagering = 3; + optional .CMsgGCToClientBattlePassRollup_International2016.Achievements achievements = 4; + optional .CMsgGCToClientBattlePassRollup_International2016.BattleCup battle_cup = 5; + optional .CMsgGCToClientBattlePassRollup_International2016.Predictions predictions = 6; + optional .CMsgGCToClientBattlePassRollup_International2016.Bracket bracket = 7; + repeated .CMsgGCToClientBattlePassRollup_International2016.PlayerCard player_cards = 8; + optional .CMsgGCToClientBattlePassRollup_International2016.FantasyChallenge fantasy_challenge = 9; +} + +message CMsgGCToClientBattlePassRollup_Fall2016 { + message Questlines { + optional string name = 1; + optional uint32 onestar = 2; + optional uint32 twostar = 3; + optional uint32 threestar = 4; + optional uint32 total = 5; + } + + message Wagering { + optional uint32 total_wagered = 1; + optional uint32 total_won = 2; + optional uint32 average_won = 3; + optional uint32 success_rate = 4; + optional uint32 total_tips = 5; + } + + message Achievements { + optional uint32 completed = 1; + optional uint32 total = 2; + optional uint32 points = 3; + } + + message BattleCup { + optional uint32 wins = 1; + optional uint32 score = 2; + } + + message Predictions { + optional uint32 correct = 1; + optional uint32 total = 2; + optional uint32 points = 3; + } + + message Bracket { + optional uint32 correct = 1; + optional uint32 points = 2; + } + + message PlayerCard { + optional uint32 account_id = 1; + optional uint32 quality = 2; + } + + message FantasyChallenge { + optional float total_score = 1; + optional float percentile = 2; + } + + optional uint32 battle_pass_level = 1; + repeated .CMsgGCToClientBattlePassRollup_Fall2016.Questlines questlines = 2; + optional .CMsgGCToClientBattlePassRollup_Fall2016.Wagering wagering = 3; + optional .CMsgGCToClientBattlePassRollup_Fall2016.Achievements achievements = 4; + optional .CMsgGCToClientBattlePassRollup_Fall2016.BattleCup battle_cup = 5; + optional .CMsgGCToClientBattlePassRollup_Fall2016.Predictions predictions = 6; + optional .CMsgGCToClientBattlePassRollup_Fall2016.Bracket bracket = 7; + repeated .CMsgGCToClientBattlePassRollup_Fall2016.PlayerCard player_cards = 8; + optional .CMsgGCToClientBattlePassRollup_Fall2016.FantasyChallenge fantasy_challenge = 9; +} + +message CMsgGCToClientBattlePassRollup_Winter2017 { + message Questlines { + optional string name = 1; + optional uint32 onestar = 2; + optional uint32 twostar = 3; + optional uint32 threestar = 4; + optional uint32 total = 5; + } + + message Wagering { + optional uint32 total_wagered = 1; + optional uint32 total_won = 2; + optional uint32 average_won = 3; + optional uint32 success_rate = 4; + optional uint32 total_tips = 5; + } + + message Achievements { + optional uint32 completed = 1; + optional uint32 total = 2; + optional uint32 points = 3; + } + + message BattleCup { + optional uint32 wins = 1; + optional uint32 score = 2; + } + + message Predictions { + optional uint32 correct = 1; + optional uint32 total = 2; + optional uint32 points = 3; + } + + message Bracket { + optional uint32 correct = 1; + optional uint32 points = 2; + } + + message PlayerCard { + optional uint32 account_id = 1; + optional uint32 quality = 2; + } + + message FantasyChallenge { + optional float total_score = 1; + optional float percentile = 2; + } + + optional uint32 battle_pass_level = 1; + repeated .CMsgGCToClientBattlePassRollup_Winter2017.Questlines questlines = 2; + optional .CMsgGCToClientBattlePassRollup_Winter2017.Wagering wagering = 3; + optional .CMsgGCToClientBattlePassRollup_Winter2017.Achievements achievements = 4; + optional .CMsgGCToClientBattlePassRollup_Winter2017.BattleCup battle_cup = 5; + optional .CMsgGCToClientBattlePassRollup_Winter2017.Predictions predictions = 6; + optional .CMsgGCToClientBattlePassRollup_Winter2017.Bracket bracket = 7; + repeated .CMsgGCToClientBattlePassRollup_Winter2017.PlayerCard player_cards = 8; + optional .CMsgGCToClientBattlePassRollup_Winter2017.FantasyChallenge fantasy_challenge = 9; +} + +message CMsgGCToClientBattlePassRollup_TI7 { + message Questlines { + optional string name = 1; + optional uint32 onestar = 2; + optional uint32 twostar = 3; + optional uint32 threestar = 4; + optional uint32 total = 5; + } + + message Wagering { + optional uint32 total_wagered = 1; + optional uint32 total_won = 2; + optional uint32 average_won = 3; + optional uint32 success_rate = 4; + optional uint32 total_tips = 5; + } + + message Achievements { + optional uint32 completed = 1; + optional uint32 total = 2; + optional uint32 points = 3; + } + + message BattleCup { + optional uint32 wins = 1; + optional uint32 score = 2; + } + + message Predictions { + optional uint32 correct = 1; + optional uint32 total = 2; + optional uint32 points = 3; + } + + message Bracket { + optional uint32 correct = 1; + optional uint32 points = 2; + } + + message PlayerCard { + optional uint32 account_id = 1; + optional uint32 quality = 2; + } + + message FantasyChallenge { + optional float total_score = 1; + optional float percentile = 2; + } + + optional uint32 battle_pass_level = 1; + repeated .CMsgGCToClientBattlePassRollup_TI7.Questlines questlines = 2; + optional .CMsgGCToClientBattlePassRollup_TI7.Wagering wagering = 3; + optional .CMsgGCToClientBattlePassRollup_TI7.Achievements achievements = 4; + optional .CMsgGCToClientBattlePassRollup_TI7.BattleCup battle_cup = 5; + optional .CMsgGCToClientBattlePassRollup_TI7.Predictions predictions = 6; + optional .CMsgGCToClientBattlePassRollup_TI7.Bracket bracket = 7; + repeated .CMsgGCToClientBattlePassRollup_TI7.PlayerCard player_cards = 8; + optional .CMsgGCToClientBattlePassRollup_TI7.FantasyChallenge fantasy_challenge = 9; +} + +message CMsgGCToClientBattlePassRollup_TI8 { + message CavernCrawl { + optional uint32 rooms_cleared = 1; + optional bool carry_completed = 2; + optional bool support_completed = 3; + optional bool utility_completed = 4; + } + + message Wagering { + optional uint32 total_wagered = 1; + optional uint32 total_won = 2; + optional uint32 average_won = 3; + optional uint32 success_rate = 4; + optional uint32 total_tips = 5; + } + + message Achievements { + optional uint32 completed = 1; + optional uint32 total = 2; + optional uint32 points = 3; + } + + message Predictions { + optional uint32 correct = 1; + optional uint32 total = 2; + optional uint32 points = 3; + } + + message Bracket { + optional uint32 correct = 1; + optional uint32 points = 2; + } + + message PlayerCard { + optional uint32 account_id = 1; + optional uint32 quality = 2; + } + + message FantasyChallenge { + optional float total_score = 1; + optional float percentile = 2; + } + + optional uint32 battle_pass_level = 1; + optional .CMsgGCToClientBattlePassRollup_TI8.CavernCrawl cavern_crawl = 2; + optional .CMsgGCToClientBattlePassRollup_TI8.Wagering wagering = 3; + optional .CMsgGCToClientBattlePassRollup_TI8.Achievements achievements = 4; + optional .CMsgGCToClientBattlePassRollup_TI8.Predictions predictions = 6; + optional .CMsgGCToClientBattlePassRollup_TI8.Bracket bracket = 7; + repeated .CMsgGCToClientBattlePassRollup_TI8.PlayerCard player_cards = 8; + optional .CMsgGCToClientBattlePassRollup_TI8.FantasyChallenge fantasy_challenge = 9; +} + +message CMsgGCToClientBattlePassRollup_TI9 { + optional uint32 battle_pass_level = 1; +} + +message CMsgGCToClientBattlePassRollup_TI10 { + optional uint32 battle_pass_level = 1; +} + +message CMsgGCToClientBattlePassRollupRequest { + optional uint32 event_id = 1; + optional uint32 account_id = 2; +} + +message CMsgGCToClientBattlePassRollupResponse { + optional .CMsgGCToClientBattlePassRollup_International2016 event_ti6 = 1; + optional .CMsgGCToClientBattlePassRollup_Fall2016 event_fall2016 = 2; + optional .CMsgGCToClientBattlePassRollup_Winter2017 event_winter2017 = 3; + optional .CMsgGCToClientBattlePassRollup_TI7 event_ti7 = 4; + optional .CMsgGCToClientBattlePassRollup_TI8 event_ti8 = 5; + optional .CMsgGCToClientBattlePassRollup_TI9 event_ti9 = 6; + optional .CMsgGCToClientBattlePassRollup_TI10 event_ti10 = 7; +} + +message CMsgGCToClientBattlePassRollupListRequest { + optional uint32 account_id = 1; +} + +message CMsgGCToClientBattlePassRollupListResponse { + message EventInfo { + optional uint32 event_id = 1; + optional uint32 level = 2; + } + + repeated .CMsgGCToClientBattlePassRollupListResponse.EventInfo event_info = 1; +} + +message CMsgClientToGCTransferSeasonalMMRRequest { + optional bool is_party = 1; +} + +message CMsgClientToGCTransferSeasonalMMRResponse { + optional bool success = 1; +} + +message CMsgGCToClientPlaytestStatus { + optional bool active = 1; +} + +message CMsgClientToGCJoinPlaytest { + optional uint32 client_version = 1; +} + +message CMsgClientToGCJoinPlaytestResponse { + optional string error = 1; +} + +message CMsgDOTASetFavoriteTeam { + optional uint32 team_id = 1; + optional uint32 event_id = 2; +} + +message CMsgDOTATriviaCurrentQuestions { + repeated .CMsgDOTATriviaQuestion questions = 1; + optional bool trivia_enabled = 2; +} + +message CMsgDOTASubmitTriviaQuestionAnswer { + optional uint32 question_id = 1; + optional uint32 answer_index = 2; +} + +message CMsgDOTASubmitTriviaQuestionAnswerResponse { + optional .EDOTATriviaAnswerResult result = 1 [default = k_EDOTATriviaAnswerResult_Success]; +} + +message CMsgDOTAStartTriviaSession { +} + +message CMsgDOTAStartTriviaSessionResponse { + optional bool trivia_enabled = 1; + optional uint32 current_timestamp = 2; +} + +message CMsgDOTAAnchorPhoneNumberRequest { +} + +message CMsgDOTAAnchorPhoneNumberResponse { + enum Result { + SUCCESS = 0; + ERROR_UNKNOWN = 1; + ERROR_NO_STEAM_PHONE = 2; + ERROR_ALREADY_IN_USE = 3; + ERROR_COOLDOWN_ACTIVE = 4; + ERROR_GAC_ISSUE = 5; + } + + optional .CMsgDOTAAnchorPhoneNumberResponse.Result result = 1 [default = SUCCESS]; +} + +message CMsgDOTAUnanchorPhoneNumberRequest { +} + +message CMsgDOTAUnanchorPhoneNumberResponse { + enum Result { + SUCCESS = 0; + ERROR_UNKNOWN = 1; + } + + optional .CMsgDOTAUnanchorPhoneNumberResponse.Result result = 1 [default = SUCCESS]; +} + +message CMsgGCToClientCommendNotification { + optional uint32 commender_account_id = 1; + optional string commender_name = 2; + optional uint32 flags = 3; + optional int32 commender_hero_id = 4; +} + +message CMsgDOTAClientToGCQuickStatsRequest { + optional uint32 player_account_id = 1; + optional int32 hero_id = 2; + optional int32 item_id = 3 [default = -1]; + optional uint32 league_id = 4; +} + +message CMsgDOTAClientToGCQuickStatsResponse { + message SimpleStats { + optional float win_percent = 1; + optional float pick_percent = 2; + optional uint32 win_count = 3; + optional uint32 pick_count = 4; + } + + optional .CMsgDOTAClientToGCQuickStatsRequest original_request = 1; + optional .CMsgDOTAClientToGCQuickStatsResponse.SimpleStats hero_stats = 2; + optional .CMsgDOTAClientToGCQuickStatsResponse.SimpleStats item_stats = 3; + optional .CMsgDOTAClientToGCQuickStatsResponse.SimpleStats item_hero_stats = 4; + optional .CMsgDOTAClientToGCQuickStatsResponse.SimpleStats item_player_stats = 5; + optional .CMsgDOTAClientToGCQuickStatsResponse.SimpleStats hero_player_stats = 6; + optional .CMsgDOTAClientToGCQuickStatsResponse.SimpleStats full_set_stats = 7; +} + +message CMsgDOTASelectionPriorityChoiceRequest { + optional .DOTASelectionPriorityChoice choice = 1 [default = k_DOTASelectionPriorityChoice_Invalid]; +} + +message CMsgDOTASelectionPriorityChoiceResponse { + enum Result { + SUCCESS = 0; + ERROR_UNKNOWN = 1; + } + + optional .CMsgDOTASelectionPriorityChoiceResponse.Result result = 1 [default = SUCCESS]; +} + +message CMsgDOTAGameAutographReward { + optional string badge_id = 1; +} + +message CMsgDOTAGameAutographRewardResponse { + enum Result { + SUCCESS = 0; + ERROR_UNKNOWN = 1; + } + + optional .CMsgDOTAGameAutographRewardResponse.Result result = 1 [default = SUCCESS]; +} + +message CMsgDOTADestroyLobbyRequest { +} + +message CMsgDOTADestroyLobbyResponse { + enum Result { + SUCCESS = 0; + ERROR_UNKNOWN = 1; + } + + optional .CMsgDOTADestroyLobbyResponse.Result result = 1 [default = SUCCESS]; +} + +message CMsgDOTAGetRecentPlayTimeFriendsRequest { +} + +message CMsgDOTAGetRecentPlayTimeFriendsResponse { + repeated fixed32 account_ids = 1; +} + +message CMsgPurchaseItemWithEventPoints { + optional uint32 item_def = 1; + optional uint32 quantity = 2; + optional .EEvent event_id = 3 [default = EVENT_ID_NONE]; + optional bool use_premium_points = 4; +} + +message CMsgPurchaseItemWithEventPointsResponse { + enum Result { + SUCCESS = 0; + UNKNOWN_EVENT = 1; + UNKNOWN_ITEM = 2; + BAD_QUANTITY = 3; + NOT_PURCHASEABLE = 4; + SDO_LOAD_FAILED = 5; + NOT_ENOUGH_POINTS = 6; + SQL_ERROR = 7; + FAILED_TO_SEND = 8; + SERVER_ERROR = 9; + NOT_ALLOWED = 10; + CANCELLED = 11; + CLIENT_ERROR = 12; + SUBSCRIPTION_REQUIRED = 13; + } + + optional .CMsgPurchaseItemWithEventPointsResponse.Result result = 1 [default = SUCCESS]; +} + +message CMsgPurchaseHeroRandomRelic { + optional int32 hero_id = 1; + optional .EHeroRelicRarity relic_rarity = 2 [default = HERO_RELIC_RARITY_INVALID]; +} + +message CMsgPurchaseHeroRandomRelicResponse { + optional .EPurchaseHeroRelicResult result = 1 [default = k_EPurchaseHeroRelicResult_Success]; + optional uint32 kill_eater_type = 2; +} + +message CMsgClientToGCRequestPlusWeeklyChallengeResult { + optional .EEvent event_id = 1 [default = EVENT_ID_NONE]; + optional uint32 week = 2; +} + +message CMsgClientToGCRequestPlusWeeklyChallengeResultResponse { +} + +message CMsgProfileRequest { + optional uint32 account_id = 1; +} + +message CMsgProfileResponse { + message FeaturedHero { + optional int32 hero_id = 1; + repeated .CSOEconItem equipped_econ_items = 2; + optional bool manually_set = 3; + optional uint32 plus_hero_xp = 4; + optional .CSOEconItem plus_hero_relics_item = 5; + } + + message MatchInfo { + optional uint64 match_id = 1; + optional uint32 match_timestamp = 2; + optional sint32 performance_rating = 3; + optional int32 hero_id = 4; + optional bool won_match = 5; + } + + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + } + + optional .CSOEconItem background_item = 1; + repeated .CMsgProfileResponse.FeaturedHero featured_heroes = 2; + repeated .CMsgProfileResponse.MatchInfo recent_matches = 3; + repeated .CMsgSuccessfulHero successful_heroes = 4; + optional .CMsgRecentMatchInfo recent_match_details = 5; + optional .CMsgProfileResponse.EResponse result = 6 [default = k_eInternalError]; + optional .CMsgStickerbookPage stickerbook_page = 7; +} + +message CMsgProfileUpdate { + optional uint64 background_item_id = 1; + repeated int32 featured_hero_ids = 2; +} + +message CMsgProfileUpdateResponse { + enum Result { + SUCCESS = 0; + FAILURE = 1; + FAILURE_BAD_HERO1 = 2; + FAILURE_BAD_HERO2 = 3; + FAILURE_BAD_HERO3 = 4; + } + + optional .CMsgProfileUpdateResponse.Result result = 1 [default = SUCCESS]; +} + +message CMsgTalentWinRates { + optional uint32 last_run = 1; + optional int32 ability_id = 2 [default = -1]; + optional uint32 game_count = 3; + optional uint32 win_count = 4; +} + +message CMsgGlobalHeroAverages { + optional uint32 last_run = 1; + optional uint32 avg_gold_per_min = 3; + optional uint32 avg_xp_per_min = 4; + optional uint32 avg_kills = 5; + optional uint32 avg_deaths = 6; + optional uint32 avg_assists = 7; + optional uint32 avg_last_hits = 8; + optional uint32 avg_denies = 9; + optional uint32 avg_net_worth = 10; +} + +message CMsgHeroGlobalDataRequest { + optional int32 hero_id = 1; +} + +message CMsgHeroGlobalDataResponse { + message GraphData { + optional uint32 day = 1; + optional float win_percent = 2; + optional float pick_percent = 3; + optional float ban_percent = 4; + } + + message WeekData { + optional uint32 week = 1; + optional float win_percent = 2; + optional float pick_percent = 3; + optional float ban_percent = 4; + } + + message HeroDataPerRankChunk { + optional uint32 rank_chunk = 1; + repeated .CMsgTalentWinRates talent_win_rates = 2; + optional .CMsgGlobalHeroAverages hero_averages = 3; + repeated .CMsgHeroGlobalDataResponse.GraphData graph_data = 4; + repeated .CMsgHeroGlobalDataResponse.WeekData week_data = 5; + } + + optional int32 hero_id = 1; + repeated .CMsgHeroGlobalDataResponse.HeroDataPerRankChunk hero_data_per_chunk = 2; +} + +message CMsgHeroGlobalDataAllHeroes { + repeated .CMsgHeroGlobalDataResponse heroes = 1; +} + +message CMsgHeroGlobalDataHeroesAlliesAndEnemies { + message HeroData { + optional int32 hero_id = 1; + optional uint32 win_rate = 2; + optional int32 first_other_hero_id = 3; + repeated uint32 ally_win_rate = 5; + repeated uint32 enemy_win_rate = 6; + } + + message RankedHeroData { + optional uint32 rank = 1; + repeated .CMsgHeroGlobalDataHeroesAlliesAndEnemies.HeroData hero_data = 2; + } + + repeated .CMsgHeroGlobalDataHeroesAlliesAndEnemies.RankedHeroData ranked_hero_data = 1; +} + +message CMsgPrivateMetadataKeyRequest { + optional uint64 match_id = 1; +} + +message CMsgPrivateMetadataKeyResponse { + optional uint32 private_key = 1; +} + +message CMsgActivatePlusFreeTrialResponse { + enum Result { + SUCCESS = 0; + ERROR_GENERIC = 1; + ERROR_ALREADY_IN_FREE_TRIAL = 2; + ERROR_ALREADY_USED_FREE_TRIAL = 3; + ERROR_OFFER_NOT_VALID = 4; + } + + optional .CMsgActivatePlusFreeTrialResponse.Result result = 1 [default = SUCCESS]; +} + +message CMsgGCToClientCavernCrawlMapPathCompleted { + message CompletedPathInfo { + optional uint32 path_id_completed = 1 [default = 255]; + optional bool received_ultra_rare_reward = 2; + optional bool half_completed = 3; + } + + optional uint32 event_id = 1; + optional int32 hero_id_completed = 2; + repeated .CMsgGCToClientCavernCrawlMapPathCompleted.CompletedPathInfo completed_paths = 3; + optional uint32 map_variant = 4 [default = 255]; +} + +message CMsgGCToClientCavernCrawlMapUpdated { + optional uint32 event_id = 1; +} + +message CMsgClientToGCCavernCrawlClaimRoom { + optional uint32 event_id = 1; + optional uint32 room_id = 2 [default = 255]; + optional uint32 map_variant = 3 [default = 255]; +} + +message CMsgClientToGCCavernCrawlClaimRoomResponse { + enum Result { + SUCCESS = 0; + ERROR_UNKNOWN = 1; + RECEIVED_ULTRA_RARE_REWARD = 2; + } + + optional .CMsgClientToGCCavernCrawlClaimRoomResponse.Result result = 1 [default = SUCCESS]; +} + +message CMsgClientToGCCavernCrawlUseItemOnRoom { + optional uint32 event_id = 1; + optional uint32 room_id = 2 [default = 255]; + optional uint32 item_type = 3; + optional uint32 map_variant = 4 [default = 255]; +} + +message CMsgClientToGCCavernCrawlUseItemOnRoomResponse { + enum Result { + SUCCESS = 0; + ERROR_UNKNOWN = 1; + RECEIVED_ULTRA_RARE_REWARD = 2; + } + + optional .CMsgClientToGCCavernCrawlUseItemOnRoomResponse.Result result = 1 [default = SUCCESS]; +} + +message CMsgClientToGCCavernCrawlUseItemOnPath { + optional uint32 event_id = 1; + optional uint32 path_id = 2 [default = 255]; + optional uint32 item_type = 3; + optional uint32 map_variant = 4 [default = 255]; +} + +message CMsgClientToGCCavernCrawlUseItemOnPathResponse { + enum Result { + SUCCESS = 0; + ERROR_UNKNOWN = 1; + RECEIVED_ULTRA_RARE_REWARD = 2; + } + + optional .CMsgClientToGCCavernCrawlUseItemOnPathResponse.Result result = 1 [default = SUCCESS]; +} + +message CMsgClientToGCCavernCrawlRequestMapState { + optional uint32 event_id = 1; +} + +message CMsgClientToGCCavernCrawlRequestMapStateResponse { + message SwappedChallenge { + optional uint32 path_id_1 = 1 [default = 255]; + optional uint32 path_id_2 = 2 [default = 255]; + } + + message InventoryItem { + optional uint32 item_type = 1; + optional uint32 count = 2; + } + + message TreasureMap { + optional uint32 map_room_id = 1 [default = 255]; + optional uint32 revealed_room_id = 2 [default = 255]; + } + + message MapVariant { + optional uint32 map_variant = 1 [default = 255]; + optional fixed64 claimed_rooms_1 = 2; + optional fixed64 claimed_rooms_2 = 3; + optional fixed64 revealed_rooms_1 = 4; + optional fixed64 revealed_rooms_2 = 5; + optional fixed64 completed_paths_1 = 6; + optional fixed64 completed_paths_2 = 7; + optional fixed64 completed_paths_3 = 8; + optional fixed64 completed_paths_4 = 9; + optional fixed64 half_completed_paths_1 = 10; + optional fixed64 half_completed_paths_2 = 11; + optional fixed64 half_completed_paths_3 = 12; + optional fixed64 half_completed_paths_4 = 13; + repeated .CMsgClientToGCCavernCrawlRequestMapStateResponse.SwappedChallenge swapped_challenge = 14; + optional uint32 ultra_rare_reward_room_number = 15 [default = 255]; + repeated .CMsgClientToGCCavernCrawlRequestMapStateResponse.TreasureMap treasure_map = 16; + } + + enum Result { + SUCCESS = 0; + ERROR_UNKNOWN = 1; + EVENT_NOT_OWNED = 2; + } + + optional .CMsgClientToGCCavernCrawlRequestMapStateResponse.Result result = 1 [default = SUCCESS]; + optional uint32 available_map_variants_mask = 2; + repeated .CMsgClientToGCCavernCrawlRequestMapStateResponse.InventoryItem inventory_item = 3; + repeated .CMsgClientToGCCavernCrawlRequestMapStateResponse.MapVariant map_variants = 4; +} + +message CMsgClientToGCCavernCrawlGetClaimedRoomCount { + optional uint32 event_id = 1; +} + +message CMsgClientToGCCavernCrawlGetClaimedRoomCountResponse { + message MapVariant { + optional uint32 map_variant = 1 [default = 255]; + optional uint32 count = 2; + } + + enum Result { + SUCCESS = 0; + ERROR_UNKNOWN = 1; + EVENT_NOT_OWNED = 2; + } + + optional .CMsgClientToGCCavernCrawlGetClaimedRoomCountResponse.Result result = 1 [default = SUCCESS]; + repeated .CMsgClientToGCCavernCrawlGetClaimedRoomCountResponse.MapVariant map_variants = 2; + optional uint32 available_map_variants_mask = 3; +} + +message CMsgDOTAMutationList { + message Mutation { + optional uint32 id = 1; + optional string name = 2; + optional string description = 3; + } + + repeated .CMsgDOTAMutationList.Mutation mutations = 1; +} + +message CMsgEventTipsSummaryRequest { + optional .EEvent event_id = 1 [default = EVENT_ID_NONE]; + optional uint32 account_id = 2; +} + +message CMsgEventTipsSummaryResponse { + message Tipper { + optional uint32 tipper_account_id = 1; + optional uint32 tip_count = 2 [default = 1]; + } + + optional bool result = 1; + repeated .CMsgEventTipsSummaryResponse.Tipper tips_received = 2; +} + +message CMsgSocialFeedRequest { + optional uint32 account_id = 1; + optional bool self_only = 2; +} + +message CMsgSocialFeedResponse { + message FeedEvent { + optional uint64 feed_event_id = 1; + optional uint32 account_id = 2; + optional uint32 timestamp = 3; + optional uint32 comment_count = 4; + optional uint32 event_type = 5; + optional uint32 event_sub_type = 6; + optional uint64 param_big_int_1 = 7; + optional uint32 param_int_1 = 8; + optional uint32 param_int_2 = 9; + optional uint32 param_int_3 = 10; + optional string param_string = 11; + } + + enum Result { + SUCCESS = 0; + FAILED_TO_LOAD_FRIENDS = 1; + FAILED_TO_LOAD_FEED_DATA = 2; + FAILED_TO_LOAD_FEED_ENTRY = 3; + FAILED_TO_LOAD_COMMENTS = 4; + FAILED_TOO_MANY_REQUESTS = 5; + } + + optional .CMsgSocialFeedResponse.Result result = 1 [default = SUCCESS]; + repeated .CMsgSocialFeedResponse.FeedEvent feed_events = 2; +} + +message CMsgSocialFeedCommentsRequest { + optional uint64 feed_event_id = 1; +} + +message CMsgSocialFeedCommentsResponse { + message FeedComment { + optional uint32 commenter_account_id = 1; + optional uint32 timestamp = 2; + optional string comment_text = 3; + } + + enum Result { + SUCCESS = 0; + FAILED_TOO_MANY_REQUESTS = 1; + FAILED_TO_LOAD_COMMENTS = 2; + } + + optional .CMsgSocialFeedCommentsResponse.Result result = 1 [default = SUCCESS]; + repeated .CMsgSocialFeedCommentsResponse.FeedComment feed_comments = 3; +} + +message CMsgClientToGCPlayerCardSpecificPurchaseRequest { + optional uint32 player_account_id = 1; + optional uint32 event_id = 2; + optional uint64 card_dust_item_id = 3; +} + +message CMsgClientToGCPlayerCardSpecificPurchaseResponse { + enum Result { + SUCCESS = 1; + ERROR_INTERNAL = 2; + ERROR_INSUFFICIENT_DUST = 3; + ERROR_ITEM_NOT_DUST_ITEM = 4; + ERROR_FAILED_CARD_PACK_CREATE = 5; + ERROR_NOT_AVAILABLE = 6; + } + + optional .CMsgClientToGCPlayerCardSpecificPurchaseResponse.Result result = 1 [default = SUCCESS]; + optional uint64 item_id = 2; +} + +message CMsgClientToGCRequestContestVotes { + optional uint32 contest_id = 1; +} + +message CMsgClientToGCRequestContestVotesResponse { + message ItemVote { + optional uint64 contest_item_id = 1; + optional int32 vote = 2; + } + + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + } + + optional .CMsgClientToGCRequestContestVotesResponse.EResponse result = 1 [default = k_eInternalError]; + repeated .CMsgClientToGCRequestContestVotesResponse.ItemVote votes = 2; +} + +message CMsgClientToGCRecordContestVote { + optional uint32 contest_id = 1; + optional uint64 contest_item_id = 2; + optional int32 vote = 3; +} + +message CMsgGCToClientRecordContestVoteResponse { + enum EResult { + SUCCESS = 0; + FAILED_EVENT_NOT_OWNED = 1; + FAILED_SQL_INSERT_FAILED = 2; + FAILED_INVALID_CONTEST = 3; + FAILED_CONTEST_NOT_ACTIVE = 4; + FAILED_TIMEOUT = 5; + } + + optional .CMsgGCToClientRecordContestVoteResponse.EResult eresult = 1 [default = SUCCESS]; +} + +message CMsgDevGrantEventPoints { + optional .EEvent event_id = 1 [default = EVENT_ID_NONE]; + optional uint32 event_points = 2; + optional uint32 premium_points = 3; +} + +message CMsgDevGrantEventPointsResponse { + optional .EDevEventRequestResult result = 1 [default = k_EDevEventRequestResult_Success]; +} + +message CMsgDevGrantEventAction { + optional .EEvent event_id = 1 [default = EVENT_ID_NONE]; + optional uint32 action_id = 2; + optional uint32 action_score = 3; +} + +message CMsgDevGrantEventActionResponse { + optional .EDevEventRequestResult result = 1 [default = k_EDevEventRequestResult_Success]; +} + +message CMsgDevDeleteEventActions { + optional .EEvent event_id = 1 [default = EVENT_ID_NONE]; + optional uint32 start_action_id = 2; + optional uint32 end_action_id = 3; + optional bool remove_audit = 4; +} + +message CMsgDevDeleteEventActionsResponse { + optional .EDevEventRequestResult result = 1 [default = k_EDevEventRequestResult_Success]; +} + +message CMsgDevResetEventState { + optional .EEvent event_id = 1 [default = EVENT_ID_NONE]; + optional bool remove_audit = 2; +} + +message CMsgDevResetEventStateResponse { + optional .EDevEventRequestResult result = 1 [default = k_EDevEventRequestResult_Success]; +} + +message CMsgDevReloadAllEvents { +} + +message CMsgDevReloadAllEventsResponse { + optional .EDevEventRequestResult result = 1 [default = k_EDevEventRequestResult_Success]; +} + +message CMsgConsumeEventSupportGrantItem { + optional uint64 item_id = 1; +} + +message CMsgConsumeEventSupportGrantItemResponse { + optional .ESupportEventRequestResult result = 1 [default = k_ESupportEventRequestResult_Success]; +} + +message CMsgClientToGCGetFilteredPlayers { +} + +message CMsgGCToClientGetFilteredPlayersResponse { + message CFilterEntry { + optional fixed32 account_id = 1; + optional fixed32 time_added = 2; + optional fixed32 time_expires = 3; + optional string note = 4; + } + + enum Result { + SUCCESS = 0; + FAILURE = 1; + } + + optional .CMsgGCToClientGetFilteredPlayersResponse.Result result = 1 [default = SUCCESS]; + repeated .CMsgGCToClientGetFilteredPlayersResponse.CFilterEntry filtered_players = 2; + optional int32 base_slots = 3; + optional int32 additional_slots = 4; + optional int32 next_slot_cost = 5; +} + +message CMsgClientToGCRemoveFilteredPlayer { + optional fixed32 account_id_to_remove = 1; +} + +message CMsgGCToClientRemoveFilteredPlayerResponse { + enum Result { + SUCCESS = 0; + FAILURE = 1; + } + + optional .CMsgGCToClientRemoveFilteredPlayerResponse.Result result = 1 [default = SUCCESS]; +} + +message CMsgClientToGCPurchaseFilteredPlayerSlot { + optional int32 additional_slots_current = 1; +} + +message CMsgGCToClientPurchaseFilteredPlayerSlotResponse { + enum Result { + SUCCESS = 0; + FAILURE = 1; + CURRENT_SLOTCOUNT_DOESNT_MATCH = 2; + CANT_AFFORD = 3; + } + + optional .CMsgGCToClientPurchaseFilteredPlayerSlotResponse.Result result = 1 [default = SUCCESS]; + optional int32 additional_slots = 2; + optional int32 next_slot_cost = 3; +} + +message CMsgClientToGCUpdateFilteredPlayerNote { + optional fixed32 target_account_id = 1; + optional string new_note = 2; +} + +message CMsgGCToClientUpdateFilteredPlayerNoteResponse { + enum Result { + SUCCESS = 0; + FAILURE = 1; + NOT_FOUND = 2; + } + + optional .CMsgGCToClientUpdateFilteredPlayerNoteResponse.Result result = 1 [default = SUCCESS]; +} + +message CMsgPartySearchPlayer { + optional fixed32 account_id = 1; + optional fixed64 match_id = 2; + optional fixed32 creation_time = 3; +} + +message CMsgGCToClientPlayerBeaconState { + repeated int32 num_active_beacons = 1; +} + +message CMsgGCToClientPartyBeaconUpdate { + optional bool beacon_added = 1; + optional int32 beacon_type = 2; + optional fixed32 account_id = 3; +} + +message CMsgClientToGCUpdatePartyBeacon { + enum Action { + ON = 0; + OFF = 1; + } + + optional .CMsgClientToGCUpdatePartyBeacon.Action action = 1 [default = ON]; +} + +message CMsgClientToGCRequestActiveBeaconParties { +} + +message CMsgGCToClientRequestActiveBeaconPartiesResponse { + enum EResponse { + SUCCESS = 0; + FAILURE = 1; + BUSY = 2; + } + + optional .CMsgGCToClientRequestActiveBeaconPartiesResponse.EResponse response = 1 [default = SUCCESS]; + repeated .CPartySearchClientParty active_parties = 2; +} + +message CMsgClientToGCJoinPartyFromBeacon { + optional fixed64 party_id = 1; + optional fixed32 account_id = 2; + optional int32 beacon_type = 3; +} + +message CMsgGCToClientJoinPartyFromBeaconResponse { + enum EResponse { + SUCCESS = 0; + FAILURE = 1; + BUSY = 2; + NOT_LEADER = 3; + } + + optional .CMsgGCToClientJoinPartyFromBeaconResponse.EResponse response = 1 [default = SUCCESS]; +} + +message CMsgClientToGCManageFavorites { + enum Action { + ADD = 0; + REMOVE = 1; + } + + optional .CMsgClientToGCManageFavorites.Action action = 1 [default = ADD]; + optional fixed32 account_id = 2; + optional string favorite_name = 3; + optional bool invite_response = 4; + optional bool from_friendlist = 5; + optional fixed64 lobby_id = 6; +} + +message CMsgGCToClientManageFavoritesResponse { + enum EResponse { + SUCCESS = 0; + FAILURE = 1; + NO_INVITE_PRESENT = 2; + INVITE_SENT = 3; + EXPIRED = 4; + BUSY = 5; + } + + optional .CMsgGCToClientManageFavoritesResponse.EResponse response = 1 [default = SUCCESS]; + optional string debug_message = 2; + optional .CMsgPartySearchPlayer player = 3; +} + +message CMsgClientToGCGetFavoritePlayers { + optional uint64 pagination_key = 1; + optional int32 pagination_count = 2; +} + +message CMsgGCToClientGetFavoritePlayersResponse { + enum EResponse { + SUCCESS = 0; + FAILURE = 1; + } + + optional .CMsgGCToClientGetFavoritePlayersResponse.EResponse response = 1 [default = SUCCESS]; + repeated .CMsgPartySearchPlayer players = 2; + optional uint64 next_pagination_key = 3; +} + +message CMsgGCToClientPartySearchInvite { + optional fixed32 account_id = 1; +} + +message CMsgClientToGCVerifyFavoritePlayers { + repeated fixed32 account_ids = 1; +} + +message CMsgGCToClientVerifyFavoritePlayersResponse { + message Result { + optional .CMsgPartySearchPlayer player = 1; + optional bool is_favorite = 2; + } + + repeated .CMsgGCToClientVerifyFavoritePlayersResponse.Result results = 1; +} + +message CMsgClientToGCRequestPlayerRecentAccomplishments { + optional uint32 account_id = 1; +} + +message CMsgClientToGCRequestPlayerRecentAccomplishmentsResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + } + + optional .CMsgClientToGCRequestPlayerRecentAccomplishmentsResponse.EResponse result = 1 [default = k_eInternalError]; + optional .CMsgPlayerRecentAccomplishments player_accomplishments = 2; +} + +message CMsgClientToGCRequestPlayerHeroRecentAccomplishments { + optional uint32 account_id = 1; + optional int32 hero_id = 2; +} + +message CMsgClientToGCRequestPlayerHeroRecentAccomplishmentsResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + } + + optional .CMsgClientToGCRequestPlayerHeroRecentAccomplishmentsResponse.EResponse result = 1 [default = k_eInternalError]; + optional .CMsgPlayerHeroRecentAccomplishments hero_accomplishments = 2; +} + +message CMsgClientToGCSubmitPlayerMatchSurvey { + optional uint64 match_id = 1; + optional sint32 rating = 3; + optional uint32 flags = 4; +} + +message CMsgClientToGCSubmitPlayerMatchSurveyResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eAlreadySubmitted = 4; + k_ePlayerNotValid = 5; + } + + optional .CMsgClientToGCSubmitPlayerMatchSurveyResponse.EResponse eresult = 1 [default = k_eInternalError]; + optional uint32 account_id = 2; +} + +message CMsgGCToClientVACReminder { +} + +message CMsgClientToGCUnderDraftRequest { + optional uint32 account_id = 1; + optional uint32 event_id = 2; +} + +message CMsgClientToGCUnderDraftResponse { + optional .EUnderDraftResponse result = 1 [default = k_eInternalError]; + optional uint32 account_id = 2; + optional uint32 event_id = 3; + optional .CMsgUnderDraftData draft_data = 4; +} + +message CMsgClientToGCUnderDraftReroll { + optional uint32 event_id = 1; +} + +message CMsgClientToGCUnderDraftRerollResponse { + optional .EUnderDraftResponse result = 1 [default = k_eInternalError]; + optional uint32 event_id = 2; + optional .CMsgUnderDraftData draft_data = 3; +} + +message CMsgClientToGCUnderDraftBuy { + optional uint32 event_id = 1; + optional uint32 slot_id = 2; +} + +message CMsgGCToClientGuildUnderDraftGoldUpdated { + optional uint32 event_id = 1; +} + +message CMsgClientToGCUnderDraftBuyResponse { + optional .EUnderDraftResponse result = 1 [default = k_eInternalError]; + optional uint32 event_id = 2; + optional uint32 slot_id = 3; + optional .CMsgUnderDraftData draft_data = 4; +} + +message CMsgClientToGCUnderDraftRollBackBench { + optional uint32 event_id = 1; +} + +message CMsgClientToGCUnderDraftRollBackBenchResponse { + optional .EUnderDraftResponse result = 1 [default = k_eInternalError]; + optional uint32 event_id = 2; + optional .CMsgUnderDraftData draft_data = 3; +} + +message CMsgClientToGCUnderDraftSell { + optional uint32 event_id = 1; + optional uint32 slot_id = 2; +} + +message CMsgClientToGCUnderDraftSellResponse { + optional .EUnderDraftResponse result = 1 [default = k_eInternalError]; + optional uint32 event_id = 2; + optional uint32 slot_id = 3; + optional .CMsgUnderDraftData draft_data = 4; +} + +message CMsgClientToGCUnderDraftRedeemReward { + optional uint32 event_id = 1; + optional uint32 action_id = 2; +} + +message CMsgClientToGCUnderDraftRedeemRewardResponse { + optional .EUnderDraftResponse result = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCSubmitDraftTriviaMatchAnswer { + optional bool chose_radiant_as_winner = 1; + optional uint32 event_id = 2; + optional uint32 end_time = 3; +} + +message CMsgClientToGCSubmitDraftTriviaMatchAnswerResponse { + optional .EDOTADraftTriviaAnswerResult result = 1 [default = k_EDOTADraftTriviaAnswerResult_Success]; +} + +message CMsgDraftTriviaVoteCount { + optional uint32 total_votes = 1; + optional uint32 radiant_votes = 2; + optional uint32 dire_votes = 3; +} + +message CMsgClientToGCRequestReporterUpdates { +} + +message CMsgClientToGCRequestReporterUpdatesResponse { + message ReporterUpdate { + optional uint64 match_id = 1; + optional int32 hero_id = 2; + optional uint32 report_reason = 3; + optional uint32 timestamp = 4; + } + + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTimeout = 2; + k_eTooBusy = 3; + k_eNotPermitted = 4; + k_eNotToSoon = 5; + k_eNotValid = 6; + } + + optional .CMsgClientToGCRequestReporterUpdatesResponse.EResponse enum_result = 1 [default = k_eInternalError]; + repeated .CMsgClientToGCRequestReporterUpdatesResponse.ReporterUpdate updates = 2; + optional int32 num_reported = 3; + optional int32 num_no_action_taken = 4; +} + +message CMsgClientToGCAcknowledgeReporterUpdates { + repeated uint64 match_ids = 1; +} + +message CMsgClientToGCRecalibrateMMR { +} + +message CMsgClientToGCRecalibrateMMRResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTimeout = 2; + k_eTooBusy = 3; + k_eNotPermitted = 4; + k_eNotToSoon = 5; + k_eNotValid = 6; + } + + optional .CMsgClientToGCRecalibrateMMRResponse.EResponse result = 1 [default = k_eInternalError]; +} + +message CMsgDOTAPostGameItemAwardNotification { + optional uint32 receiver_account_id = 1; + repeated uint32 item_def_index = 2; + optional uint32 action_id = 3; +} + +message CMsgClientToGCGetOWMatchDetails { +} + +message CMsgClientToGCGetOWMatchDetailsResponse { + message Marker { + optional uint32 start_game_time_s = 1; + optional uint32 end_game_time_s = 2; + } + + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTimeout = 2; + k_eTooBusy = 3; + k_eNotPermitted = 4; + k_eNoCaseAvailable = 5; + } + + optional .CMsgClientToGCGetOWMatchDetailsResponse.EResponse result = 1 [default = k_eInternalError]; + optional uint64 overwatch_replay_id = 2; + optional uint64 decryption_key = 3; + optional uint32 cluster = 4; + optional uint32 overwatch_salt = 5; + optional uint32 target_player_slot = 6; + repeated .CMsgClientToGCGetOWMatchDetailsResponse.Marker markers = 7; + optional .EOverwatchReportReason report_reason = 8 [default = k_EOverwatchReportReason_Unknown]; + optional int32 target_hero_id = 9; + optional uint32 rank_tier = 10; + optional uint32 lane_selection_flags = 11; +} + +message CMsgClientToGCSubmitOWConviction { + optional uint64 overwatch_replay_id = 1; + optional uint32 target_player_slot = 2; + optional .EOverwatchConviction cheating_conviction = 3 [default = k_EOverwatchConviction_None]; + optional .EOverwatchConviction griefing_conviction = 4 [default = k_EOverwatchConviction_None]; +} + +message CMsgClientToGCSubmitOWConvictionResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTimeout = 2; + k_eTooBusy = 3; + k_eNotPermitted = 4; + k_eInvalidReplayID = 5; + k_eInvalidConviction = 6; + k_eInvalidPlayerSlot = 7; + } + + optional .CMsgClientToGCSubmitOWConvictionResponse.EResponse result = 1 [default = k_eInternalError]; + optional uint64 overwatch_replay_id = 2; +} + +message CMsgClientToGCChinaSSAURLRequest { +} + +message CMsgClientToGCChinaSSAURLResponse { + optional string agreement_url = 1; +} + +message CMsgClientToGCChinaSSAAcceptedRequest { +} + +message CMsgClientToGCChinaSSAAcceptedResponse { + optional bool agreement_accepted = 1; +} + +message CMsgGCToClientOverwatchCasesAvailable { + optional fixed32 expire_time = 1; +} + +message CMsgClientToGCStartWatchingOverwatch { + optional uint64 overwatch_replay_id = 1; + optional uint32 target_player_slot = 2; +} + +message CMsgClientToGCStopWatchingOverwatch { + optional uint64 overwatch_replay_id = 1; + optional uint32 target_player_slot = 2; +} + +message CMsgClientToGCOverwatchReplayError { + optional uint64 overwatch_replay_id = 1; +} + +message CMsgClientToGCGetDPCFavorites { +} + +message CMsgClientToGCGetDPCFavoritesResponse { + message Favorite { + optional .EDPCFavoriteType favorite_type = 1 [default = FAVORITE_TYPE_ALL]; + optional uint32 favorite_id = 2; + } + + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidRequest = 5; + } + + optional .CMsgClientToGCGetDPCFavoritesResponse.EResponse result = 1 [default = k_eInternalError]; + repeated .CMsgClientToGCGetDPCFavoritesResponse.Favorite favorites = 2; +} + +message CMsgClientToGCSetDPCFavoriteState { + optional .EDPCFavoriteType favorite_type = 1 [default = FAVORITE_TYPE_ALL]; + optional uint32 favorite_id = 2; + optional bool enabled = 3; +} + +message CMsgClientToGCSetDPCFavoriteStateResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eFavoriteTypeOutOfRange = 2; + k_eLockFailed = 3; + k_eAlreadyFavorited = 4; + k_eAlreadyUnfavorited = 5; + k_eInsertRecordFailed = 6; + k_eRemoveRecordFailed = 7; + k_eTimeout = 8; + } + + optional .CMsgClientToGCSetDPCFavoriteStateResponse.EResponse result = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCSetEventActiveSeasonID { + optional uint32 event_id = 1; + optional uint32 active_season_id = 2; +} + +message CMsgClientToGCSetEventActiveSeasonIDResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eDisabled = 2; + k_eTooBusy = 3; + k_eNotAllowed = 4; + k_eTimeout = 5; + k_eInternalSuccessNoChange = 6; + } + + optional .CMsgClientToGCSetEventActiveSeasonIDResponse.EResponse result = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCPurchaseLabyrinthBlessings { + optional .EEvent event_id = 1 [default = EVENT_ID_NONE]; + repeated int32 blessing_ids = 2; + optional bool debug = 3; + optional bool debug_remove = 4; +} + +message CMsgClientToGCPurchaseLabyrinthBlessingsResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eNoSuchBlessing = 2; + k_eNotEnoughShards = 3; + k_eNoPath = 4; + k_eTimeout = 5; + } + + optional .CMsgClientToGCPurchaseLabyrinthBlessingsResponse.EResponse result = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCGetStickerbookRequest { + optional uint32 account_id = 1; +} + +message CMsgClientToGCGetStickerbookResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTimeout = 2; + k_eNotAllowed = 3; + k_eTooBusy = 4; + } + + optional .CMsgClientToGCGetStickerbookResponse.EResponse response = 1 [default = k_eInternalError]; + optional .CMsgStickerbook stickerbook = 2; +} + +message CMsgClientToGCCreateStickerbookPageRequest { + optional uint32 team_id = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; + optional .EStickerbookPageType page_type = 3 [default = STICKER_PAGE_GENERIC]; +} + +message CMsgClientToGCCreateStickerbookPageResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTimeout = 2; + k_eTooManyPages = 3; + k_eTooBusy = 4; + } + + optional .CMsgClientToGCCreateStickerbookPageResponse.EResponse response = 1 [default = k_eInternalError]; + optional uint32 page_number = 2; +} + +message CMsgClientToGCDeleteStickerbookPageRequest { + optional uint32 page_num = 1; + optional uint32 sticker_count = 2; + optional uint32 sticker_max = 3; +} + +message CMsgClientToGCDeleteStickerbookPageResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTimeout = 2; + k_eInvalidStickerCount = 3; + k_eTooBusy = 4; + k_eInvalidStickerMax = 5; + k_eInvalidPage = 6; + } + + optional .CMsgClientToGCDeleteStickerbookPageResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCPlaceStickersRequest { + message StickerItem { + optional uint32 page_num = 2; + optional .CMsgStickerbookSticker sticker = 3; + } + + repeated .CMsgClientToGCPlaceStickersRequest.StickerItem sticker_items = 1; +} + +message CMsgClientToGCPlaceStickersResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTimeout = 2; + k_eMissingItem = 3; + k_eTooBusy = 4; + k_eDuplicateItem = 5; + k_eInvalidPage = 6; + k_ePageTypeMismatch = 7; + k_eTooManyStickers = 8; + } + + optional .CMsgClientToGCPlaceStickersResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCPlaceCollectionStickersRequest { + message Slot { + optional uint32 page_num = 1; + optional uint32 slot = 2; + optional uint64 new_item_id = 3; + optional uint32 old_item_def_id = 4; + optional uint32 old_quality = 5; + } + + repeated .CMsgClientToGCPlaceCollectionStickersRequest.Slot slots = 1; +} + +message CMsgClientToGCPlaceCollectionStickersResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTimeout = 2; + k_eMissingItem = 3; + k_eTooBusy = 4; + k_eDuplicateItem = 5; + k_eInvalidPage = 6; + k_ePageTypeMismatch = 7; + k_eOldItemMismatch = 8; + k_eInvalidSlot = 9; + k_eSlotTypeMismatch = 10; + } + + optional .CMsgClientToGCPlaceCollectionStickersResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCOrderStickerbookTeamPageRequest { + optional .CMsgStickerbookTeamPageOrderSequence page_order_sequence = 1; +} + +message CMsgClientToGCOrderStickerbookTeamPageResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTimeout = 2; + k_eTooManyPages = 3; + k_eTooBusy = 4; + k_eInvalidPage = 5; + } + + optional .CMsgClientToGCOrderStickerbookTeamPageResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCSetHeroSticker { + optional int32 hero_id = 1; + optional uint64 new_item_id = 2; + optional uint64 old_item_id = 3; +} + +message CMsgClientToGCSetHeroStickerResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTimeout = 2; + k_eMissingItem = 3; + k_eTooBusy = 4; + k_eOldItemMismatch = 5; + k_eInvalidHero = 6; + } + + optional .CMsgClientToGCSetHeroStickerResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCGetHeroStickers { +} + +message CMsgClientToGCGetHeroStickersResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTimeout = 2; + k_eTooBusy = 4; + } + + optional .CMsgClientToGCGetHeroStickersResponse.EResponse response = 1 [default = k_eInternalError]; + optional .CMsgStickerHeroes sticker_heroes = 2; +} + +message CMsgClientToGCSetFavoritePage { + optional uint32 page_num = 1; + optional bool clear = 2; +} + +message CMsgClientToGCSetFavoritePageResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTimeout = 2; + k_eTooBusy = 4; + k_eInvalidPage = 5; + } + + optional .CMsgClientToGCSetFavoritePageResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCClaimSwag { + optional .EEvent event_id = 1 [default = EVENT_ID_NONE]; + optional uint32 action_id = 2; + optional uint32 data = 3; +} + +message CMsgClientToGCClaimSwagResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTimeout = 2; + k_eTooBusy = 4; + k_eAlreadyClaimed = 5; + k_eDisabled = 6; + k_eInvalidRequest = 7; + k_eUserNotEligible = 8; + k_eStorageError = 9; + k_eRewardDisabled = 10; + } + + optional .CMsgClientToGCClaimSwagResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCCollectorsCacheAvailableDataRequest { + optional uint32 contest_id = 1; +} + +message CMsgGCToClientCollectorsCacheAvailableDataResponse { + message Vote { + enum EVoteType { + k_eUp = 0; + k_eDown = 1; + } + + optional uint32 item_def = 1; + optional .CMsgGCToClientCollectorsCacheAvailableDataResponse.Vote.EVoteType vote_type = 2 [default = k_eUp]; + } + + repeated .CMsgGCToClientCollectorsCacheAvailableDataResponse.Vote votes = 1; +} + +message CMsgClientToGCUploadMatchClip { + optional .CMatchClip match_clip = 1; +} + +message CMsgGCToClientUploadMatchClipResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTimeout = 2; + k_eTooBusy = 4; + } + + optional .CMsgGCToClientUploadMatchClipResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCMapStatsRequest { +} + +message CMsgGCToClientMapStatsResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + } + + optional .CMsgGCToClientMapStatsResponse.EResponse response = 1 [default = k_eInternalError]; + optional .CMsgMapStatsSnapshot personal_stats = 2; + optional .CMsgGlobalMapStats global_stats = 3; +} + +message CMsgRoadToTIAssignedQuest { + optional uint32 quest_id = 1; + optional uint32 difficulty = 2; + optional uint32 progress_flags = 3; + optional uint32 half_credit_flags = 4; + optional bool completed = 5; +} + +message CMsgRoadToTIUserData { + repeated .CMsgRoadToTIAssignedQuest quests = 1; +} + +message CMsgClientToGCRoadToTIGetQuests { + optional uint32 event_id = 1; +} + +message CMsgClientToGCRoadToTIGetQuestsResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidID = 5; + } + + optional .CMsgClientToGCRoadToTIGetQuestsResponse.EResponse response = 1 [default = k_eInternalError]; + optional .CMsgRoadToTIUserData quest_data = 2; +} + +message CMsgClientToGCRoadToTIGetActiveQuest { + optional uint32 event_id = 1; +} + +message CMsgClientToGCRoadToTIGetActiveQuestResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eNone = 2; + k_eTooBusy = 3; + k_eDisabled = 4; + k_eTimeout = 5; + k_eInvalidID = 6; + } + + optional .CMsgClientToGCRoadToTIGetActiveQuestResponse.EResponse response = 1 [default = k_eInternalError]; + optional .CMsgRoadToTIAssignedQuest quest_data = 2; +} + +message CMsgGCToClientRoadToTIQuestDataUpdated { + optional uint32 event_id = 1; + optional .CMsgRoadToTIUserData quest_data = 2; +} + +message CMsgClientToGCRoadToTIUseItem { + optional uint32 event_id = 1; + optional uint32 item_type = 2; + optional uint32 hero_index = 3; +} + +message CMsgClientToGCRoadToTIUseItemResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eBadInput = 2; + k_eNoItem = 3; + k_eDisabled = 4; + k_eTimeout = 5; + k_eInvalidID = 6; + } + + optional .CMsgClientToGCRoadToTIUseItemResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCRoadToTIDevForceQuest { + optional uint32 event_id = 1; + optional bool force_match_type = 2; + optional uint32 force_id = 3; +} + +message CMsgLobbyRoadToTIMatchQuestData { + optional .CMsgRoadToTIAssignedQuest quest_data = 1; + optional uint32 quest_period = 2; + optional uint32 quest_number = 3; +} + +message CMsgClientToGCNewBloomGift { + optional uint32 defindex = 1; + optional uint64 lobby_id = 2; + repeated uint32 target_account_ids = 3; +} + +message CMsgClientToGCNewBloomGiftResponse { + optional .ENewBloomGiftingResponse result = 1 [default = kENewBloomGifting_UnknownFailure]; + repeated uint32 received_account_ids = 2; +} + +message CMsgClientToGCSetBannedHeroes { + repeated int32 banned_hero_ids = 1; +} + +message CMsgClientToGCUpdateComicBookStats { + message SingleStat { + optional .CMsgClientToGCUpdateComicBookStat_Type stat_type = 1 [default = CMsgClientToGCUpdateComicBookStat_Type_HighestPageRead]; + optional uint32 stat_value = 2; + } + + message LanguageStats { + optional uint32 comic_id = 1; + optional uint32 client_language = 2; + optional uint32 client_comic_language = 3; + } + + optional uint32 comic_id = 1; + repeated .CMsgClientToGCUpdateComicBookStats.SingleStat stats = 2; + optional .CMsgClientToGCUpdateComicBookStats.LanguageStats language_stats = 3; +} + +message CMsgGCRankedPlayerInfoSubmit { + optional string name = 1; +} + +message CMsgGCRankedPlayerInfoSubmitResponse { + enum EResult { + SUCCESS = 0; + ERROR_UNSPECIFIED = 1; + } + + optional .CMsgGCRankedPlayerInfoSubmitResponse.EResult result = 1 [default = SUCCESS]; +} + +message CMsgDOTAClaimGatedEvent { + optional .EEvent event_id = 1 [default = EVENT_ID_NONE]; +} + +message CMsgDOTAClaimGatedEventResponse { + enum ResultCode { + Success = 0; + InvalidEvent = 1; + EventNotActive = 2; + UserIneligible = 3; + AlreadyClaimed = 4; + ServerError = 5; + RateLimit = 6; + } + + optional .CMsgDOTAClaimGatedEventResponse.ResultCode result = 1 [default = Success]; +} + +message CMsgClientToGCGetEventRanking { + optional .EEvent event_id = 1 [default = EVENT_ID_NONE]; + optional uint32 account_id = 2; +} + +message CMsgClientToGCGetEventRankingResponse { + optional .EEvent event_id = 1 [default = EVENT_ID_NONE]; + optional uint32 account_id = 2; + optional float score = 3; + optional float percentile = 4; + optional uint32 final_rank_bucket = 5; +} + +message CMsgClientToGCGetEventCoupon { + optional .EEvent event_id = 1 [default = EVENT_ID_NONE]; + repeated uint32 coupon_ids = 2; +} + +message CMsgClientToGCGetEventCouponResponse { + message Coupon { + optional uint32 coupon_id = 1; + optional string coupon_code = 2; + } + + enum ResultCode { + Success = 0; + InvalidEvent = 1; + EventNotActive = 2; + UserIneligible = 3; + ServerError = 4; + Timeout = 5; + MultipleCoupons = 6; + } + + optional .CMsgClientToGCGetEventCouponResponse.ResultCode result = 1 [default = Success]; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; + repeated .CMsgClientToGCGetEventCouponResponse.Coupon coupons = 3; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_chat.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_chat.proto new file mode 100644 index 00000000..85734a85 --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_chat.proto @@ -0,0 +1,247 @@ +import "in/dragonbra/javasteam/protobufs/dota2/dota_shared_enums.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +message CMsgClientToGCPrivateChatInvite { + optional string private_chat_channel_name = 1; + optional uint32 invited_account_id = 2; +} + +message CMsgClientToGCPrivateChatKick { + optional string private_chat_channel_name = 1; + optional uint32 kick_account_id = 2; +} + +message CMsgClientToGCPrivateChatPromote { + optional string private_chat_channel_name = 1; + optional uint32 promote_account_id = 2; +} + +message CMsgClientToGCPrivateChatDemote { + optional string private_chat_channel_name = 1; + optional uint32 demote_account_id = 2; +} + +message CMsgGCToClientPrivateChatResponse { + enum Result { + SUCCESS = 0; + FAILURE_CREATION_LOCK = 1; + FAILURE_SQL_TRANSACTION = 2; + FAILURE_SDO_LOAD = 3; + FAILURE_NO_PERMISSION = 4; + FAILURE_ALREADY_MEMBER = 5; + FAILURE_NOT_A_MEMBER = 7; + FAILURE_NO_REMAINING_ADMINS = 8; + FAILURE_NO_ROOM = 9; + FAILURE_CREATION_RATE_LIMITED = 10; + FAILURE_UNKNOWN_CHANNEL_NAME = 11; + FAILURE_UNKNOWN_USER = 12; + FAILURE_UNKNOWN_ERROR = 13; + FAILURE_CANNOT_KICK_ADMIN = 14; + FAILURE_ALREADY_ADMIN = 15; + } + + optional string private_chat_channel_name = 1; + optional .CMsgGCToClientPrivateChatResponse.Result result = 2 [default = SUCCESS]; + optional string username = 3; +} + +message CMsgDOTAJoinChatChannel { + optional string channel_name = 2; + optional .DOTAChatChannelType_t channel_type = 4 [default = DOTAChannelType_Regional]; + optional bool silent_rejection = 5; +} + +message CMsgDOTALeaveChatChannel { + optional uint64 channel_id = 1; +} + +message CMsgGCChatReportPublicSpam { + optional uint64 channel_id = 1; + optional uint32 channel_user_id = 2; +} + +message CMsgDOTAChatModeratorBan { + optional uint64 channel_id = 1; + optional uint32 account_id = 2; + optional uint32 duration = 3; +} + +message CMsgDOTAChatMessage { + message DiceRoll { + optional int32 roll_min = 1; + optional int32 roll_max = 2; + optional int32 result = 3; + } + + message TriviaAnswered { + optional uint32 question_id = 1; + optional uint32 answer_index = 2; + optional uint32 party_questions_correct = 3; + optional uint32 party_questions_viewed = 4; + optional uint32 party_trivia_points = 5; + } + + message PlayerDraftPick { + optional int32 player_id = 1 [default = -1]; + optional int32 team = 2; + } + + message ChatWheelMessage { + optional uint32 message_id = 1 [default = 4294967295]; + optional uint32 emoticon_id = 2; + optional string message_text = 3; + optional uint32 hero_badge_tier = 4; + } + + optional uint32 account_id = 1; + optional uint64 channel_id = 2; + optional string persona_name = 3; + optional string text = 4; + optional uint32 timestamp = 5; + optional uint32 suggest_invite_account_id = 6; + optional string suggest_invite_name = 7; + optional uint32 fantasy_draft_owner_account_id = 8; + optional uint32 fantasy_draft_player_account_id = 9; + optional uint32 event_id = 10; + optional bool suggest_invite_to_lobby = 11; + optional bool coin_flip = 13; + optional int32 player_id = 14 [default = -1]; + optional uint32 share_profile_account_id = 15; + optional uint32 channel_user_id = 16; + optional .CMsgDOTAChatMessage.DiceRoll dice_roll = 17; + optional uint64 share_party_id = 18; + optional uint64 share_lobby_id = 19; + optional uint64 share_lobby_custom_game_id = 20; + optional string share_lobby_passkey = 21; + optional uint32 private_chat_channel_id = 22; + optional uint32 status = 23; + optional bool legacy_battle_cup_victory = 24; + optional uint32 battle_cup_streak = 29; + optional uint32 badge_level = 25; + optional int32 suggest_pick_hero_id = 26; + optional string suggest_pick_hero_role = 27; + optional int32 suggest_ban_hero_id = 30; + optional .CMsgDOTAChatMessage.TriviaAnswered trivia_answer = 32; + optional int32 requested_ability_id = 33 [default = -1]; + optional uint32 chat_flags = 34; + optional bool started_finding_match = 35; + optional bool ctrl_is_down = 36; + optional uint32 favorite_team_id = 37; + optional uint32 favorite_team_quality = 38; + optional int32 suggest_player_draft_pick = 39 [default = -1]; + optional .CMsgDOTAChatMessage.PlayerDraftPick player_draft_pick = 40; + optional .CMsgDOTAChatMessage.ChatWheelMessage chat_wheel_message = 41; + optional uint32 event_level = 42; + optional uint32 suggest_pick_hero_facet = 43; + optional int32 requested_hero_id = 44; + optional uint64 requested_hero_facet_key = 45; +} + +message CMsgDOTAChatMember { + optional fixed64 steam_id = 1; + optional string persona_name = 2; + optional uint32 channel_user_id = 3; + optional uint32 status = 4; +} + +message CMsgDOTAJoinChatChannelResponse { + enum Result { + JOIN_SUCCESS = 0; + INVALID_CHANNEL_TYPE = 1; + ACCOUNT_NOT_FOUND = 2; + ACH_FAILED = 3; + USER_IN_TOO_MANY_CHANNELS = 4; + RATE_LIMIT_EXCEEDED = 5; + CHANNEL_FULL = 6; + CHANNEL_FULL_OVERFLOWED = 7; + FAILED_TO_ADD_USER = 8; + CHANNEL_TYPE_DISABLED = 9; + PRIVATE_CHAT_CREATE_FAILED = 10; + PRIVATE_CHAT_NO_PERMISSION = 11; + PRIVATE_CHAT_CREATE_LOCK_FAILED = 12; + PRIVATE_CHAT_KICKED = 13; + USER_NOT_ALLOWED = 14; + ENSURE_SPECIAL_PRIVILEGES_FAILED = 15; + NEW_PLAYER_USER_NOT_ELIGIBLE = 16; + SILENT_ERROR = 17; + NEW_PLAYER_USER_BANNED = 18; + } + + optional uint32 response = 1; + optional string channel_name = 2; + optional fixed64 channel_id = 3; + optional uint32 max_members = 4; + repeated .CMsgDOTAChatMember members = 5; + optional .DOTAChatChannelType_t channel_type = 6 [default = DOTAChannelType_Regional]; + optional .CMsgDOTAJoinChatChannelResponse.Result result = 7 [default = JOIN_SUCCESS]; + optional bool gc_initiated_join = 8; + optional uint32 channel_user_id = 9; + optional string welcome_message = 10; + optional .EChatSpecialPrivileges special_privileges = 11 [default = k_EChatSpecialPrivileges_None]; +} + +message CMsgDOTAOtherJoinedChatChannel { + optional fixed64 channel_id = 1; + optional string persona_name = 2; + optional fixed64 steam_id = 3; + optional uint32 channel_user_id = 4; + optional uint32 status = 5; +} + +message CMsgDOTAOtherLeftChatChannel { + optional fixed64 channel_id = 1; + optional fixed64 steam_id = 2; + optional uint32 channel_user_id = 3; +} + +message CMsgDOTARequestChatChannelList { +} + +message CMsgDOTARequestChatChannelListResponse { + message ChatChannel { + optional string channel_name = 1; + optional uint32 num_members = 2; + optional .DOTAChatChannelType_t channel_type = 3 [default = DOTAChannelType_Regional]; + } + + repeated .CMsgDOTARequestChatChannelListResponse.ChatChannel channels = 1; +} + +message CMsgDOTAChatGetUserListResponse { + message Member { + optional fixed64 steam_id = 1; + optional string persona_name = 2; + optional uint32 channel_user_id = 3; + optional uint32 status = 4; + } + + optional fixed64 channel_id = 1; + repeated .CMsgDOTAChatGetUserListResponse.Member members = 2; +} + +message CMsgDOTAChatGetMemberCount { + optional string channel_name = 1; + optional .DOTAChatChannelType_t channel_type = 2 [default = DOTAChannelType_Regional]; +} + +message CMsgDOTAChatGetMemberCountResponse { + optional string channel_name = 1; + optional .DOTAChatChannelType_t channel_type = 2 [default = DOTAChannelType_Regional]; + optional uint32 member_count = 3; +} + +message CMsgDOTAChatRegionsEnabled { + message Region { + optional float min_latitude = 1; + optional float max_latitude = 2; + optional float min_longitude = 3; + optional float max_longitude = 4; + } + + optional bool enable_all_regions = 1; + repeated .CMsgDOTAChatRegionsEnabled.Region enabled_regions = 2; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_coaching.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_coaching.proto new file mode 100644 index 00000000..0ee76fe0 --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_coaching.proto @@ -0,0 +1,381 @@ +import "in/dragonbra/javasteam/protobufs/dota2/dota_shared_enums.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_lobby.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum ECoachTeammateRating { + k_ECoachTeammateRating_None = 0; + k_ECoachTeammateRating_Positive = 1; + k_ECoachTeammateRating_Negative = 2; + k_ECoachTeammateRating_Abusive = 3; +} + +enum EPrivateCoachingSessionState { + k_ePrivateCoachingSessionState_Invalid = 0; + k_ePrivateCoachingSessionState_SearchingForCoach = 1; + k_ePrivateCoachingSessionState_CoachAssigned = 2; + k_ePrivateCoachingSessionState_Finished = 3; + k_ePrivateCoachingSessionState_Expired = 4; + k_ePrivateCoachingSessionState_Abandoned = 5; +} + +enum EPrivateCoachingSessionMemberFlag { + k_EPrivateCoachingSessionMemberFlag_Requester = 1; + k_EPrivateCoachingSessionMemberFlag_Coach = 2; + k_EPrivateCoachingSessionMemberFlag_LeftSession = 4; +} + +enum EPlayerCoachMatchFlag { + k_EPlayerCoachMatchFlag_EligibleForRewards = 1; + k_EPlayerCoachMatchFlag_PrivateCoach = 2; +} + +message CMsgPlayerCoachMatch { + optional uint64 match_id = 1; + optional .EMatchOutcome match_outcome = 2 [default = k_EMatchOutcome_Unknown]; + optional uint32 coached_team = 3; + optional fixed32 start_time = 4; + optional uint32 duration = 5; + repeated .ECoachTeammateRating teammate_ratings = 6; + optional uint32 coach_flags = 7; +} + +message CMsgPrivateCoachingSessionMember { + optional uint32 account_id = 1; + optional uint32 member_flags = 2; + optional .ECoachTeammateRating member_session_rating = 3 [default = k_ECoachTeammateRating_None]; +} + +message CMsgPrivateCoachingSession { + optional uint64 private_coaching_session_id = 1; + optional fixed32 requested_timestamp = 2; + optional uint32 requested_language = 3; + optional .EPrivateCoachingSessionState coaching_session_state = 4 [default = k_ePrivateCoachingSessionState_Invalid]; + repeated .CMsgPrivateCoachingSessionMember session_members = 5; + optional uint64 current_lobby_id = 6; + optional uint64 current_server_steam_id = 7; + optional fixed32 accepted_timestamp = 8; + optional fixed32 completed_timestamp = 9; +} + +message CMsgPrivateCoachingSessionStatus { + optional uint32 requester_competitive_rank_tier = 1; + optional uint32 requester_games_played = 2; +} + +message CMsgAvailablePrivateCoachingSession { + optional .CMsgPrivateCoachingSession coaching_session = 1; + optional .CMsgPrivateCoachingSessionStatus coaching_session_status = 2; +} + +message CMsgAvailablePrivateCoachingSessionList { + repeated .CMsgAvailablePrivateCoachingSession available_coaching_sessions = 1; +} + +message CMsgAvailablePrivateCoachingSessionSummary { + optional uint32 coaching_session_count = 1; +} + +message CMsgClientToGCRequestPlayerCoachMatches { +} + +message CMsgClientToGCRequestPlayerCoachMatchesResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + } + + optional .CMsgClientToGCRequestPlayerCoachMatchesResponse.EResponse result = 1 [default = k_eInternalError]; + repeated .CMsgPlayerCoachMatch coach_matches = 2; +} + +message CMsgClientToGCRequestPlayerCoachMatch { + optional uint64 match_id = 1; +} + +message CMsgClientToGCRequestPlayerCoachMatchResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + } + + optional .CMsgClientToGCRequestPlayerCoachMatchResponse.EResponse result = 1 [default = k_eInternalError]; + optional .CMsgPlayerCoachMatch coach_match = 2; +} + +message CMsgClientToGCSubmitCoachTeammateRating { + optional uint64 match_id = 1; + optional uint32 coach_account_id = 2; + optional .ECoachTeammateRating rating = 3 [default = k_ECoachTeammateRating_None]; + optional string reason = 4; +} + +message CMsgClientToGCSubmitCoachTeammateRatingResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eInvalidInput = 4; + k_eAlreadySubmitted = 5; + k_eVotingFinished = 6; + k_ePlayerNotInMatch = 7; + k_eCoachNotInMatch = 8; + k_ePlayerNotOnCoachTeam = 9; + k_ePlayerInSamePartyAsCoach = 10; + k_eMatchNotEligible = 11; + } + + optional .CMsgClientToGCSubmitCoachTeammateRatingResponse.EResponse result = 1 [default = k_eInternalError]; +} + +message CMsgGCToClientCoachTeammateRatingsChanged { + optional .CMsgPlayerCoachMatch coach_match = 1; +} + +message CMsgClientToGCRequestPrivateCoachingSession { + optional uint32 language = 1; +} + +message CMsgClientToGCRequestPrivateCoachingSessionResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eAlreadyInSession = 5; + k_eBehaviorScoreTooLow = 6; + k_eInvalidLobbyType = 7; + k_eLowPriorityPlayer = 8; + k_eLowPriorityLobby = 9; + k_eLowPriorityParty = 10; + k_eTextChatBan = 11; + k_eVoiceChatBan = 12; + k_eMatchBan = 13; + } + + optional .CMsgClientToGCRequestPrivateCoachingSessionResponse.EResponse result = 1 [default = k_eInternalError]; + optional .CMsgPrivateCoachingSession coaching_session = 2; +} + +message CMsgClientToGCAcceptPrivateCoachingSession { + optional uint64 coaching_session_id = 1; +} + +message CMsgClientToGCAcceptPrivateCoachingSessionResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eUnknownSession = 5; + k_eAlreadyHasCoach = 6; + k_eAlreadyHasSession = 7; + k_eInvalidUser = 8; + k_eAlreadyFinished = 9; + k_eInvalidLobbyType = 10; + k_eAlreadyInLobby = 11; + k_eLobbyIsLan = 12; + k_eLobbyIsLeague = 13; + k_eInvalidLobbyState = 14; + k_eRequesterIsNotPlayer = 15; + k_eTooManyCoaches = 16; + k_eCoachWasPlayer = 17; + k_eCoachBehaviorScoreTooLow = 18; + k_eCoachRankNotCalibrated = 19; + k_eCoachRankNotEligible = 20; + k_eCoachRankTooLow = 21; + } + + optional .CMsgClientToGCAcceptPrivateCoachingSessionResponse.EResponse result = 1 [default = k_eInternalError]; + optional .CMsgPrivateCoachingSession coaching_session = 2; +} + +message CMsgClientToGCLeavePrivateCoachingSession { +} + +message CMsgClientToGCLeavePrivateCoachingSessionResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNoSession = 5; + k_eAlreadyLeft = 6; + } + + optional .CMsgClientToGCLeavePrivateCoachingSessionResponse.EResponse result = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCGetCurrentPrivateCoachingSession { +} + +message CMsgClientToGCGetCurrentPrivateCoachingSessionResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + } + + optional .CMsgClientToGCGetCurrentPrivateCoachingSessionResponse.EResponse result = 1 [default = k_eInternalError]; + optional .CMsgPrivateCoachingSession current_session = 2; +} + +message CMsgGCToClientPrivateCoachingSessionUpdated { + optional .CMsgPrivateCoachingSession coaching_session = 1; +} + +message CMsgClientToGCSubmitPrivateCoachingSessionRating { + optional uint64 coaching_session_id = 1; + optional .ECoachTeammateRating session_rating = 2 [default = k_ECoachTeammateRating_None]; +} + +message CMsgClientToGCSubmitPrivateCoachingSessionRatingResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eUnknownSession = 5; + k_eNotMember = 6; + k_eAlreadySubmitted = 7; + k_eSessionActive = 8; + k_eSessionTooShort = 9; + k_eNoCoach = 10; + k_eInvalidRating = 11; + } + + optional .CMsgClientToGCSubmitPrivateCoachingSessionRatingResponse.EResponse result = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCGetAvailablePrivateCoachingSessions { + optional uint32 language = 1; +} + +message CMsgClientToGCGetAvailablePrivateCoachingSessionsResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + } + + optional .CMsgClientToGCGetAvailablePrivateCoachingSessionsResponse.EResponse result = 1 [default = k_eInternalError]; + optional .CMsgAvailablePrivateCoachingSessionList available_sessions_list = 2; +} + +message CMsgClientToGCGetAvailablePrivateCoachingSessionsSummary { +} + +message CMsgClientToGCGetAvailablePrivateCoachingSessionsSummaryResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + } + + optional .CMsgClientToGCGetAvailablePrivateCoachingSessionsSummaryResponse.EResponse result = 1 [default = k_eInternalError]; + optional .CMsgAvailablePrivateCoachingSessionSummary coaching_session_summary = 2; +} + +message CMsgClientToGCJoinPrivateCoachingSessionLobby { +} + +message CMsgClientToGCJoinPrivateCoachingSessionLobbyResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNoSession = 5; + k_eSessionFinished = 6; + k_eAlreadyLeft = 7; + k_eNotACoach = 8; + k_eNoLobby = 9; + k_eCoachInThisLobby = 10; + k_eCoachInALobby = 11; + k_eLobbyIsLan = 12; + k_eLobbyIsLeague = 13; + k_eInvalidLobbyType = 14; + k_eInvalidLobbyState = 15; + k_eRequesterIsNotPlayer = 16; + k_eTooManyCoaches = 17; + k_eCoachWasPlayer = 18; + k_eJoinFailed = 19; + } + + optional .CMsgClientToGCJoinPrivateCoachingSessionLobbyResponse.EResponse result = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCCoachFriend { + optional uint32 target_account_id = 1; +} + +message CMsgClientToGCCoachFriendResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eCoachNotSubscriber = 5; + k_eLobbyNotFound = 6; + k_eFriendsOnBothSides = 7; + k_eNotFriends = 8; + k_eCoachInThisLobby = 9; + k_eCoachInALobby = 10; + k_eLobbyIsLan = 11; + k_eInvalidLobbyType = 12; + k_eInvalidLobbyState = 13; + k_eFriendIsNotAPlayer = 14; + k_eTooManyCoaches = 15; + k_eCoachSwitchedTeams = 16; + k_eLobbyIsLeague = 17; + k_eCoachWasPlayer = 18; + k_eRequestRejected = 19; + } + + optional .CMsgClientToGCCoachFriendResponse.EResponse result = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCRespondToCoachFriendRequest { + optional uint32 coach_account_id = 1; + optional .ELobbyMemberCoachRequestState response = 2 [default = k_eLobbyMemberCoachRequestState_None]; +} + +message CMsgClientToGCRespondToCoachFriendRequestResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eLobbyNotFound = 5; + k_eInvalidLobbyState = 6; + k_eCoachNotInLobby = 7; + k_ePlayerInvalidTeam = 8; + k_eCoachInvalidTeam = 9; + k_eNoRequest = 10; + k_eInvalidResponse = 11; + k_eAlreadyResponded = 12; + } + + optional .CMsgClientToGCRespondToCoachFriendRequestResponse.EResponse result = 1 [default = k_eInternalError]; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_craftworks.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_craftworks.proto new file mode 100644 index 00000000..ede4392d --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_craftworks.proto @@ -0,0 +1,92 @@ +import "in/dragonbra/javasteam/protobufs/dota2/steammessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_shared_enums.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_webapi.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/gcsdk_gcmessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/base_gcmessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/econ_gcmessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/valveextensions.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_craftworks.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +message CMsgCraftworksUserData { + optional .CMsgCraftworksComponents component_inventory = 1; +} + +message CMsgClientToGCCraftworksGetUserData { + optional uint32 craftworks_id = 1; +} + +message CMsgClientToGCCraftworksGetUserDataResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidCraftworks = 5; + k_eExpiredCraftworks = 6; + } + + optional .CMsgClientToGCCraftworksGetUserDataResponse.EResponse response = 1 [default = k_eInternalError]; + optional .CMsgCraftworksUserData user_data = 2; +} + +message CMsgGCToClientCraftworksUserDataUpdated { + optional uint32 craftworks_id = 1; + optional .CMsgCraftworksUserData user_data = 2; +} + +message CMsgClientToGCCraftworksCraftRecipe { + optional uint32 craftworks_id = 1; + optional uint64 recipe_id = 2; +} + +message CMsgClientToGCCraftworksCraftRecipeResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidCraftworks = 5; + k_eExpiredCraftworks = 6; + k_eNotEnoughComponents = 7; + k_eInvalidRecipe = 8; + k_eRecipeTierLocked = 9; + k_eAlreadyCraftedMaxAmount = 10; + } + + optional .CMsgClientToGCCraftworksCraftRecipeResponse.EResponse response = 1 [default = k_eInternalError]; + optional .CMsgDOTAClaimEventActionResponse claim_response = 2; +} + +message CMsgClientToGCCraftworksDevModifyComponents { + enum EOperation { + k_eAddComponents = 1; + k_eSubtractComponents = 2; + } + + optional uint32 craftworks_id = 1; + optional .CMsgCraftworksComponents components = 2; + optional .CMsgClientToGCCraftworksDevModifyComponents.EOperation operation = 3 [default = k_eAddComponents]; +} + +message CMsgClientToGCCraftworksDevModifyComponentsResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidCraftworks = 5; + k_eNotAllowed = 6; + } + + optional .CMsgClientToGCCraftworksDevModifyComponentsResponse.EResponse response = 1 [default = k_eInternalError]; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_fantasy.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_fantasy.proto new file mode 100644 index 00000000..30c7cc10 --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_fantasy.proto @@ -0,0 +1,574 @@ +import "in/dragonbra/javasteam/protobufs/dota2/dota_shared_enums.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum DOTA_2013PassportSelectionIndices { + PP13_SEL_ALLSTAR_PLAYER_0 = 0; + PP13_SEL_ALLSTAR_PLAYER_1 = 1; + PP13_SEL_ALLSTAR_PLAYER_2 = 2; + PP13_SEL_ALLSTAR_PLAYER_3 = 3; + PP13_SEL_ALLSTAR_PLAYER_4 = 4; + PP13_SEL_ALLSTAR_PLAYER_5 = 5; + PP13_SEL_ALLSTAR_PLAYER_6 = 6; + PP13_SEL_ALLSTAR_PLAYER_7 = 7; + PP13_SEL_ALLSTAR_PLAYER_8 = 8; + PP13_SEL_ALLSTAR_PLAYER_9 = 9; + PP13_SEL_QUALPRED_WEST_0 = 10; + PP13_SEL_QUALPRED_WEST_1 = 11; + PP13_SEL_QUALPRED_WEST_2 = 12; + PP13_SEL_QUALPRED_WEST_3 = 13; + PP13_SEL_QUALPRED_WEST_4 = 14; + PP13_SEL_QUALPRED_WEST_5 = 15; + PP13_SEL_QUALPRED_WEST_6 = 16; + PP13_SEL_QUALPRED_WEST_7 = 17; + PP13_SEL_QUALPRED_WEST_8 = 18; + PP13_SEL_QUALPRED_WEST_9 = 19; + PP13_SEL_QUALPRED_WEST_10 = 20; + PP13_SEL_QUALPRED_WEST_11 = 21; + PP13_SEL_QUALPRED_WEST_12 = 22; + PP13_SEL_QUALPRED_WEST_13 = 23; + PP13_SEL_QUALPRED_WEST_14 = 24; + PP13_SEL_QUALPRED_EAST_0 = 25; + PP13_SEL_QUALPRED_EAST_1 = 26; + PP13_SEL_QUALPRED_EAST_2 = 27; + PP13_SEL_QUALPRED_EAST_3 = 28; + PP13_SEL_QUALPRED_EAST_4 = 29; + PP13_SEL_QUALPRED_EAST_5 = 30; + PP13_SEL_QUALPRED_EAST_6 = 31; + PP13_SEL_QUALPRED_EAST_7 = 32; + PP13_SEL_QUALPRED_EAST_8 = 33; + PP13_SEL_QUALPRED_EAST_9 = 34; + PP13_SEL_QUALPRED_EAST_10 = 35; + PP13_SEL_QUALPRED_EAST_11 = 36; + PP13_SEL_QUALPRED_EAST_12 = 37; + PP13_SEL_QUALPRED_EAST_13 = 38; + PP13_SEL_QUALPRED_EAST_14 = 39; + PP13_SEL_TEAMCUP_TEAM = 40; + PP13_SEL_TEAMCUP_PLAYER = 41; + PP13_SEL_TEAMCUP_TEAM_LOCK = 42; + PP13_SEL_TEAMCUP_PLAYER_LOCK = 43; + PP13_SEL_EVENTPRED_0 = 44; + PP13_SEL_EVENTPRED_1 = 45; + PP13_SEL_EVENTPRED_2 = 46; + PP13_SEL_EVENTPRED_3 = 47; + PP13_SEL_EVENTPRED_4 = 48; + PP13_SEL_EVENTPRED_5 = 49; + PP13_SEL_EVENTPRED_6 = 50; + PP13_SEL_EVENTPRED_7 = 51; + PP13_SEL_EVENTPRED_8 = 52; + PP13_SEL_EVENTPRED_9 = 53; + PP13_SEL_EVENTPRED_10 = 54; + PP13_SEL_EVENTPRED_11 = 55; + PP13_SEL_EVENTPRED_12 = 56; + PP13_SEL_EVENTPRED_13 = 57; + PP13_SEL_EVENTPRED_14 = 58; + PP13_SEL_EVENTPRED_15 = 59; + PP13_SEL_EVENTPRED_16 = 60; + PP13_SEL_EVENTPRED_17 = 61; + PP13_SEL_EVENTPRED_18 = 62; + PP13_SEL_EVENTPRED_19 = 63; + PP13_SEL_EVENTPRED_20 = 64; + PP13_SEL_EVENTPRED_21 = 65; + PP13_SEL_EVENTPRED_22 = 66; + PP13_SEL_EVENTPRED_23 = 67; + PP13_SEL_EVENTPRED_24 = 68; + PP13_SEL_EVENTPRED_25 = 69; + PP13_SEL_EVENTPRED_26 = 70; + PP13_SEL_EVENTPRED_27 = 71; + PP13_SEL_EVENTPRED_28 = 72; + PP13_SEL_EVENTPRED_29 = 73; + PP13_SEL_EVENTPRED_30 = 74; + PP13_SEL_EVENTPRED_31 = 75; + PP13_SEL_EVENTPRED_32 = 76; + PP13_SEL_EVENTPRED_33 = 77; + PP13_SEL_EVENTPRED_34 = 78; + PP13_SEL_EVENTPRED_35 = 79; + PP13_SEL_EVENTPRED_36 = 80; + PP13_SEL_EVENTPRED_37 = 81; + PP13_SEL_EVENTPRED_38 = 82; + PP13_SEL_EVENTPRED_39 = 83; + PP13_SEL_EVENTPRED_40 = 84; + PP13_SEL_EVENTPRED_41 = 85; + PP13_SEL_EVENTPRED_42 = 86; + PP13_SEL_EVENTPRED_43 = 87; + PP13_SEL_SOLO_0 = 88; + PP13_SEL_SOLO_1 = 89; + PP13_SEL_SOLO_2 = 90; + PP13_SEL_SOLO_3 = 91; + PP13_SEL_SOLO_4 = 92; + PP13_SEL_SOLO_5 = 93; + PP13_SEL_SOLO_6 = 94; + PP13_SEL_SOLO_7 = 95; +} + +message CMsgDOTAPlayerInfo { + message Results { + optional uint32 league_id = 1; + optional uint32 placement = 2; + optional uint32 earnings = 3; + } + + message AuditEntry { + optional uint32 start_timestamp = 1; + optional uint32 end_timestamp = 2; + optional uint32 team_id = 3; + optional string team_name = 4; + optional string team_tag = 5; + optional string team_url_logo = 6; + } + + message ProRegistration { + optional uint32 registration_period = 1; + optional uint32 timestamp = 2; + } + + optional uint32 account_id = 1; + optional string name = 2; + optional string country_code = 3; + optional .Fantasy_Roles fantasy_role = 4 [default = FANTASY_ROLE_UNDEFINED]; + optional uint32 team_id = 5; + optional string team_name = 6; + optional string team_tag = 7; + optional string sponsor = 8; + optional string real_name = 11; + optional uint32 total_earnings = 13; + repeated .CMsgDOTAPlayerInfo.Results results = 14; + optional string team_url_logo = 15; + repeated .CMsgDOTAPlayerInfo.AuditEntry audit_entries = 16; + optional string team_abbreviation = 17; + repeated .CMsgDOTAPlayerInfo.ProRegistration pro_registration = 18; + optional bool has_played_in_international = 19; +} + +message CMsgDOTAPlayerInfoList { + repeated .CMsgDOTAPlayerInfo player_infos = 1; +} + +message CMsgDOTATeamRoster { + optional uint32 timestamp = 1; + optional uint32 team_id = 2; + repeated uint32 member_account_ids = 3; + optional uint32 coach_account_id = 4; +} + +message CMsgDOTADPCProfileInfo { + message PredictionInfo { + optional uint32 percent = 1; + optional int32 shard_winnings = 2; + } + + message FantasyInfo { + optional uint32 top_90_finishes = 1; + optional uint32 top_75_finishes = 2; + optional uint32 top_50_finishes = 3; + optional uint32 shard_winnings = 4; + } + + optional .CMsgDOTAPlayerInfo player_info = 1; + optional .CMsgDOTADPCProfileInfo.PredictionInfo prediction_info = 2; + optional .CMsgDOTADPCProfileInfo.FantasyInfo fantasy_info = 3; + repeated uint32 disabled_notifications = 4; +} + +message CMsgDOTALeaderboards { + message RegionLeaderboard { + optional uint32 division = 1; + repeated uint32 account_ids = 2; + } + + repeated .CMsgDOTALeaderboards.RegionLeaderboard leaderboards = 2; +} + +message CMsgDOTAPassportVoteTeamGuess { + optional uint32 league_id = 1; + optional uint32 winner_id = 2; + optional uint32 runnerup_id = 3; +} + +message CMsgDOTAPassportVoteGenericSelection { + optional .DOTA_2013PassportSelectionIndices selection_index = 1 [default = PP13_SEL_ALLSTAR_PLAYER_0]; + optional uint32 selection = 2; +} + +message CMsgDOTAPassportStampedPlayer { + optional uint64 steam_id = 1; + optional uint32 stamp_level = 2; +} + +message CMsgDOTAPassportPlayerCardChallenge { + optional uint32 challenge_id = 1; +} + +message CMsgDOTAPassportVote { + repeated .CMsgDOTAPassportVoteTeamGuess team_votes = 1; + repeated .CMsgDOTAPassportVoteGenericSelection generic_selections = 2; + repeated .CMsgDOTAPassportStampedPlayer stamped_players = 3; + repeated .CMsgDOTAPassportPlayerCardChallenge player_card_challenges = 4; +} + +message CMsgClientToGCGetPlayerCardRosterRequest { + optional uint32 league_id = 1; + optional uint32 fantasy_period = 3 [default = 4294967295]; +} + +message CMsgClientToGCGetPlayerCardRosterResponse { + enum Result { + SUCCESS = 0; + ERROR_UNSPECIFIED = 1; + ERROR_INVALID_LEAGUE_ID = 2; + ERROR_INVALID_TIMESTAMP = 3; + } + + optional .CMsgClientToGCGetPlayerCardRosterResponse.Result result = 1 [default = SUCCESS]; + repeated uint64 player_card_item_id = 2; + optional float score = 3; + optional bool finalized = 4; + optional float percentile = 5; +} + +message CMsgClientToGCBatchGetPlayerCardRosterRequest { + message LeagueTimestamp { + optional uint32 league_id = 1; + optional uint32 fantasy_period = 3 [default = 4294967295]; + } + + repeated .CMsgClientToGCBatchGetPlayerCardRosterRequest.LeagueTimestamp league_timestamps = 1; +} + +message CMsgClientToGCBatchGetPlayerCardRosterResponse { + message RosterResponse { + optional uint32 league_id = 1; + optional uint32 deprecated_timestamp = 2; + optional .CMsgClientToGCBatchGetPlayerCardRosterResponse.Result result = 3 [default = SUCCESS]; + repeated uint64 player_card_item_id = 4; + optional float score = 5; + optional bool finalized = 6; + optional float percentile = 7; + optional uint32 fantasy_period = 8 [default = 4294967295]; + } + + enum Result { + SUCCESS = 0; + ERROR_UNSPECIFIED = 1; + ERROR_INVALID_LEAGUE_ID = 2; + ERROR_INVALID_TIMESTAMP = 3; + } + + repeated .CMsgClientToGCBatchGetPlayerCardRosterResponse.RosterResponse responses = 1; +} + +message CMsgClientToGCSetPlayerCardRosterRequest { + optional uint32 league_id = 1; + optional uint32 deprecated_timestamp = 2; + optional uint32 slot = 3; + optional uint64 player_card_item_id = 4; + optional uint32 event_id = 5; + optional uint32 fantasy_period = 6 [default = 4294967295]; +} + +message CMsgClientToGCSetPlayerCardRosterResponse { + enum Result { + SUCCESS = 0; + ERROR_UNSPECIFIED = 1; + ERROR_INVALID_LEAGUE_ID = 2; + ERROR_INVALID_TIMESTAMP = 3; + ERROR_PLAYER_CARD_NOT_OWNED = 4; + ERROR_INVALID_SLOT = 5; + ERROR_FAILED_CARD_INFO = 6; + ERROR_ACCOUNT_DUPLICATE = 7; + ERROR_LOCKED_TIMESTAMP = 8; + ERROR_INVALID_LEAGUE_FOR_PERIOD = 9; + ERROR_INVALID_EVENT = 10; + } + + optional .CMsgClientToGCSetPlayerCardRosterResponse.Result result = 1 [default = SUCCESS]; +} + +message CMsgDOTAFantasyDPCLeagueStatus { + message LeagueInfo { + optional uint32 league_id = 1; + optional string league_name = 2; + optional uint32 start_timestamp = 3; + optional uint32 end_timestamp = 4; + repeated uint32 day_timestamps = 5; + optional .CMsgDOTAFantasyDPCLeagueStatus.ERosterStatus status = 8 [default = UNSET]; + } + + enum ERosterStatus { + UNSET = 0; + PARTIAL = 1; + FULL = 2; + CONCLUDED = 3; + } + + repeated .CMsgDOTAFantasyDPCLeagueStatus.LeagueInfo league_infos = 1; +} + +message CMsgDOTADPCSearchResults { + message Player { + optional uint32 id = 1; + optional string name = 2; + optional string real_name = 3; + } + + message Team { + optional uint32 id = 1; + optional string name = 2; + optional string url = 3; + } + + message League { + optional uint32 id = 1; + optional string name = 2; + } + + enum ESearchResultsDesired { + k_ESearchResultsDesired_Players = 1; + k_ESearchResultsDesired_Teams = 2; + k_ESearchResultsDesired_Leagues = 4; + k_ESearchResultsDesired_All = 7; + } + + repeated .CMsgDOTADPCSearchResults.Player players = 1; + repeated .CMsgDOTADPCSearchResults.Team teams = 2; + repeated .CMsgDOTADPCSearchResults.League leagues = 3; +} + +message CMsgDOTADPCTeamFavoriteRankings { + message Team { + optional uint32 team_id = 1; + optional uint32 favorites = 2; + } + + repeated .CMsgDOTADPCTeamFavoriteRankings.Team teams = 1; +} + +message CMsgDotaFantasyCraftingTabletPeriodData { + message Gem { + optional .Fantasy_Gem_Type type = 1 [default = FANTASY_GEM_TYPE_RUBY]; + optional uint32 slot = 2; + optional uint32 shape = 3; + optional uint32 quality = 4; + optional .Fantasy_Scoring stat = 5 [default = FANTASY_SCORING_KILLS]; + } + + message Tablet { + optional uint32 tablet_id = 1; + optional uint32 tablet_level = 2; + optional .Fantasy_Roles fantasy_role = 3 [default = FANTASY_ROLE_UNDEFINED]; + optional uint32 account_id = 4; + optional uint32 prefix = 5; + optional uint32 suffix = 6; + repeated .CMsgDotaFantasyCraftingTabletPeriodData.Gem gems = 7; + optional float score = 8; + optional uint32 best_series = 9; + } + + optional uint32 fantasy_period = 1 [default = 4294967295]; + repeated .CMsgDotaFantasyCraftingTabletPeriodData.Tablet tablets = 2; +} + +message CMsgDotaFantasyCraftingTabletData { + message TabletPeriodDataEntry { + optional uint32 key = 1; + optional .CMsgDotaFantasyCraftingTabletPeriodData value = 2; + } + + repeated .CMsgDotaFantasyCraftingTabletData.TabletPeriodDataEntry tablet_period_data = 1; +} + +message CMsgDotaFantasyCraftingUserData { + message PeriodScore { + optional float total_score = 1; + optional float percentile = 2; + } + + message PeriodRollTokensEntry { + optional uint32 key = 1; + optional uint32 value = 2; + } + + message PeriodScoresEntry { + optional uint32 key = 1; + optional .CMsgDotaFantasyCraftingUserData.PeriodScore value = 2; + } + + repeated uint32 available_rolls = 1; + repeated .CMsgDotaFantasyCraftingUserData.PeriodRollTokensEntry period_roll_tokens = 2; + repeated .CMsgDotaFantasyCraftingUserData.PeriodScoresEntry period_scores = 3; +} + +message CMsgDotaFantasyCraftingDataCache { + message CacheEntry { + optional uint32 account_id = 1; + optional uint32 fantasy_league = 2; + optional .CMsgGCToClientFantasyCraftingDataUpdated cache_data = 3; + } + + repeated .CMsgDotaFantasyCraftingDataCache.CacheEntry cache_entries = 1; +} + +message CMsgClientToGCFantasyCraftingGetData { + optional uint32 fantasy_league = 1; + optional uint32 account_id = 2; +} + +message CMsgClientToGCFantasyCraftingGetDataResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidLeague = 5; + } + + optional .CMsgClientToGCFantasyCraftingGetDataResponse.EResponse response = 1 [default = k_eInternalError]; + optional .CMsgDotaFantasyCraftingUserData user_data = 2; + optional .CMsgDotaFantasyCraftingTabletData tablet_data = 4; +} + +message CMsgClientToGCFantasyCraftingPerformOperation { + optional uint32 fantasy_league = 1; + optional uint32 tablet_id = 2; + optional uint32 operation_id = 3; + optional uint64 extra_data = 4; +} + +message CMsgClientToGCFantasyCraftingPerformOperationResponse { + message TitleChoice { + optional uint32 prefix_choice = 1; + optional uint32 suffix_choice = 2; + } + + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidLeague = 5; + k_eNoTokens = 6; + k_eMoreInfo = 7; + } + + optional .CMsgClientToGCFantasyCraftingPerformOperationResponse.EResponse response = 1 [default = k_eInternalError]; + optional uint32 operation_id = 2; + optional uint32 tablet_id = 7; + optional .CMsgDotaFantasyCraftingUserData user_data = 8; + optional .CMsgDotaFantasyCraftingTabletData tablet_data = 9; + repeated uint32 player_choices = 3; + repeated uint32 prefix_choices = 4; + repeated uint32 suffix_choices = 5; + repeated .CMsgClientToGCFantasyCraftingPerformOperationResponse.TitleChoice title_choices = 6; +} + +message CMsgGCToClientFantasyCraftingDataUpdated { + optional uint32 fantasy_league = 1; + optional .CMsgDotaFantasyCraftingUserData user_data = 2; + optional .CMsgDotaFantasyCraftingTabletData tablet_data = 4; +} + +message CMsgClientToGCFantasyCraftingDevModifyTablet { + optional uint32 fantasy_league = 1; + optional bool reset_tablet = 2; + optional uint32 modify_tokens = 3; + optional bool upgrade_tablets = 6; + optional uint32 fantasy_period = 5 [default = 4294967295]; +} + +message CMsgClientToGCFantasyCraftingDevModifyTabletResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidLeague = 5; + } + + optional .CMsgClientToGCFantasyCraftingDevModifyTabletResponse.EResponse response = 1 [default = k_eInternalError]; + optional .CMsgDotaFantasyCraftingUserData user_data = 2; + optional .CMsgDotaFantasyCraftingTabletData tablet_data = 3; +} + +message CMsgClientToGCFantasyCraftingSelectPlayer { + optional uint32 fantasy_league = 1; + optional uint32 account_id = 2; +} + +message CMsgClientToGCFantasyCraftingSelectPlayerResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidLeague = 5; + k_eInvalidPlayer = 6; + } + + optional .CMsgClientToGCFantasyCraftingSelectPlayerResponse.EResponse response = 1 [default = k_eInternalError]; + optional .CMsgDotaFantasyCraftingTabletData tablet_data = 2; +} + +message CMsgClientToGCFantasyCraftingGenerateTablets { + optional uint32 fantasy_league = 1; + repeated uint32 account_ids = 2; +} + +message CMsgClientToGCFantasyCraftingGenerateTabletsResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidLeague = 5; + k_eInvalidPlayer = 6; + } + + optional .CMsgClientToGCFantasyCraftingGenerateTabletsResponse.EResponse response = 1 [default = k_eInternalError]; + optional .CMsgDotaFantasyCraftingUserData user_data = 2; + optional .CMsgDotaFantasyCraftingTabletData tablet_data = 3; +} + +message CMsgClientToGcFantasyCraftingUpgradeTablets { + optional uint32 fantasy_league = 1; +} + +message CMsgClientToGcFantasyCraftingUpgradeTabletsResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidLeague = 5; + } + + optional .CMsgClientToGcFantasyCraftingUpgradeTabletsResponse.EResponse response = 1 [default = k_eInternalError]; + optional .CMsgDotaFantasyCraftingTabletData tablet_data = 3; +} + +message CMsgClientToGCFantasyCraftingRerollOptions { + optional uint32 fantasy_league = 1; +} + +message CMsgClientToGCFantasyCraftingRerollOptionsResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidLeague = 5; + k_eInsufficientTokens = 6; + } + + optional .CMsgClientToGCFantasyCraftingRerollOptionsResponse.EResponse response = 1 [default = k_eInternalError]; + optional .CMsgDotaFantasyCraftingUserData user_data = 2; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_guild.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_guild.proto new file mode 100644 index 00000000..0b511f77 --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_guild.proto @@ -0,0 +1,656 @@ +import "in/dragonbra/javasteam/protobufs/dota2/dota_shared_enums.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum EGuildAuditAction { + k_EGuildAuditAction_Invalid = 0; + k_EGuildAuditAction_GuildCreated = 1; + k_EGuildAuditAction_GuildLanguageChanged = 2; + k_EGuildAuditAction_GuildFlagsChanged = 3; + k_EGuildAuditAction_GuildMemberJoined = 5; + k_EGuildAuditAction_GuildMemberLeft = 6; + k_EGuildAuditAction_GuildMemberKicked = 7; + k_EGuildAuditAction_GuildMemberRoleChanged = 8; + k_EGuildAuditAction_GuildLogoChanged = 9; + k_EGuildAuditAction_GuildRegionChanged = 10; + k_EGuildAuditAction_GuildDescriptionChanged = 11; + k_EGuildAuditAction_GuildPrimaryColorChanged = 12; + k_EGuildAuditAction_GuildSecondaryColorChanged = 13; + k_EGuildAuditAction_GuildPatternChanged = 14; + k_EGuildAuditAction_AdminClearedLogo = 15; + k_EGuildAuditAction_GuildRequiredRankChanged = 16; + k_EGuildAuditAction_GuildMotDChanged = 18; + k_EGuildAuditAction_AdminResetName = 19; + k_EGuildAuditAction_AdminResetTag = 20; + k_EGuildAuditAction_AdminLock = 21; + k_EGuildAuditAction_GuildNameChanged = 22; + k_EGuildAuditAction_GuildTagChanged = 23; + k_EGuildAuditAction_AdminPermitted = 24; + k_EGuildAuditAction_AdminBlocked = 25; + k_EGuildAuditAction_AdminBannedUser = 26; + k_EGuildAuditAction_AdminExonerated = 27; +} + +enum EGuildChatType { + k_EGuildChatType_Unspecified = 0; + k_EGuildChatType_SteamChatGroup = 1; + k_EGuildChatType_GC = 2; +} + +message CMsgGuildInfo { + optional string guild_name = 1; + optional string guild_tag = 2; + optional uint32 created_timestamp = 3; + optional uint32 guild_language = 4; + optional uint32 guild_flags = 5; + optional uint64 guild_logo = 7; + optional uint32 guild_region = 8; + optional uint64 guild_chat_group_id = 9; + optional string guild_description = 10; + optional uint64 default_chat_channel_id = 11; + optional uint32 guild_primary_color = 12; + optional uint32 guild_secondary_color = 13; + optional uint32 guild_pattern = 14; + optional uint32 guild_refresh_time_offset = 15; + optional uint32 guild_required_rank_tier = 16; + optional uint32 guild_motd_timestamp = 17; + optional string guild_motd = 18; +} + +message CMsgGuildSummary { + message EventPoints { + optional uint32 event_id = 1; + optional uint32 guild_points = 2; + optional uint32 guild_rank = 3; + optional uint32 guild_weekly_rank = 4; + optional uint32 guild_weekly_percentile = 5; + optional uint32 guild_current_percentile = 6; + } + + optional .CMsgGuildInfo guild_info = 1; + optional uint32 member_count = 2; + repeated .CMsgGuildSummary.EventPoints event_points = 3; +} + +message CMsgGuildRole { + optional uint32 role_id = 1; + optional string role_name = 2; + optional uint32 role_flags = 3; + optional uint32 role_order = 4; +} + +message CMsgGuildMember { + optional uint32 member_account_id = 1; + optional uint32 member_role_id = 2; + optional uint32 member_joined_timestamp = 3; + optional uint32 member_last_active_timestamp = 4; +} + +message CMsgGuildInvite { + optional uint32 requester_account_id = 1; + optional uint32 target_account_id = 2; + optional uint32 timestamp_sent = 3; +} + +message CMsgGuildData { + optional uint32 guild_id = 1; + optional .CMsgGuildInfo guild_info = 2; + repeated .CMsgGuildRole guild_roles = 3; + repeated .CMsgGuildMember guild_members = 4; + repeated .CMsgGuildInvite guild_invites = 5; +} + +message CMsgAccountGuildInvite { + optional uint32 guild_id = 1; + optional uint32 requester_account_id = 2; + optional uint32 timestamp_sent = 3; +} + +message CMsgAccountGuildMemberships { + repeated uint32 guild_ids = 1; + repeated .CMsgAccountGuildInvite guild_invites = 2; +} + +message CMsgGuildPersonaInfo { + optional uint32 guild_id = 1; + optional string guild_tag = 2; + optional uint32 guild_flags = 3; +} + +message CMsgAccountGuildsPersonaInfo { + repeated .CMsgGuildPersonaInfo guild_persona_infos = 1; +} + +message CMsgGuildFeedEvent { + optional uint64 feed_event_id = 1; + optional uint32 timestamp = 2; + optional uint32 event_type = 3; + optional uint32 param_uint_1 = 4; + optional uint32 param_uint_2 = 5; + optional uint32 param_uint_3 = 6; +} + +message CMsgClientToGCCreateGuild { + optional .CMsgGuildInfo guild_info = 1; + optional .EGuildChatType guild_chat_type = 2 [default = k_EGuildChatType_Unspecified]; +} + +message CMsgClientToGCCreateGuildResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidName = 5; + k_eNameAlreadyUsed = 6; + k_eInvalidTag = 7; + k_eTagAlreadyUsed = 8; + k_eInvalidDescription = 9; + k_eInvalidRegion = 10; + k_eInvalidLogo = 11; + k_eDoesNotOwnEvent = 12; + k_eGuildLimit = 13; + k_eInvalidMotD = 14; + k_eBlocked = 15; + k_eFreeTrialNotAllowed = 16; + } + + optional .CMsgClientToGCCreateGuildResponse.EResponse result = 1 [default = k_eInternalError]; + optional uint32 guild_id = 2; +} + +message CMsgClientToGCSetGuildInfo { + optional uint32 guild_id = 1; + optional .CMsgGuildInfo guild_info = 2; + optional .EGuildChatType guild_chat_type = 3 [default = k_EGuildChatType_Unspecified]; +} + +message CMsgClientToGCSetGuildInfoResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidGuild = 5; + k_eNotMember = 6; + k_eNoPermission = 7; + k_eMotDTooLong = 8; + k_eNameChangeNoPermissions = 9; + k_eTagChangeNoPermissions = 10; + k_eNameInvalid = 11; + k_eTagInvalid = 12; + k_eDescriptionInvalid = 13; + k_eBlocked = 14; + } + + optional .CMsgClientToGCSetGuildInfoResponse.EResponse result = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCRequestGuildData { + optional uint32 guild_id = 1; +} + +message CMsgClientToGCRequestGuildDataResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidGuild = 5; + k_eNotMember = 6; + } + + optional .CMsgClientToGCRequestGuildDataResponse.EResponse result = 1 [default = k_eInternalError]; + optional .CMsgGuildData guild_data = 2; +} + +message CMsgGCToClientGuildDataUpdated { + optional .CMsgGuildData guild_data = 1; + optional uint32 update_flags = 2; +} + +message CMsgGCToClientGuildMembersDataUpdated { + optional uint32 guild_id = 1; + repeated .CMsgGuildMember members_data = 2; +} + +message CMsgClientToGCRequestGuildMembership { +} + +message CMsgClientToGCRequestGuildMembershipResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + } + + optional .CMsgClientToGCRequestGuildMembershipResponse.EResponse result = 1 [default = k_eInternalError]; + optional .CMsgAccountGuildMemberships guild_memberships = 2; +} + +message CMsgGCToClientGuildMembershipUpdated { + optional .CMsgAccountGuildMemberships guild_memberships = 1; +} + +message CMsgClientToGCJoinGuild { + optional uint32 guild_id = 1; +} + +message CMsgClientToGCJoinGuildResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidGuild = 5; + k_eGuildFull = 6; + k_eAlreadyMember = 7; + k_eGuildLimit = 8; + k_eGuildRequiresInvite = 9; + k_eGuildRankTooLow = 10; + } + + optional .CMsgClientToGCJoinGuildResponse.EResponse result = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCLeaveGuild { + optional uint32 guild_id = 1; +} + +message CMsgClientToGCLeaveGuildResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidGuild = 5; + k_eNotMember = 6; + k_eLastAdmin = 7; + } + + optional .CMsgClientToGCLeaveGuildResponse.EResponse result = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCKickGuildMember { + optional uint32 guild_id = 1; + optional uint32 target_account_id = 2; +} + +message CMsgClientToGCKickGuildMemberResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidGuild = 5; + k_eRequesterNotMember = 6; + k_eTargetNotMember = 7; + k_eNoPermission = 8; + k_eCantKickSelf = 9; + } + + optional .CMsgClientToGCKickGuildMemberResponse.EResponse result = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCSetGuildMemberRole { + optional uint32 guild_id = 1; + optional uint32 target_account_id = 2; + optional uint32 target_role_id = 3; +} + +message CMsgClientToGCSetGuildMemberRoleResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidGuild = 5; + k_eRequesterNotMember = 6; + k_eTargetNotMember = 7; + k_eNoPermission = 8; + k_eInvalidRole = 9; + k_eAdminViolation = 10; + } + + optional .CMsgClientToGCSetGuildMemberRoleResponse.EResponse result = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCInviteToGuild { + optional uint32 guild_id = 1; + optional uint32 target_account_id = 2; +} + +message CMsgClientToGCInviteToGuildResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidGuild = 5; + k_eGuildFull = 6; + k_eRequesterNotMember = 7; + k_eAlreadyAMember = 8; + k_eAlreadyInvited = 9; + k_eNoInvitePermissions = 10; + k_eTooManyInvites = 11; + k_eInvalidUser = 12; + } + + optional .CMsgClientToGCInviteToGuildResponse.EResponse result = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCDeclineInviteToGuild { + optional uint32 guild_id = 1; +} + +message CMsgClientToGCDeclineInviteToGuildResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidGuild = 5; + k_eNoInviteFound = 6; + } + + optional .CMsgClientToGCDeclineInviteToGuildResponse.EResponse result = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCAcceptInviteToGuild { + optional uint32 guild_id = 1; +} + +message CMsgClientToGCAcceptInviteToGuildResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidGuild = 5; + k_eNoInviteFound = 6; + k_eGuildFull = 7; + k_eGuildLimit = 8; + k_eInvalidInviter = 9; + k_eAlreadyInGuild = 10; + } + + optional .CMsgClientToGCAcceptInviteToGuildResponse.EResponse result = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCCancelInviteToGuild { + optional uint32 guild_id = 1; + optional uint32 target_account_id = 2; +} + +message CMsgClientToGCCancelInviteToGuildResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidGuild = 5; + k_eNoInviteFound = 6; + k_eNoPermissions = 7; + } + + optional .CMsgClientToGCCancelInviteToGuildResponse.EResponse result = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCAddGuildRole { + optional uint32 guild_id = 1; + optional string role_name = 2; + optional uint32 role_flags = 3; +} + +message CMsgClientToGCAddGuildRoleResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidGuild = 5; + k_eNameAlreadyUsed = 6; + k_eNoPermissions = 7; + k_eInvalidFlags = 8; + k_eInvalidName = 9; + k_eAdminViolation = 10; + k_eTooManyRoles = 11; + k_eBlocked = 12; + } + + optional .CMsgClientToGCAddGuildRoleResponse.EResponse result = 1 [default = k_eInternalError]; + optional uint32 role_id = 2; +} + +message CMsgClientToGCModifyGuildRole { + optional uint32 guild_id = 1; + optional uint32 role_id = 2; + optional string role_name = 3; + optional uint32 role_flags = 4; +} + +message CMsgClientToGCModifyGuildRoleResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidGuild = 5; + k_eInvalidRole = 6; + k_eNameAlreadyUsed = 7; + k_eInvalidFlags = 8; + k_eInvalidName = 9; + k_eNoPermissions = 10; + k_eAdminViolation = 11; + k_eBlocked = 12; + } + + optional .CMsgClientToGCModifyGuildRoleResponse.EResponse result = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCRemoveGuildRole { + optional uint32 guild_id = 1; + optional uint32 role_id = 2; +} + +message CMsgClientToGCRemoveGuildRoleResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidGuild = 5; + k_eInvalidRole = 6; + k_eRoleNotEmpty = 7; + k_eNoPermissions = 8; + k_eAdminViolation = 9; + k_eCantRemoveDefaultRole = 10; + } + + optional .CMsgClientToGCRemoveGuildRoleResponse.EResponse result = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCSetGuildRoleOrder { + optional uint32 guild_id = 1; + repeated uint32 requested_role_ids = 2; + repeated uint32 previous_role_ids = 3; +} + +message CMsgClientToGCSetGuildRoleOrderResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidGuild = 5; + k_eInvalidRole = 6; + k_eInvalidOrder = 7; + k_eNoPermissions = 8; + k_eAdminViolation = 9; + } + + optional .CMsgClientToGCSetGuildRoleOrderResponse.EResponse result = 1 [default = k_eInternalError]; + repeated uint32 confirmed_role_ids = 2; +} + +message CMsgClientToGCGuildFeedRequest { + optional uint32 guild_id = 1; + optional uint64 last_seen_id = 2; +} + +message CMsgClientToGCRequestGuildFeedResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidGuild = 5; + k_eNoPermissions = 6; + } + + optional .CMsgClientToGCRequestGuildFeedResponse.EResponse result = 1 [default = k_eInternalError]; + optional uint32 guild_id = 2; + repeated .CMsgGuildFeedEvent feed_events = 3; +} + +message CMsgGCToClientGuildFeedUpdated { + optional uint32 guild_id = 1; +} + +message CMsgClientToGCAddPlayerToGuildChat { + optional uint32 guild_id = 1; +} + +message CMsgClientToGCAddPlayerToGuildChatResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidGuild = 5; + k_eNotMember = 6; + k_eSteamChatNotEnabled = 7; + } + + optional .CMsgClientToGCAddPlayerToGuildChatResponse.EResponse result = 1 [default = k_eInternalError]; +} + +message CMsgFindGuildByTagResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidTag = 5; + k_eGuildNotFound = 6; + } + + optional .CMsgFindGuildByTagResponse.EResponse result = 1 [default = k_eInternalError]; + optional uint32 guild_id = 2; + optional .CMsgGuildSummary guild_summary = 3; +} + +message CMsgSearchForOpenGuildsResponse { + message SearchResult { + optional uint32 guild_id = 1; + optional .CMsgGuildSummary guild_summary = 2; + } + + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + } + + optional .CMsgSearchForOpenGuildsResponse.EResponse result = 1 [default = k_eInternalError]; + repeated .CMsgSearchForOpenGuildsResponse.SearchResult search_results = 2; + optional bool use_whitelist = 3; +} + +message CMsgClientToGCReportGuildContent { + enum EContentFlags { + k_eNone = 0; + k_eInappropriateName = 1; + k_eInappropriateTag = 2; + k_eInappropriateLogo = 4; + k_eValidFlags = 7; + } + + optional uint32 guild_id = 1; + optional uint32 guild_content_flags = 2; +} + +message CMsgClientToGCReportGuildContentResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eGuildNotFound = 5; + k_eFlagsInvalid = 6; + } + + optional .CMsgClientToGCReportGuildContentResponse.EResponse result = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCRequestAccountGuildPersonaInfo { + optional uint32 account_id = 1; +} + +message CMsgClientToGCRequestAccountGuildPersonaInfoResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidAccount = 5; + } + + optional .CMsgClientToGCRequestAccountGuildPersonaInfoResponse.EResponse result = 1 [default = k_eInternalError]; + optional .CMsgAccountGuildsPersonaInfo persona_info = 2; +} + +message CMsgClientToGCRequestAccountGuildPersonaInfoBatch { + repeated uint32 account_ids = 1; +} + +message CMsgClientToGCRequestAccountGuildPersonaInfoBatchResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidRequest = 5; + } + + optional .CMsgClientToGCRequestAccountGuildPersonaInfoBatchResponse.EResponse result = 1 [default = k_eInternalError]; + repeated .CMsgAccountGuildsPersonaInfo persona_infos = 2; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_guild_events.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_guild_events.proto new file mode 100644 index 00000000..59588ace --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_guild_events.proto @@ -0,0 +1,236 @@ +import "in/dragonbra/javasteam/protobufs/dota2/dota_shared_enums.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum EGuildEventAuditAction { + k_EGuildEventAuditAction_Invalid = 0; + k_EGuildEventAuditAction_DevGrant = 1; + k_EGuildEventAuditAction_CompleteContract = 2; + k_EGuildEventAuditAction_CompleteChallenge = 3; + k_EGuildEventAuditAction_CompleteMatch_Winner = 4; + k_EGuildEventAuditAction_ChallengeProgress = 5; + k_EGuildEventAuditAction_CompleteMatch_Loser = 6; + k_EGuildEventAuditAction_WeeklyLeaderboard = 7; + k_EGuildEventAuditAction_ManualGrant = 8; +} + +message CMsgGuildContract { + optional uint64 contract_id = 1; + optional uint32 challenge_instance_id = 2; + optional uint32 challenge_parameter = 3; + optional uint32 challenge_timestamp = 4; + optional uint32 assigned_account_id = 5; + optional uint32 contract_flags = 6; +} + +message CMsgGuildContractSlot { + optional .CMsgGuildContract contract = 1; +} + +message CMsgAccountGuildEventData { + optional uint32 guild_points = 1; + optional uint32 contracts_refreshed_timestamp = 2; + repeated .CMsgGuildContractSlot contract_slots = 3; + optional uint32 completed_challenge_count = 4; + optional uint32 challenges_refresh_timestamp = 5; + optional uint32 guild_weekly_percentile = 6; + optional uint32 guild_weekly_last_timestamp = 7; + optional uint32 last_weekly_claim_time = 8; + optional uint32 guild_current_percentile = 9; +} + +message CMsgGuildActiveContracts { + optional uint32 contracts_refreshed_timestamp = 1; + repeated .CMsgGuildContract contracts = 2; +} + +message CMsgGuildChallenge { + optional uint32 challenge_instance_id = 1; + optional uint32 challenge_parameter = 2; + optional uint32 challenge_timestamp = 3; + optional uint32 challenge_progress = 4; + optional uint32 challenge_flags = 5; +} + +message CMsgGuildEventMember { + optional uint32 account_id = 1; + optional uint32 guild_points_earned = 2; +} + +message CMsgClientToGCRequestAccountGuildEventData { + optional uint32 guild_id = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; +} + +message CMsgClientToGCRequestAccountGuildEventDataResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidEvent = 5; + k_eInvalidGuild = 6; + k_eNotMember = 7; + k_eInvalidGuildEvent = 8; + } + + optional .CMsgClientToGCRequestAccountGuildEventDataResponse.EResponse result = 1 [default = k_eInternalError]; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; + optional .CMsgAccountGuildEventData event_data = 3; +} + +message CMsgGCToClientAccountGuildEventDataUpdated { + optional uint32 guild_id = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; + optional uint32 update_flags = 3; + optional .CMsgAccountGuildEventData guild_event_data = 4; + optional bool contracts_updated = 5; +} + +message CMsgClientToGCRequestActiveGuildContracts { + optional uint32 guild_id = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; +} + +message CMsgClientToGCRequestActiveGuildContractsResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidEvent = 5; + k_eInvalidGuild = 6; + k_eNotMember = 7; + k_eInvalidGuildEvent = 8; + } + + optional .CMsgClientToGCRequestActiveGuildContractsResponse.EResponse result = 1 [default = k_eInternalError]; + optional .CMsgGuildActiveContracts active_contracts = 2; + optional .CMsgGuildChallenge active_challenges = 3; +} + +message CMsgGCToClientActiveGuildContractsUpdated { + optional uint32 guild_id = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; +} + +message CMsgClientToGCSelectGuildContract { + optional uint32 guild_id = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; + optional uint64 contract_id = 3; + optional uint32 contract_slot = 4; +} + +message CMsgClientToGCSelectGuildContractResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidEvent = 5; + k_eInvalidGuild = 6; + k_eNotMember = 7; + k_eInvalidGuildEvent = 8; + k_eInvalidContractID = 9; + k_eAlreadyAssigned = 10; + k_eInvalidContractSlot = 11; + k_eContractSlotLockedGuild = 12; + k_eContractSlotCooldown = 13; + k_eContractDuplicate = 14; + k_eContractSlotTimeError = 15; + k_eContractSlotLockedDotaPlus = 16; + } + + optional .CMsgClientToGCSelectGuildContractResponse.EResponse result = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCRequestActiveGuildChallenge { + optional uint32 guild_id = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; +} + +message CMsgClientToGCRequestActiveGuildChallengeResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidEvent = 5; + k_eInvalidGuild = 6; + k_eNotMember = 7; + k_eInvalidGuildEvent = 8; + } + + optional .CMsgClientToGCRequestActiveGuildChallengeResponse.EResponse result = 1 [default = k_eInternalError]; + optional .CMsgGuildChallenge active_challenge = 2; +} + +message CMsgGCToClientActiveGuildChallengeUpdated { + optional uint32 guild_id = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; + optional .CMsgGuildChallenge active_challenge = 3; +} + +message CMsgClientToGCRequestGuildEventMembers { + optional uint32 guild_id = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; +} + +message CMsgClientToGCRequestGuildEventMembersResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidEvent = 5; + k_eInvalidGuild = 6; + k_eNotMember = 7; + k_eInvalidGuildEvent = 8; + } + + optional .CMsgClientToGCRequestGuildEventMembersResponse.EResponse result = 1 [default = k_eInternalError]; + repeated .CMsgGuildEventMember members = 2; +} + +message CMsgGuildLeaderboardCombinedResponse { + optional .EEvent event_id = 1 [default = EVENT_ID_NONE]; + optional uint32 region = 2; + optional uint32 last_updated = 3; + repeated uint32 guild_id = 4 [packed = true]; + repeated uint32 rank = 5 [packed = true]; + repeated uint32 current_percentile = 6 [packed = true]; + repeated uint32 weekly_percentile = 7 [packed = true]; + repeated uint32 points = 8 [packed = true]; +} + +message CMsgClientToGCClaimLeaderboardRewards { + optional uint32 guild_id = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; +} + +message CMsgClientToGCClaimLeaderboardRewardsResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidEvent = 5; + k_eInvalidGuild = 6; + k_eNotMember = 7; + k_eInvalidGuildEvent = 8; + k_eDoesNotQualify = 9; + k_eAlreadyClaimed = 10; + } + + optional .CMsgClientToGCClaimLeaderboardRewardsResponse.EResponse result = 1 [default = k_eInternalError]; + optional uint32 event_points = 2; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_match_management.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_match_management.proto new file mode 100644 index 00000000..af2fdaf5 --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_match_management.proto @@ -0,0 +1,469 @@ +import "in/dragonbra/javasteam/protobufs/dota2/steammessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_shared_enums.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_client_enums.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/base_gcmessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_lobby.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum EStartFindingMatchResult { + k_EStartFindingMatchResult_Invalid = 0; + k_EStartFindingMatchResult_OK = 1; + k_EStartFindingMatchResult_AlreadySearching = 2; + k_EStartFindingMatchResult_FailGeneric = 100; + k_EStartFindingMatchResult_FailedIgnore = 101; + k_EStartFindingMatchResult_MatchmakingDisabled = 102; + k_EStartFindingMatchResult_RegionOffline = 103; + k_EStartFindingMatchResult_MatchmakingCooldown = 104; + k_EStartFindingMatchResult_ClientOutOfDate = 105; + k_EStartFindingMatchResult_CompetitiveNoLowPriority = 106; + k_EStartFindingMatchResult_CompetitiveNotUnlocked = 107; + k_EStartFindingMatchResult_GameModeNotUnlocked = 108; + k_EStartFindingMatchResult_CompetitiveNotEnoughPlayTime = 109; + k_EStartFindingMatchResult_MissingInitialSkill = 110; + k_EStartFindingMatchResult_CompetitiveRankSpreadTooLarge = 111; + k_EStartFindingMatchResult_MemberAlreadyInLobby = 112; + k_EStartFindingMatchResult_MemberNotVACVerified = 113; + k_EStartFindingMatchResult_WeekendTourneyBadPartySize = 114; + k_EStartFindingMatchResult_WeekendTourneyTeamBuyInTooSmall = 115; + k_EStartFindingMatchResult_WeekendTourneyIndividualBuyInTooLarge = 116; + k_EStartFindingMatchResult_WeekendTourneyTeamBuyInTooLarge = 117; + k_EStartFindingMatchResult_MemberMissingEventOwnership = 118; + k_EStartFindingMatchResult_WeekendTourneyNotUnlocked = 119; + k_EStartFindingMatchResult_WeekendTourneyRecentParticipation = 120; + k_EStartFindingMatchResult_MemberMissingAnchoredPhoneNumber = 121; + k_EStartFindingMatchResult_NotMemberOfClan = 122; + k_EStartFindingMatchResult_CoachesChallengeBadPartySize = 123; + k_EStartFindingMatchResult_CoachesChallengeRequirementsNotMet = 124; + k_EStartFindingMatchResult_InvalidRoleSelections = 125; + k_EStartFindingMatchResult_PhoneNumberDiscrepancy = 126; + k_EStartFindingMatchResult_NoQueuePoints = 127; + k_EStartFindingMatchResult_MemberMissingGauntletFlag = 128; + k_EStartFindingMatchResult_MemberGauntletTooRecent = 129; + k_EStartFindingMatchResult_DifficultyNotUnlocked = 130; + k_EStartFindingMatchResult_CoachesNotAllowedInParty = 131; + k_EStartFindingMatchResult_MatchmakingBusy = 132; + k_EStartFindingMatchResult_SteamChinaBanned = 133; + k_EStartFindingMatchResult_SteamChinaInvalidMixedParty = 134; + k_EStartFindingMatchResult_RestrictedFromRanked = 135; + k_EStartFindingMatchResult_RankPreventsParties = 136; + k_EStartFindingMatchResult_RegisteredNameRequired = 137; +} + +message CMsgStartFindingMatch { + optional string key = 1; + optional uint32 matchgroups = 2 [default = 4294967295]; + optional uint32 client_version = 3; + optional uint32 game_modes = 4 [default = 4294967295]; + optional .MatchType match_type = 6 [default = MATCH_TYPE_CASUAL]; + optional uint32 matchlanguages = 7 [default = 4294967295]; + optional uint32 team_id = 8; + optional .MatchLanguages game_language_enum = 10 [default = MATCH_LANGUAGE_INVALID]; + optional string game_language_name = 11; + optional .CMsgClientPingData ping_data = 12; + optional uint32 region_select_flags = 13; + optional bool solo_queue = 14; + optional uint32 steam_clan_account_id = 16; + optional bool is_challenge_match = 17; + optional uint32 lane_selection_flags = 18; + optional bool high_priority_disabled = 19; + optional bool disable_experimental_gameplay = 20; + optional uint32 custom_game_difficulty_mask = 21; + optional uint32 bot_difficulty_mask = 22; + optional uint32 bot_script_index_mask = 23; +} + +message CMsgStartFindingMatchResult { + optional uint32 legacy_generic_eresult = 1 [default = 2]; + optional .EStartFindingMatchResult result = 2 [default = k_EStartFindingMatchResult_Invalid]; + optional string error_token = 3; + optional string debug_message = 4; + repeated fixed64 responsible_party_members = 5; + optional uint32 result_metadata = 6; +} + +message CMsgStopFindingMatch { + optional bool accept_cooldown = 1; +} + +message CMsgPartyBuilderOptions { + optional uint32 additional_slots = 1; + optional .MatchType match_type = 2 [default = MATCH_TYPE_CASUAL]; + optional uint32 matchgroups = 3; + optional uint32 client_version = 4; + optional .MatchLanguages language = 5 [default = MATCH_LANGUAGE_INVALID]; +} + +message CMsgReadyUp { + optional .DOTALobbyReadyState state = 1 [default = DOTALobbyReadyState_UNDECLARED]; + optional fixed64 ready_up_key = 2; + optional .CDOTAClientHardwareSpecs hardware_specs = 3; +} + +message CMsgReadyUpStatus { + optional fixed64 lobby_id = 1; + repeated uint32 accepted_ids = 2; + repeated uint32 declined_ids = 3; + repeated uint32 accepted_indices = 4; + repeated uint32 declined_indices = 5; + optional .DOTALobbyReadyState local_ready_state = 6 [default = DOTALobbyReadyState_UNDECLARED]; +} + +message CMsgAbandonCurrentGame { +} + +message CMsgLobbyScenarioSave { + optional int32 version = 1; + optional bytes data = 2; +} + +message CMsgPracticeLobbySetDetails { + message AbilityDraftSpecificDetails { + optional bool shuffle_draft_order = 1; + } + + optional uint64 lobby_id = 1; + optional string game_name = 2; + repeated .CLobbyTeamDetails team_details = 3; + optional uint32 server_region = 4; + optional uint32 game_mode = 5; + optional .DOTA_CM_PICK cm_pick = 6 [default = DOTA_CM_RANDOM]; + optional .DOTABotDifficulty bot_difficulty_radiant = 9 [default = BOT_DIFFICULTY_PASSIVE]; + optional bool allow_cheats = 10; + optional bool fill_with_bots = 11; + optional bool allow_spectating = 13; + optional string pass_key = 15; + optional uint32 leagueid = 16; + optional uint32 penalty_level_radiant = 17; + optional uint32 penalty_level_dire = 18; + optional uint32 series_type = 20; + optional uint32 radiant_series_wins = 21; + optional uint32 dire_series_wins = 22; + optional bool allchat = 23 [default = false]; + optional .LobbyDotaTVDelay dota_tv_delay = 24 [default = LobbyDotaTV_120]; + optional bool lan = 25; + optional string custom_game_mode = 26; + optional string custom_map_name = 27; + optional uint32 custom_difficulty = 28; + optional uint64 custom_game_id = 29; + optional uint32 custom_min_players = 30; + optional uint32 custom_max_players = 31; + optional .DOTALobbyVisibility visibility = 33 [default = DOTALobbyVisibility_Public]; + optional fixed64 custom_game_crc = 34; + optional fixed32 custom_game_timestamp = 37; + optional uint64 previous_match_override = 38; + optional .LobbyDotaPauseSetting pause_setting = 42 [default = LobbyDotaPauseSetting_Unlimited]; + optional .DOTABotDifficulty bot_difficulty_dire = 43 [default = BOT_DIFFICULTY_PASSIVE]; + optional uint64 bot_radiant = 44; + optional uint64 bot_dire = 45; + optional .DOTASelectionPriorityRules selection_priority_rules = 46 [default = k_DOTASelectionPriorityRules_Manual]; + optional bool custom_game_penalties = 47; + optional string lan_host_ping_location = 48; + optional uint32 league_node_id = 49; + repeated int32 requested_hero_ids = 50; + optional .CMsgLobbyScenarioSave scenario_save = 51; + optional .CMsgPracticeLobbySetDetails.AbilityDraftSpecificDetails ability_draft_specific_details = 52; + optional bool do_player_draft = 53; + repeated int32 requested_hero_teams = 54; +} + +message CMsgPracticeLobbyCreate { + optional string search_key = 1; + optional string pass_key = 5; + optional uint32 client_version = 6; + optional .CMsgPracticeLobbySetDetails lobby_details = 7; +} + +message CMsgPracticeLobbySetTeamSlot { + optional .DOTA_GC_TEAM team = 1 [default = DOTA_GC_TEAM_GOOD_GUYS]; + optional uint32 slot = 2; + optional .DOTABotDifficulty bot_difficulty = 3 [default = BOT_DIFFICULTY_PASSIVE]; +} + +message CMsgPracticeLobbySetCoach { + optional .DOTA_GC_TEAM team = 1 [default = DOTA_GC_TEAM_GOOD_GUYS]; +} + +message CMsgPracticeLobbyJoinBroadcastChannel { + optional uint32 channel = 1; + optional string preferred_description = 2; + optional string preferred_country_code = 3; + optional string preferred_language_code = 4; +} + +message CMsgPracticeLobbyCloseBroadcastChannel { + optional uint32 channel = 1; +} + +message CMsgPracticeLobbyToggleBroadcastChannelCameramanStatus { +} + +message CMsgPracticeLobbyKick { + optional uint32 account_id = 3; +} + +message CMsgPracticeLobbyKickFromTeam { + optional uint32 account_id = 1; +} + +message CMsgPracticeLobbyLeave { +} + +message CMsgPracticeLobbyLaunch { + optional uint32 client_version = 5; +} + +message CMsgApplyTeamToPracticeLobby { + optional uint32 team_id = 1; +} + +message CMsgPracticeLobbyList { + optional string pass_key = 2; + optional uint32 region = 3; + optional .DOTA_GameMode game_mode = 4 [default = DOTA_GAMEMODE_NONE]; +} + +message CMsgPracticeLobbyListResponseEntry { + message CLobbyMember { + optional uint32 account_id = 1; + optional string player_name = 2; + } + + optional uint64 id = 1 [(key_field) = true]; + repeated .CMsgPracticeLobbyListResponseEntry.CLobbyMember members = 5; + optional bool requires_pass_key = 6; + optional uint32 leader_account_id = 7; + optional string name = 10; + optional string custom_game_mode = 11; + optional .DOTA_GameMode game_mode = 12 [default = DOTA_GAMEMODE_NONE]; + optional bool friend_present = 13; + optional uint32 players = 14; + optional string custom_map_name = 15; + optional uint32 max_player_count = 16; + optional uint32 server_region = 17; + optional uint32 league_id = 19; + optional string lan_host_ping_location = 20; + optional uint32 min_player_count = 21; + optional bool penalties_enabled = 22; +} + +message CMsgPracticeLobbyListResponse { + repeated .CMsgPracticeLobbyListResponseEntry lobbies = 2; +} + +message CMsgLobbyList { + optional uint32 server_region = 1 [default = 0]; + optional .DOTA_GameMode game_mode = 2 [default = DOTA_GAMEMODE_NONE]; +} + +message CMsgLobbyListResponse { + repeated .CMsgPracticeLobbyListResponseEntry lobbies = 1; +} + +message CMsgPracticeLobbyJoin { + optional uint64 lobby_id = 1; + optional uint32 client_version = 2; + optional string pass_key = 3; + optional fixed64 custom_game_crc = 4; + optional fixed32 custom_game_timestamp = 5; +} + +message CMsgPracticeLobbyJoinResponse { + optional .DOTAJoinLobbyResult result = 1 [default = DOTA_JOIN_RESULT_SUCCESS]; +} + +message CMsgFriendPracticeLobbyListRequest { + repeated uint32 friends = 1; +} + +message CMsgFriendPracticeLobbyListResponse { + repeated .CMsgPracticeLobbyListResponseEntry lobbies = 1; +} + +message CMsgJoinableCustomGameModesRequest { + optional uint32 server_region = 1; +} + +message CMsgJoinableCustomGameModesResponseEntry { + optional uint64 custom_game_id = 1; + optional uint32 lobby_count = 2; + optional uint32 player_count = 3; +} + +message CMsgJoinableCustomGameModesResponse { + repeated .CMsgJoinableCustomGameModesResponseEntry game_modes = 1; +} + +message CMsgJoinableCustomLobbiesRequest { + optional uint32 server_region = 1; + optional uint64 custom_game_id = 2; +} + +message CMsgJoinableCustomLobbiesResponseEntry { + optional fixed64 lobby_id = 1; + optional uint64 custom_game_id = 2; + optional string lobby_name = 3; + optional uint32 member_count = 4; + optional uint32 leader_account_id = 5; + optional string leader_name = 6; + optional string custom_map_name = 7; + optional uint32 max_player_count = 8; + optional uint32 server_region = 9; + optional bool has_pass_key = 11; + optional string lan_host_ping_location = 12; + optional uint32 lobby_creation_time = 13; + optional uint32 custom_game_timestamp = 14; + optional uint64 custom_game_crc = 15; + optional uint32 min_player_count = 16; + optional bool penalties_enabled = 17; +} + +message CMsgJoinableCustomLobbiesResponse { + repeated .CMsgJoinableCustomLobbiesResponseEntry lobbies = 1; +} + +message CMsgQuickJoinCustomLobby { + message LegacyRegionPing { + optional uint32 server_region = 1; + optional uint32 ping = 2; + optional fixed32 region_code = 3; + } + + optional uint32 legacy_server_region = 1; + optional uint64 custom_game_id = 2; + optional uint32 client_version = 3; + optional .CMsgPracticeLobbySetDetails create_lobby_details = 4; + optional bool allow_any_map = 5; + repeated .CMsgQuickJoinCustomLobby.LegacyRegionPing legacy_region_pings = 6; + optional .CMsgClientPingData ping_data = 7; +} + +message CMsgQuickJoinCustomLobbyResponse { + optional .DOTAJoinLobbyResult result = 1 [default = DOTA_JOIN_RESULT_SUCCESS]; +} + +message CMsgBotGameCreate { + optional string search_key = 1; + optional uint32 client_version = 2; + optional .DOTABotDifficulty difficulty_radiant = 3 [default = BOT_DIFFICULTY_PASSIVE]; + optional .DOTA_GC_TEAM team = 4 [default = DOTA_GC_TEAM_GOOD_GUYS]; + optional uint32 game_mode = 5; + optional .DOTABotDifficulty difficulty_dire = 6 [default = BOT_DIFFICULTY_PASSIVE]; +} + +message CMsgDOTAPartyMemberSetCoach { + optional bool wants_coach = 1; +} + +message CMsgDOTASetGroupLeader { + optional fixed64 new_leader_steamid = 1; +} + +message CMsgDOTACancelGroupInvites { + repeated fixed64 invited_steamids = 1; + repeated fixed64 invited_groupids = 2; +} + +message CMsgDOTASetGroupOpenStatus { + optional bool open = 1; +} + +message CMsgDOTAGroupMergeInvite { + optional fixed64 other_group_id = 1; +} + +message CMsgDOTAGroupMergeResponse { + optional fixed64 initiator_group_id = 1; + optional bool accept = 2; +} + +message CMsgDOTAGroupMergeReply { + optional .EDOTAGroupMergeResult result = 1 [default = k_EDOTAGroupMergeResult_OK]; +} + +message CMsgSpectatorLobbyGameDetails { + message Team { + optional uint32 team_id = 1; + optional string team_name = 2; + optional fixed64 team_logo = 3; + } + + optional uint32 language = 1; + optional uint64 match_id = 2; + optional fixed64 server_steam_id = 3; + optional string stream_url = 4; + optional string stream_name = 5; + optional uint32 league_id = 6; + optional uint32 series_type = 7; + optional uint32 series_game = 8; + optional .CMsgSpectatorLobbyGameDetails.Team radiant_team = 9; + optional .CMsgSpectatorLobbyGameDetails.Team dire_team = 10; +} + +message CMsgSetSpectatorLobbyDetails { + optional uint64 lobby_id = 1; + optional string lobby_name = 2; + optional string pass_key = 3; + optional .CMsgSpectatorLobbyGameDetails game_details = 4; +} + +message CMsgCreateSpectatorLobby { + optional uint32 client_version = 1; + optional .CMsgSetSpectatorLobbyDetails details = 2; +} + +message CMsgSpectatorLobbyList { +} + +message CMsgSpectatorLobbyListResponse { + message SpectatorLobby { + optional uint64 lobby_id = 1; + optional string game_name = 2; + optional bool requires_pass_key = 3; + optional uint32 leader_account_id = 4; + optional uint32 member_count = 5; + optional .CMsgSpectatorLobbyGameDetails game_details = 7; + } + + repeated .CMsgSpectatorLobbyListResponse.SpectatorLobby lobbies = 1; +} + +message CMsgClientToGCRequestSteamDatagramTicket { + optional fixed64 server_steam_id = 1; +} + +message CMsgClientToGCRequestSteamDatagramTicketResponse { + optional bytes serialized_ticket = 1; + optional string message = 2; +} + +message CMsgGCToClientSteamDatagramTicket { + optional fixed32 legacy_time_expiry = 1; + optional fixed64 legacy_authorized_steam_id = 2; + optional fixed32 legacy_authorized_public_ip = 3; + optional fixed64 legacy_gameserver_steam_id = 4; + optional fixed64 legacy_gameserver_net_id = 5; + optional bytes legacy_signature = 6; + optional uint32 legacy_app_id = 7; + repeated bytes legacy_extra_fields = 8; + optional bytes serialized_ticket = 16; +} + +message CMsgGCToClientRequestLaneSelection { +} + +message CMsgGCToClientRequestLaneSelectionResponse { + optional uint32 lane_selection_flags = 1; + optional bool high_priority_disabled = 2; +} + +message CMsgGCToClientRequestMMInfo { +} + +message CMsgClientToGCMMInfo { + optional uint32 lane_selection_flags = 1; + optional bool high_priority_disabled = 2; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_team.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_team.proto new file mode 100644 index 00000000..282ea892 --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_team.proto @@ -0,0 +1,278 @@ +import "in/dragonbra/javasteam/protobufs/dota2/dota_shared_enums.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum ETeamInviteResult { + TEAM_INVITE_SUCCESS = 0; + TEAM_INVITE_FAILURE_INVITE_REJECTED = 1; + TEAM_INVITE_FAILURE_INVITE_TIMEOUT = 2; + TEAM_INVITE_ERROR_TEAM_AT_MEMBER_LIMIT = 3; + TEAM_INVITE_ERROR_TEAM_LOCKED = 4; + TEAM_INVITE_ERROR_INVITEE_NOT_AVAILABLE = 5; + TEAM_INVITE_ERROR_INVITEE_BUSY = 6; + TEAM_INVITE_ERROR_INVITEE_ALREADY_MEMBER = 7; + TEAM_INVITE_ERROR_INVITEE_AT_TEAM_LIMIT = 8; + TEAM_INVITE_ERROR_INVITEE_INSUFFICIENT_PLAY_TIME = 9; + TEAM_INVITE_ERROR_INVITER_INVALID_ACCOUNT_TYPE = 10; + TEAM_INVITE_ERROR_INVITER_NOT_ADMIN = 11; + TEAM_INVITE_ERROR_INCORRECT_USER_RESPONDED = 12; + TEAM_INVITE_ERROR_UNSPECIFIED = 13; +} + +message CMsgDOTATeamInfo { + message HeroStats { + optional int32 hero_id = 1; + optional uint32 picks = 2; + optional uint32 wins = 3; + optional uint32 bans = 4; + optional float avg_kills = 5; + optional float avg_deaths = 6; + optional float avg_assists = 7; + optional float avg_gpm = 8; + optional float avg_xpm = 9; + } + + message MemberStats { + optional uint32 account_id = 1; + optional uint32 wins_with_team = 2; + optional uint32 losses_with_team = 3; + repeated .CMsgDOTATeamInfo.HeroStats top_heroes = 4; + optional float avg_kills = 5; + optional float avg_deaths = 6; + optional float avg_assists = 7; + } + + message TeamStats { + repeated .CMsgDOTATeamInfo.HeroStats played_heroes = 1; + optional float farming = 2; + optional float fighting = 3; + optional float versatility = 4; + optional float avg_kills = 5; + optional float avg_deaths = 6; + optional float avg_duration = 7; + } + + message DPCResult { + optional uint32 league_id = 1; + optional uint32 standing = 2; + optional uint32 points = 3; + optional uint32 earnings = 4; + optional uint32 timestamp = 5; + } + + message Member { + optional uint32 account_id = 1; + optional uint32 time_joined = 2; + optional bool admin = 3; + optional string pro_name = 6; + optional .Fantasy_Roles role = 8 [default = FANTASY_ROLE_UNDEFINED]; + optional string real_name = 9; + } + + message AuditEntry { + optional uint32 audit_action = 1; + optional uint32 timestamp = 2; + optional uint32 account_id = 3; + } + + repeated .CMsgDOTATeamInfo.Member members = 1; + optional uint32 team_id = 2; + optional string name = 3; + optional string tag = 4; + optional uint32 time_created = 5; + optional bool pro = 6; + optional bool pickup_team = 8; + optional uint64 ugc_logo = 9; + optional uint64 ugc_base_logo = 10; + optional uint64 ugc_banner_logo = 11; + optional uint64 ugc_sponsor_logo = 12; + optional string country_code = 13; + optional string url = 14; + optional uint32 wins = 15; + optional uint32 losses = 16; + optional uint32 games_played_total = 19; + optional uint32 games_played_matchmaking = 20; + optional string url_logo = 24; + repeated .CMsgDOTATeamInfo.AuditEntry audit_entries = 31; + optional .ELeagueRegion region = 29 [default = LEAGUE_REGION_UNSET]; + optional string abbreviation = 32; + repeated .CMsgDOTATeamInfo.MemberStats member_stats = 33; + optional .CMsgDOTATeamInfo.TeamStats team_stats = 34; + repeated .CMsgDOTATeamInfo.DPCResult dpc_results = 35; + optional string color_primary = 37; + optional string color_secondary = 38; + optional uint32 team_captain = 39; +} + +message CMsgDOTATeamsInfo { + optional uint32 league_id = 1; + repeated .CMsgDOTATeamInfo teams = 2; +} + +message CMsgDOTATeamInfoList { + repeated .CMsgDOTATeamInfo teams = 1; +} + +message CMsgDOTATeamInfoCache { + optional uint32 cache_timestamp = 1; + optional .CMsgDOTATeamInfoList team_list = 2; +} + +message CMsgDOTAMyTeamInfoRequest { +} + +message CMsgDOTACreateTeam { + optional string name = 1; + optional string tag = 2; + optional uint64 logo = 3; + optional uint64 base_logo = 4; + optional uint64 banner_logo = 5; + optional uint64 sponsor_logo = 6; + optional string country_code = 7; + optional string url = 8; + optional bool pickup_team = 9; + optional string abbreviation = 10; +} + +message CMsgDOTACreateTeamResponse { + enum Result { + INVALID = -1; + SUCCESS = 0; + NAME_EMPTY = 1; + NAME_BAD_CHARACTERS = 2; + NAME_TAKEN = 3; + NAME_TOO_LONG = 4; + TAG_EMPTY = 5; + TAG_BAD_CHARACTERS = 6; + TAG_TAKEN = 7; + TAG_TOO_LONG = 8; + CREATOR_BUSY = 9; + UNSPECIFIED_ERROR = 10; + CREATOR_TEAM_LIMIT_REACHED = 11; + NO_LOGO = 12; + CREATOR_TEAM_CREATION_COOLDOWN = 13; + LOGO_UPLOAD_FAILED = 14; + NAME_CHANGED_TOO_RECENTLY = 15; + CREATOR_INSUFFICIENT_LEVEL = 16; + INVALID_ACCOUNT_TYPE = 17; + } + + optional .CMsgDOTACreateTeamResponse.Result result = 1 [default = INVALID]; + optional uint32 team_id = 2; +} + +message CMsgDOTAEditTeamDetails { + optional uint32 team_id = 1; + optional string name = 2; + optional string tag = 3; + optional uint64 logo = 4; + optional uint64 base_logo = 5; + optional uint64 banner_logo = 6; + optional uint64 sponsor_logo = 7; + optional string country_code = 8; + optional string url = 9; + optional bool in_use_by_party = 10; + optional string abbreviation = 11; +} + +message CMsgDOTAEditTeamDetailsResponse { + enum Result { + SUCCESS = 0; + FAILURE_INVALID_ACCOUNT_TYPE = 1; + FAILURE_NOT_MEMBER = 2; + FAILURE_TEAM_LOCKED = 3; + FAILURE_UNSPECIFIED_ERROR = 4; + } + + optional .CMsgDOTAEditTeamDetailsResponse.Result result = 1 [default = SUCCESS]; +} + +message CMsgDOTATeamInvite_InviterToGC { + optional uint32 account_id = 1; + optional uint32 team_id = 2; +} + +message CMsgDOTATeamInvite_GCImmediateResponseToInviter { + optional .ETeamInviteResult result = 1 [default = TEAM_INVITE_SUCCESS]; + optional string invitee_name = 2; + optional uint32 required_play_time = 3; +} + +message CMsgDOTATeamInvite_GCRequestToInvitee { + optional uint32 inviter_account_id = 1; + optional string team_name = 2; + optional string team_tag = 3; + optional uint64 logo = 4; +} + +message CMsgDOTATeamInvite_InviteeResponseToGC { + optional .ETeamInviteResult result = 1 [default = TEAM_INVITE_SUCCESS]; +} + +message CMsgDOTATeamInvite_GCResponseToInviter { + optional .ETeamInviteResult result = 1 [default = TEAM_INVITE_SUCCESS]; + optional string invitee_name = 2; +} + +message CMsgDOTATeamInvite_GCResponseToInvitee { + optional .ETeamInviteResult result = 1 [default = TEAM_INVITE_SUCCESS]; + optional string team_name = 2; +} + +message CMsgDOTAKickTeamMember { + optional uint32 account_id = 1; + optional uint32 team_id = 2; +} + +message CMsgDOTAKickTeamMemberResponse { + enum Result { + SUCCESS = 0; + FAILURE_INVALID_ACCOUNT_TYPE = 1; + FAILURE_KICKER_NOT_ADMIN = 2; + FAILURE_KICKEE_NOT_MEMBER = 3; + FAILURE_TEAM_LOCKED = 4; + FAILURE_UNSPECIFIED_ERROR = 5; + } + + optional .CMsgDOTAKickTeamMemberResponse.Result result = 1 [default = SUCCESS]; +} + +message CMsgDOTATransferTeamAdmin { + optional uint32 new_admin_account_id = 1; + optional uint32 team_id = 2; +} + +message CMsgDOTATransferTeamAdminResponse { + enum Result { + SUCCESS = 0; + FAILURE_INVALID_ACCOUNT_TYPE = 1; + FAILURE_NOT_ADMIN = 2; + FAILURE_SAME_ACCOUNT = 3; + FAILURE_NOT_MEMBER = 4; + FAILURE_UNSPECIFIED_ERROR = 5; + } + + optional .CMsgDOTATransferTeamAdminResponse.Result result = 1 [default = SUCCESS]; +} + +message CMsgDOTALeaveTeam { + optional uint32 team_id = 1; +} + +message CMsgDOTALeaveTeamResponse { + enum Result { + SUCCESS = 0; + FAILURE_NOT_MEMBER = 1; + FAILURE_TEAM_LOCKED = 2; + FAILURE_UNSPECIFIED_ERROR = 3; + } + + optional .CMsgDOTALeaveTeamResponse.Result result = 1 [default = SUCCESS]; +} + +message CMsgDOTABetaParticipation { + optional uint32 access_rights = 1; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_tournament.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_tournament.proto new file mode 100644 index 00000000..8be9fae2 --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_tournament.proto @@ -0,0 +1,178 @@ +import "in/dragonbra/javasteam/protobufs/dota2/dota_client_enums.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum ETournamentEvent { + k_ETournamentEvent_None = 0; + k_ETournamentEvent_TournamentCreated = 1; + k_ETournamentEvent_TournamentsMerged = 2; + k_ETournamentEvent_GameOutcome = 3; + k_ETournamentEvent_TeamGivenBye = 4; + k_ETournamentEvent_TournamentCanceledByAdmin = 5; + k_ETournamentEvent_TeamAbandoned = 6; + k_ETournamentEvent_ScheduledGameStarted = 7; + k_ETournamentEvent_Canceled = 8; + k_ETournamentEvent_TeamParticipationTimedOut_EntryFeeRefund = 9; + k_ETournamentEvent_TeamParticipationTimedOut_EntryFeeForfeit = 10; + k_ETournamentEvent_TeamParticipationTimedOut_GrantedVictory = 11; +} + +message CMsgRequestWeekendTourneySchedule { +} + +message CMsgWeekendTourneySchedule { + message Division { + optional uint32 division_code = 1; + optional uint32 time_window_open = 2; + optional uint32 time_window_close = 3; + optional uint32 time_window_open_next = 4; + optional uint32 trophy_id = 5; + optional bool free_weekend = 6; + } + + repeated .CMsgWeekendTourneySchedule.Division divisions = 1; +} + +message CMsgWeekendTourneyOpts { + optional bool participating = 1; + optional uint32 division_id = 2; + optional uint32 buyin = 3; + optional uint32 skill_level = 4; + optional uint32 match_groups = 5; + optional uint32 team_id = 6; + optional string pickup_team_name = 7; + optional uint64 pickup_team_logo = 8; +} + +message CMsgWeekendTourneyLeave { +} + +message CMsgDOTATournament { + message Team { + optional fixed64 team_gid = 1; + optional uint32 node_or_state = 2; + repeated uint32 players = 3 [packed = true]; + repeated uint32 player_buyin = 9 [packed = true]; + repeated uint32 player_skill_level = 10 [packed = true]; + optional uint32 match_group_mask = 12; + optional uint32 team_id = 4; + optional string team_name = 5; + optional uint64 team_base_logo = 7; + optional uint64 team_ui_logo = 8; + } + + message Game { + optional uint32 node_idx = 1; + optional fixed64 lobby_id = 2; + optional uint64 match_id = 3; + optional bool team_a_good = 4; + optional .ETournamentGameState state = 5 [default = k_ETournamentGameState_Unknown]; + optional uint32 start_time = 6; + } + + message Node { + optional uint32 node_id = 1; + optional uint32 team_idx_a = 2; + optional uint32 team_idx_b = 3; + optional .ETournamentNodeState node_state = 4 [default = k_ETournamentNodeState_Unknown]; + } + + optional uint32 tournament_id = 1; + optional uint32 division_id = 2; + optional uint32 schedule_time = 3; + optional uint32 skill_level = 4; + optional .ETournamentTemplate tournament_template = 5 [default = k_ETournamentTemplate_None]; + optional .ETournamentState state = 6 [default = k_ETournamentState_Unknown]; + optional uint32 state_seq_num = 10; + optional uint32 season_trophy_id = 11; + repeated .CMsgDOTATournament.Team teams = 7; + repeated .CMsgDOTATournament.Game games = 8; + repeated .CMsgDOTATournament.Node nodes = 9; +} + +message CMsgDOTATournamentStateChange { + message GameChange { + optional uint64 match_id = 1; + optional .ETournamentGameState new_state = 2 [default = k_ETournamentGameState_Unknown]; + } + + message TeamChange { + optional uint64 team_gid = 1; + optional uint32 new_node_or_state = 2; + optional uint32 old_node_or_state = 3; + } + + optional uint32 new_tournament_id = 1; + optional .ETournamentEvent event = 2 [default = k_ETournamentEvent_None]; + optional .ETournamentState new_tournament_state = 3 [default = k_ETournamentState_Unknown]; + repeated .CMsgDOTATournamentStateChange.GameChange game_changes = 4; + repeated .CMsgDOTATournamentStateChange.TeamChange team_changes = 5; + repeated uint32 merged_tournament_ids = 6 [packed = true]; + optional uint32 state_seq_num = 7; +} + +message CMsgDOTAWeekendTourneyPlayerSkillLevelStats { + optional uint32 skill_level = 1; + optional uint32 times_won_0 = 2; + optional uint32 times_won_1 = 3; + optional uint32 times_won_2 = 4; + optional uint32 times_won_3 = 5; + optional uint32 times_bye_and_lost = 6; + optional uint32 times_bye_and_won = 7; + optional uint32 times_unusual_champ = 10; + optional uint32 total_games_won = 8; + optional uint32 score = 9; +} + +message CMsgDOTAWeekendTourneyPlayerStats { + optional uint32 account_id = 1; + optional uint32 season_trophy_id = 2; + repeated .CMsgDOTAWeekendTourneyPlayerSkillLevelStats skill_levels = 3; + optional uint32 current_tier = 4; +} + +message CMsgDOTAWeekendTourneyPlayerStatsRequest { + optional uint32 account_id = 1; + optional uint32 season_trophy_id = 2; +} + +message CMsgDOTAWeekendTourneyPlayerHistory { + message Tournament { + optional uint32 tournament_id = 1; + optional uint32 start_time = 2; + optional uint32 tournament_tier = 3; + optional uint32 team_id = 4; + optional uint32 team_date = 5; + optional uint32 team_result = 6; + repeated uint32 account_id = 7; + optional string team_name = 8; + optional uint32 season_trophy_id = 9; + } + + optional uint32 account_id = 1; + repeated .CMsgDOTAWeekendTourneyPlayerHistory.Tournament tournaments = 3; +} + +message CMsgDOTAWeekendTourneyParticipationDetails { + message Tier { + optional uint32 tier = 1; + optional uint32 players = 2; + optional uint32 teams = 3; + optional uint32 winning_teams = 4; + optional uint32 players_streak_2 = 5; + optional uint32 players_streak_3 = 6; + optional uint32 players_streak_4 = 7; + optional uint32 players_streak_5 = 8; + } + + message Division { + optional uint32 division_id = 1; + optional uint32 schedule_time = 2; + repeated .CMsgDOTAWeekendTourneyParticipationDetails.Tier tiers = 3; + } + + repeated .CMsgDOTAWeekendTourneyParticipationDetails.Division divisions = 1; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_watch.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_watch.proto new file mode 100644 index 00000000..51d22672 --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_client_watch.proto @@ -0,0 +1,213 @@ +import "in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +message CSourceTVGameSmall { + message Player { + optional uint32 account_id = 1; + optional int32 hero_id = 2; + optional uint32 team_slot = 3; + optional uint32 team = 4; + } + + optional uint32 activate_time = 1; + optional uint32 deactivate_time = 2; + optional uint64 server_steam_id = 3; + optional uint64 lobby_id = 4; + optional uint32 league_id = 5; + optional uint32 lobby_type = 6; + optional int32 game_time = 7; + optional uint32 delay = 8; + optional uint32 spectators = 9; + optional uint32 game_mode = 10; + optional uint32 average_mmr = 11; + optional uint64 match_id = 12; + optional uint32 series_id = 13; + optional string team_name_radiant = 15; + optional string team_name_dire = 16; + optional fixed64 team_logo_radiant = 24; + optional fixed64 team_logo_dire = 25; + optional uint32 team_id_radiant = 30; + optional uint32 team_id_dire = 31; + optional uint32 sort_score = 17; + optional float last_update_time = 18; + optional int32 radiant_lead = 19; + optional uint32 radiant_score = 20; + optional uint32 dire_score = 21; + repeated .CSourceTVGameSmall.Player players = 22; + optional fixed32 building_state = 23; + optional uint32 weekend_tourney_tournament_id = 26; + optional uint32 weekend_tourney_division = 27; + optional uint32 weekend_tourney_skill_level = 28; + optional uint32 weekend_tourney_bracket_round = 29; + optional uint32 custom_game_difficulty = 32; + optional bool is_player_draft = 33; + optional bool is_watch_eligible = 34; +} + +message CMsgClientToGCFindTopSourceTVGames { + optional string search_key = 1; + optional uint32 league_id = 2; + optional int32 hero_id = 3; + optional uint32 start_game = 4; + optional uint32 game_list_index = 5; + repeated uint64 lobby_ids = 6; +} + +message CMsgGCToClientFindTopSourceTVGamesResponse { + optional string search_key = 1; + optional uint32 league_id = 2; + optional int32 hero_id = 3; + optional uint32 start_game = 4; + optional uint32 num_games = 5; + optional uint32 game_list_index = 6; + repeated .CSourceTVGameSmall game_list = 7; + optional bool specific_games = 8; + optional .CSourceTVGameSmall bot_game = 9; +} + +message CMsgGCToClientTopWeekendTourneyGames { + repeated .CSourceTVGameSmall live_games = 1; +} + +message CMsgClientToGCTopLeagueMatchesRequest { +} + +message CMsgClientToGCTopFriendMatchesRequest { +} + +message CMsgClientToGCMatchesMinimalRequest { + repeated uint64 match_ids = 1; +} + +message CMsgClientToGCMatchesMinimalResponse { + repeated .CMsgDOTAMatchMinimal matches = 1; + optional bool last_match = 2; +} + +message CMsgGCToClientTopLeagueMatchesResponse { + repeated .CMsgDOTAMatchMinimal matches = 2; +} + +message CMsgGCToClientTopFriendMatchesResponse { + repeated .CMsgDOTAMatchMinimal matches = 1; +} + +message CMsgSpectateFriendGame { + optional fixed64 steam_id = 1; + optional bool live = 2; +} + +message CMsgSpectateFriendGameResponse { + enum EWatchLiveResult { + SUCCESS = 0; + ERROR_GENERIC = 1; + ERROR_NO_PLUS = 2; + ERROR_NOT_FRIENDS = 3; + ERROR_LOBBY_NOT_FOUND = 4; + ERROR_SPECTATOR_IN_A_LOBBY = 5; + ERROR_LOBBY_IS_LAN = 6; + ERROR_WRONG_LOBBY_TYPE = 7; + ERROR_WRONG_LOBBY_STATE = 8; + ERROR_PLAYER_NOT_PLAYER = 9; + ERROR_TOO_MANY_SPECTATORS = 10; + ERROR_SPECTATOR_SWITCHED_TEAMS = 11; + ERROR_FRIENDS_ON_BOTH_SIDES = 12; + ERROR_SPECTATOR_IN_THIS_LOBBY = 13; + ERROR_LOBBY_IS_LEAGUE = 14; + } + + optional fixed64 server_steamid = 4; + optional .CMsgSpectateFriendGameResponse.EWatchLiveResult watch_live_result = 5 [default = SUCCESS]; +} + +message CDOTAReplayDownloadInfo { + message Highlight { + optional uint32 timestamp = 1; + optional string description = 2; + } + + optional .CMsgDOTAMatchMinimal match = 1; + optional string title = 2; + optional string description = 3; + optional uint32 size = 4; + repeated string tags = 5; + optional bool exists_on_disk = 6; +} + +message CMsgWatchGame { + optional fixed64 server_steamid = 1; + optional uint32 client_version = 2; + optional fixed64 watch_server_steamid = 3; + optional uint64 lobby_id = 4; + repeated uint32 regions = 5; +} + +message CMsgCancelWatchGame { +} + +message CMsgWatchGameResponse { + enum WatchGameResult { + PENDING = 0; + READY = 1; + GAMESERVERNOTFOUND = 2; + UNAVAILABLE = 3; + CANCELLED = 4; + INCOMPATIBLEVERSION = 5; + MISSINGLEAGUESUBSCRIPTION = 6; + LOBBYNOTFOUND = 7; + } + + optional .CMsgWatchGameResponse.WatchGameResult watch_game_result = 1 [default = PENDING]; + optional uint32 source_tv_public_addr = 2; + optional uint32 source_tv_private_addr = 3; + optional uint32 source_tv_port = 4; + optional fixed64 game_server_steamid = 5; + optional fixed64 watch_server_steamid = 6; + optional fixed64 watch_tv_unique_secret_code = 7; + optional string broadcast_url = 8; +} + +message CMsgPartyLeaderWatchGamePrompt { + optional fixed64 game_server_steamid = 5; +} + +message CDOTABroadcasterInfo { + optional uint32 account_id = 1; + optional fixed64 server_steam_id = 2; + optional bool live = 3; + optional string team_name_radiant = 4; + optional string team_name_dire = 5; + optional uint32 series_game = 7; + optional uint32 upcoming_broadcast_timestamp = 9; + optional bool allow_live_video = 10; + optional uint32 node_type = 11; + optional string node_name = 12; +} + +message CMsgDOTASeries { + message TeamInfo { + optional uint32 team_id = 1; + optional string team_name = 2; + optional string team_logo_url = 3; + optional uint32 wager_count = 4; + } + + message LiveGame { + optional fixed64 server_steam_id = 1; + optional .CMsgDOTASeries.TeamInfo team_radiant = 2; + optional .CMsgDOTASeries.TeamInfo team_dire = 3; + optional uint32 team_radiant_score = 4; + optional uint32 team_dire_score = 5; + } + + optional uint32 series_id = 1; + optional uint32 series_type = 2; + optional .CMsgDOTASeries.TeamInfo team_1 = 3; + optional .CMsgDOTASeries.TeamInfo team_2 = 4; + repeated .CMsgDOTAMatchMinimal match_minimal = 5; + optional .CMsgDOTASeries.LiveGame live_game = 6; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common.proto new file mode 100644 index 00000000..9c9ed51b --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common.proto @@ -0,0 +1,1951 @@ +import "in/dragonbra/javasteam/protobufs/dota2/steammessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/gcsdk_gcmessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_shared_enums.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/networkbasetypes.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum ESpecialPingValue { + k_ESpecialPingValue_NoData = 16382; + k_ESpecialPingValue_Failed = 16383; +} + +enum EDOTAGCSessionNeed { + k_EDOTAGCSessionNeed_Unknown = 0; + k_EDOTAGCSessionNeed_UserNoSessionNeeded = 100; + k_EDOTAGCSessionNeed_UserInOnlineGame = 101; + k_EDOTAGCSessionNeed_UserInLocalGame = 102; + k_EDOTAGCSessionNeed_UserInUIWasConnected = 103; + k_EDOTAGCSessionNeed_UserInUINeverConnected = 104; + k_EDOTAGCSessionNeed_UserTutorials = 105; + k_EDOTAGCSessionNeed_UserInUIWasConnectedIdle = 106; + k_EDOTAGCSessionNeed_UserInUINeverConnectedIdle = 107; + k_EDOTAGCSessionNeed_GameServerOnline = 200; + k_EDOTAGCSessionNeed_GameServerLocal = 201; + k_EDOTAGCSessionNeed_GameServerIdle = 202; + k_EDOTAGCSessionNeed_GameServerRelay = 203; + k_EDOTAGCSessionNeed_GameServerLocalUpload = 204; +} + +enum EDOTAMatchPlayerTimeCustomStat { + k_EDOTA_MatchPlayerTimeCustomStat_HPRegenUnderT1Towers = 1; + k_EDOTA_MatchPlayerTimeCustomStat_MagicDamageReducedWithNewFormula_Absolute = 2; + k_EDOTA_MatchPlayerTimeCustomStat_MagicDamageReducedWithNewFormula_PercentOfTotalHP = 3; +} + +enum DOTA_TournamentEvents { + TE_FIRST_BLOOD = 0; + TE_GAME_END = 1; + TE_MULTI_KILL = 2; + TE_HERO_DENY = 3; + TE_AEGIS_DENY = 4; + TE_AEGIS_STOLEN = 5; + TE_GODLIKE = 6; + TE_COURIER_KILL = 7; + TE_ECHOSLAM = 8; + TE_RAPIER = 9; + TE_EARLY_ROSHAN = 10; + TE_BLACK_HOLE = 11; +} + +enum EBroadcastTimelineEvent { + EBroadcastTimelineEvent_MatchStarted = 1; + EBroadcastTimelineEvent_GameStateChanged = 2; + EBroadcastTimelineEvent_TowerDeath = 3; + EBroadcastTimelineEvent_BarracksDeath = 4; + EBroadcastTimelineEvent_AncientDeath = 5; + EBroadcastTimelineEvent_RoshanDeath = 6; + EBroadcastTimelineEvent_HeroDeath = 7; + EBroadcastTimelineEvent_TeamFight = 8; + EBroadcastTimelineEvent_FirstBlood = 9; +} + +enum ECustomGameWhitelistState { + CUSTOM_GAME_WHITELIST_STATE_UNKNOWN = 0; + CUSTOM_GAME_WHITELIST_STATE_APPROVED = 1; + CUSTOM_GAME_WHITELIST_STATE_REJECTED = 2; +} + +enum EDOTATriviaQuestionCategory { + k_EDOTATriviaQuestionCategory_AbilityIcon = 0; + k_EDOTATriviaQuestionCategory_AbilityCooldown = 1; + k_EDOTATriviaQuestionCategory_HeroAttributes = 2; + k_EDOTATriviaQuestionCategory_HeroMovementSpeed = 3; + k_EDOTATriviaQuestionCategory_TalentTree = 4; + k_EDOTATriviaQuestionCategory_HeroStats = 5; + k_EDOTATriviaQuestionCategory_ItemPrice = 6; + k_EDOTATriviaQuestionCategory_AbilitySound = 7; + k_EDOTATriviaQuestionCategory_InvokerSpells = 8; + k_EDOTATriviaQuestionCategory_AbilityManaCost = 9; + k_EDOTATriviaQuestionCategory_HeroAttackSound = 10; + k_EDOTATriviaQuestionCategory_AbilityName = 11; + k_EDOTATriviaQuestionCategory_ItemComponents = 12; + k_EDOTATriviaQuestionCategory_ItemLore = 13; + k_EDOTATriviaQuestionCategory_ItemPassives = 14; + k_EDOTATriviaQuestionCategory_STATIC_QUESTIONS_END = 15; + k_EDOTATriviaQuestionCategory_DYNAMIC_QUESTIONS_START = 99; + k_EDOTATriviaQuestionCategory_Dynamic_ItemBuild = 100; +} + +enum EOverwatchConviction { + k_EOverwatchConviction_None = 0; + k_EOverwatchConviction_NotGuilty = 1; + k_EOverwatchConviction_GuiltUnclear = 2; + k_EOverwatchConviction_Guilty = 3; +} + +enum EHeroRelicRarity { + HERO_RELIC_RARITY_INVALID = -1; + HERO_RELIC_RARITY_COMMON = 0; + HERO_RELIC_RARITY_RARE = 1; +} + +enum EStickerbookAuditAction { + STICKERBOOK_AUDIT_CREATE_PAGE = 0; + STICKERBOOK_AUDIT_DELETE_PAGE = 1; + STICKERBOOK_AUDIT_STICK_STICKERS = 2; + STICKERBOOK_AUDIT_REPLACE_STICKERS = 3; + STICKERBOOK_AUDIT_HERO_STICKER = 4; +} + +enum EStickerbookPageType { + STICKER_PAGE_GENERIC = 0; + STICKER_PAGE_TEAM = 1; + STICKER_PAGE_TALENT = 2; +} + +enum ENewBloomGiftingResponse { + kENewBloomGifting_Success = 0; + kENewBloomGifting_UnknownFailure = 1; + kENewBloomGifting_MalformedRequest = 2; + kENewBloomGifting_FeatureDisabled = 3; + kENewBloomGifting_ItemNotFound = 4; + kENewBloomGifting_PlayerNotAllowedToGiveGifts = 5; + kENewBloomGifting_TargetNotAllowedToReceiveGifts = 6; + kENewBloomGifting_ServerNotAuthorized = 100; + kENewBloomGifting_PlayerNotInLobby = 101; + kENewBloomGifting_TargetNotInLobby = 102; + kENewBloomGifting_LobbyNotEligible = 103; + kENewBloomGifting_TargetNotFriend = 200; + kENewBloomGifting_TargetFriendDurationTooShort = 201; +} + +message CSODOTAGameAccountClient { + message RoleHandicap { + optional uint32 role = 1; + optional float handicap = 2; + } + + optional uint32 account_id = 1 [(key_field) = true]; + optional uint32 wins = 3; + optional uint32 losses = 4; + optional uint32 xp = 12; + optional uint32 level = 13; + optional uint32 initial_skill = 14; + optional uint32 leaver_count = 15; + optional uint32 secondary_leaver_count = 58; + optional uint32 low_priority_until_date = 18; + optional uint32 prevent_text_chat_until_date = 20; + optional uint32 prevent_voice_until_date = 21; + optional uint32 prevent_public_text_chat_until_date = 86; + optional uint32 prevent_new_player_chat_until_date = 122; + optional uint32 last_abandoned_game_date = 22; + optional uint32 last_secondary_abandoned_game_date = 59; + optional uint32 leaver_penalty_count = 23; + optional uint32 completed_game_streak = 24; + optional uint32 account_disabled_until_date = 38; + optional uint32 account_disabled_count = 39; + optional uint32 match_disabled_until_date = 41; + optional uint32 match_disabled_count = 42; + optional uint32 shutdownlawterminatetimestamp = 47; + optional uint32 low_priority_games_remaining = 48; + optional uint32 recruitment_level = 55; + optional bool has_new_notifications = 56; + optional bool is_league_admin = 57; + optional uint32 casual_games_played = 60; + optional uint32 solo_competitive_games_played = 61; + optional uint32 party_competitive_games_played = 62; + optional uint32 casual_1v1_games_played = 65; + optional int32 curr_all_hero_challenge_id = 67; + optional uint32 play_time_points = 68; + optional uint32 account_flags = 69; + optional uint32 play_time_level = 70; + optional uint32 player_behavior_seq_num_last_report = 71; + optional uint32 player_behavior_score_last_report = 72; + optional bool player_behavior_report_old_data = 73; + optional uint32 tourney_skill_level = 74; + optional uint32 tourney_recent_participation_date = 85; + optional uint64 anchored_phone_number_id = 88; + optional uint32 ranked_matchmaking_ban_until_date = 89; + optional uint32 recent_game_time_1 = 90; + optional uint32 recent_game_time_2 = 91; + optional uint32 recent_game_time_3 = 92; + optional uint64 favorite_team_packed = 103; + optional uint32 recent_report_time = 104; + optional uint32 custom_game_disabled_until_date = 105; + optional uint32 recent_win_time_1 = 106; + optional uint32 recent_win_time_2 = 107; + optional uint32 recent_win_time_3 = 108; + optional uint32 coach_rating = 109; + optional uint32 queue_points = 114; + repeated .CSODOTAGameAccountClient.RoleHandicap role_handicaps = 115; + optional uint32 event_mode_recent_time = 120; + optional uint32 mmr_recalibration_time = 121; + repeated int32 banned_hero_ids = 123; +} + +message CSODOTAGameAccountPlus { + optional uint32 account_id = 1 [(key_field) = true]; + optional uint32 original_start_date = 2; + optional uint32 plus_flags = 3; + optional uint32 plus_status = 4; + optional uint32 prepaid_time_start = 5; + optional uint32 prepaid_time_balance = 6; + optional fixed32 next_payment_date = 7; + optional fixed64 steam_agreement_id = 8; +} + +message CSODOTAChatWheel { + optional uint32 message_id = 1 [default = 4294967295, (key_field) = true]; +} + +message CMsgLobbyFeaturedGamemodeProgress { + message AccountProgress { + optional uint32 account_id = 1; + optional uint32 current_value = 2; + optional uint32 max_value = 3; + } + + repeated .CMsgLobbyFeaturedGamemodeProgress.AccountProgress accounts = 1; +} + +message CMsgBattleCupVictory { + optional uint32 account_id = 1; + optional uint32 win_date = 2; + optional uint32 valid_until = 3; + optional uint32 skill_level = 4; + optional uint32 tournament_id = 5; + optional uint32 division_id = 6; + optional uint32 team_id = 7; + optional uint32 streak = 8; + optional uint32 trophy_id = 9; +} + +message CMsgLobbyBattleCupVictoryList { + repeated .CMsgBattleCupVictory winners = 1; +} + +message CMsgDOTABroadcastNotification { + optional string message = 1; +} + +message CProtoItemHeroStatue { + optional int32 hero_id = 1; + optional uint32 status_effect_index = 2; + optional string sequence_name = 3; + optional float cycle = 4; + repeated uint32 wearable = 5; + optional string inscription = 6; + repeated uint32 style = 7; + optional bool tournament_drop = 8; +} + +message CMatchPlayerAbilityUpgrade { + optional int32 ability = 1 [default = -1]; + optional uint32 time = 2; +} + +message CMatchPlayerTimedCustomStat { + optional .EDOTAMatchPlayerTimeCustomStat stat = 2 [default = k_EDOTA_MatchPlayerTimeCustomStat_HPRegenUnderT1Towers]; + optional float value = 3; +} + +message CMatchPlayerTimedStats { + optional uint32 time = 1; + optional uint32 kills = 2; + optional uint32 deaths = 3; + optional uint32 assists = 4; + optional uint32 net_worth = 5; + optional uint32 xp = 6; + optional uint32 last_hits = 7; + optional uint32 denies = 8; + optional uint32 bounty_rune_gold = 9; + optional uint32 range_creep_upgrade_gold = 10; + optional uint32 observer_wards_dewarded = 11; + optional uint32 reliable_gold_earned = 12; + optional uint32 gold_loss_prevented = 13; + optional uint32 hero_kill_gold = 14; + optional uint32 creep_kill_gold = 15; + optional uint32 building_gold = 16; + optional uint32 other_gold = 17; + optional uint32 comeback_gold = 18; + optional uint32 experimental_gold = 19; + optional uint32 experimental2_gold = 20; + optional uint32 creep_deny_gold = 21; + optional uint32 tp_scrolls_purchased_1 = 22; + optional uint32 tp_scrolls_purchased_2 = 23; + optional uint32 tp_scrolls_purchased_3 = 24; + optional uint32 tp_scrolls_purchased_4 = 25; + optional uint32 tp_scrolls_purchased_5 = 26; + optional uint32 neutral_gold = 27; + optional uint32 courier_gold = 28; + optional uint32 roshan_gold = 29; + optional uint32 income_gold = 30; + optional uint32 item_value = 36; + optional uint32 support_gold_spent = 37; + optional uint32 camps_stacked = 38; + optional uint32 wards_placed = 39; + optional uint32 triple_kills = 40; + optional uint32 rampages = 41; + repeated .CMatchPlayerTimedCustomStat custom_stats = 42; +} + +message CMatchTeamTimedStats { + optional uint32 time = 1; + optional uint32 enemy_towers_killed = 2; + optional uint32 enemy_barracks_killed = 3; + optional uint32 enemy_towers_status = 4; + optional uint32 enemy_barracks_status = 5; +} + +message CMatchAdditionalUnitInventory { + optional string unit_name = 1; + repeated int32 items = 2; +} + +message CMatchPlayerPermanentBuff { + optional uint32 permanent_buff = 1; + optional uint32 stack_count = 2; + optional uint32 grant_time = 3; +} + +message CMatchHeroSelectEvent { + optional bool is_pick = 1; + optional uint32 team = 2; + optional int32 hero_id = 3; +} + +message CMatchClip { + optional uint64 match_id = 1; + optional uint32 player_account_id = 2; + optional uint32 game_time_seconds = 3; + optional uint32 duration_seconds = 4; + optional uint32 player_id = 5; + optional int32 hero_id = 6; + optional int32 ability_id = 7 [default = -1]; + optional uint32 camera_mode = 8; + optional string comment = 9; +} + +message CPartySearchClientParty { + optional fixed64 party_id = 1; + optional int32 beacon_type = 2; + repeated fixed32 party_members = 3; +} + +message CMsgDOTAHasItemQuery { + optional uint32 account_id = 1; + optional uint64 item_id = 2; +} + +message CMsgDOTAHasItemResponse { + optional bool has_item = 1; +} + +message CMsgGCGetPlayerCardItemInfo { + optional uint32 account_id = 1; + repeated uint64 player_card_item_ids = 2; + optional uint32 all_for_event = 3; +} + +message CMsgGCGetPlayerCardItemInfoResponse { + message PlayerCardInfo { + optional uint64 player_card_item_id = 1; + optional uint32 account_id = 2; + optional uint64 packed_bonuses = 3; + } + + repeated .CMsgGCGetPlayerCardItemInfoResponse.PlayerCardInfo player_card_infos = 1; +} + +message CSODOTAMapLocationState { + optional uint32 account_id = 1 [(key_field) = true]; + optional int32 location_id = 2 [(key_field) = true]; + optional bool completed = 3; +} + +message CMsgLeagueAdminList { + repeated uint32 account_ids = 1; +} + +message CMsgDOTAProfileCard { + message Slot { + message Trophy { + optional uint32 trophy_id = 1; + optional uint32 trophy_score = 2; + } + + message Stat { + optional .CMsgDOTAProfileCard.EStatID stat_id = 1 [default = k_eStat_Wins]; + optional uint32 stat_score = 2; + } + + message Item { + optional bytes serialized_item = 1; + optional uint64 item_id = 2; + } + + message Hero { + optional int32 hero_id = 1; + optional uint32 hero_wins = 2; + optional uint32 hero_losses = 3; + } + + message Emoticon { + optional uint32 emoticon_id = 1; + } + + message Team { + optional uint32 team_id = 1; + } + + optional uint32 slot_id = 1; + optional .CMsgDOTAProfileCard.Slot.Trophy trophy = 2; + optional .CMsgDOTAProfileCard.Slot.Stat stat = 3; + optional .CMsgDOTAProfileCard.Slot.Item item = 4; + optional .CMsgDOTAProfileCard.Slot.Hero hero = 5; + optional .CMsgDOTAProfileCard.Slot.Emoticon emoticon = 6; + optional .CMsgDOTAProfileCard.Slot.Team team = 7; + } + + enum EStatID { + k_eStat_Wins = 3; + k_eStat_Commends = 4; + k_eStat_GamesPlayed = 5; + k_eStat_FirstMatchDate = 6; + k_eStat_PreviousSeasonRank = 7; + k_eStat_GamesMVP = 8; + } + + optional uint32 account_id = 1; + repeated .CMsgDOTAProfileCard.Slot slots = 3; + optional uint32 badge_points = 4; + optional uint32 event_id = 6; + optional .CMsgBattleCupVictory recent_battle_cup_victory = 7; + optional uint32 rank_tier = 8; + optional uint32 leaderboard_rank = 9; + optional bool is_plus_subscriber = 10; + optional uint32 plus_original_start_date = 11; + optional uint32 rank_tier_score = 12; + optional uint32 leaderboard_rank_core = 17; + optional uint32 title = 23; + optional uint64 favorite_team_packed = 24; + optional uint32 lifetime_games = 25; + optional uint32 event_level = 26; +} + +message CSODOTAPlayerChallenge { + optional uint32 account_id = 1 [(key_field) = true]; + optional uint32 event_id = 2 [(key_field) = true]; + optional uint32 slot_id = 3 [(key_field) = true]; + optional uint32 int_param_0 = 5; + optional uint32 int_param_1 = 6; + optional uint32 created_time = 7; + optional uint32 completed = 8; + optional uint32 sequence_id = 9; + optional uint32 challenge_tier = 10; + optional uint32 flags = 11; + optional uint32 attempts = 12; + optional uint32 complete_limit = 13; + optional uint32 quest_rank = 14; + optional uint32 max_quest_rank = 15; + optional uint32 instance_id = 16; + optional int32 hero_id = 17; + optional uint32 template_id = 18; +} + +message CMsgClientToGCRerollPlayerChallenge { + optional .EEvent event_id = 1 [default = EVENT_ID_NONE]; + optional uint32 sequence_id = 3; + optional int32 hero_id = 4; +} + +message CMsgGCRerollPlayerChallengeResponse { + enum EResult { + eResult_Success = 0; + eResult_Dropped = 1; + eResult_NotFound = 2; + eResult_CantReroll = 3; + eResult_ServerError = 4; + } + + optional .CMsgGCRerollPlayerChallengeResponse.EResult result = 1 [default = eResult_Success]; +} + +message CMsgGCTopCustomGamesList { + repeated uint64 top_custom_games = 1; + optional uint64 game_of_the_day = 2; +} + +message CMsgDOTARealtimeGameStats { + message TeamDetails { + optional uint32 team_number = 1; + optional uint32 team_id = 2; + optional string team_name = 3; + optional fixed64 team_logo = 4; + optional string team_tag = 10; + optional uint32 score = 5; + optional uint32 net_worth = 9; + repeated .CMsgDOTARealtimeGameStats.PlayerDetails players = 6; + optional bool only_team = 7; + optional uint32 cheers = 8; + optional string team_logo_url = 11; + } + + message ItemDetails { + optional int32 item_ability_id = 1 [default = -1]; + optional string name = 2; + optional int32 time = 3; + optional bool sold = 4; + optional uint32 stackcount = 5; + } + + message AbilityDetails { + optional int32 id = 1 [default = -1]; + optional string name = 2; + optional uint32 level = 3; + optional float cooldown = 4; + optional float cooldown_max = 5; + } + + message HeroToHeroStats { + optional int32 victimid = 1 [default = -1]; + optional uint32 kills = 2; + optional uint32 assists = 3; + } + + message AbilityList { + repeated int32 id = 1; + } + + message PlayerDetails { + optional uint32 accountid = 1; + optional int32 playerid = 2 [default = -1]; + optional string name = 3; + optional uint32 team = 4; + optional int32 heroid = 5; + optional uint32 healthpoints = 6; + optional uint32 maxhealthpoints = 7; + optional float healthregenrate = 8; + optional uint32 manapoints = 9; + optional uint32 maxmanapoints = 10; + optional float manaregenrate = 11; + optional uint32 base_strength = 12; + optional uint32 base_agility = 13; + optional uint32 base_intelligence = 14; + optional int32 base_armor = 15; + optional uint32 base_movespeed = 16; + optional uint32 base_damage = 17; + optional uint32 strength = 18; + optional uint32 agility = 19; + optional uint32 intelligence = 20; + optional int32 armor = 21; + optional uint32 movespeed = 22; + optional uint32 damage = 23; + optional uint32 hero_damage = 24; + optional uint32 tower_damage = 25; + repeated .CMsgDOTARealtimeGameStats.AbilityDetails abilities = 26; + optional uint32 level = 27; + optional uint32 kill_count = 28; + optional uint32 death_count = 29; + optional uint32 assists_count = 30; + optional uint32 denies_count = 31; + optional uint32 lh_count = 32; + optional uint32 hero_healing = 33; + optional uint32 gold_per_min = 34; + optional uint32 xp_per_min = 35; + optional uint32 net_gold = 36; + optional uint32 gold = 37; + optional float x = 38; + optional float y = 39; + optional int32 respawn_time = 40; + optional uint32 ultimate_cooldown = 41; + optional bool has_buyback = 42; + repeated .CMsgDOTARealtimeGameStats.ItemDetails items = 43; + repeated .CMsgDOTARealtimeGameStats.ItemDetails stashitems = 44; + repeated .CMsgDOTARealtimeGameStats.ItemDetails itemshoppinglist = 45; + repeated .CMsgDOTARealtimeGameStats.AbilityList levelpoints = 46; + repeated .CMsgDOTARealtimeGameStats.HeroToHeroStats hero_to_hero_stats = 47; + optional bool has_ultimate = 48; + optional bool has_ultimate_mana = 49; + optional uint32 team_slot = 50; + } + + message BuildingDetails { + optional uint32 team = 2; + optional float heading = 3; + optional uint32 lane = 4; + optional uint32 tier = 5; + optional uint32 type = 6; + optional float x = 7; + optional float y = 8; + optional bool destroyed = 9; + } + + message KillDetails { + optional int32 player_id = 1 [default = -1]; + optional int32 death_time = 2; + optional int32 killer_player_id = 3 [default = -1]; + } + + message BroadcasterDetails { + optional int32 player_id = 1 [default = -1]; + } + + message PickBanDetails { + optional int32 hero = 1; + optional uint32 team = 2; + } + + message MatchDetails { + optional fixed64 server_steam_id = 1; + optional uint64 match_id = 2; + optional uint32 timestamp = 3; + optional float time_of_day = 4; + optional bool is_nightstalker_night = 5; + optional int32 game_time = 6; + optional uint32 game_state = 19; + optional uint32 teamid_radiant = 8; + optional uint32 teamid_dire = 9; + repeated .CMsgDOTARealtimeGameStats.PickBanDetails picks = 10; + repeated .CMsgDOTARealtimeGameStats.PickBanDetails bans = 11; + repeated .CMsgDOTARealtimeGameStats.KillDetails kills = 12; + repeated .CMsgDOTARealtimeGameStats.BroadcasterDetails broadcasters = 13; + optional uint32 game_mode = 14; + optional uint32 league_id = 15; + optional uint32 league_node_id = 18; + optional bool single_team = 16; + optional uint32 cheers_peak = 17; + optional uint32 lobby_type = 20; + optional uint32 start_timestamp = 21; + optional bool is_player_draft = 22; + } + + message GraphData { + message LocationStats { + repeated int32 stats = 1; + } + + message TeamLocationStats { + repeated .CMsgDOTARealtimeGameStats.GraphData.LocationStats loc_stats = 1; + } + + enum eStat { + CreepGoldEarned = 0; + KillGoldEarned = 1; + DeathAndBuybackGoldLost = 2; + XPEarned = 3; + } + + enum eLocation { + BotLane = 0; + MidLane = 1; + TopLane = 2; + Jungle = 3; + Ancients = 4; + Other = 5; + } + + repeated int32 graph_gold = 1; + repeated int32 graph_xp = 2; + repeated int32 graph_kill = 3; + repeated int32 graph_tower = 4; + repeated int32 graph_rax = 5; + repeated .CMsgDOTARealtimeGameStats.GraphData.TeamLocationStats team_loc_stats = 6; + } + + optional .CMsgDOTARealtimeGameStats.MatchDetails match = 1; + repeated .CMsgDOTARealtimeGameStats.TeamDetails teams = 2; + repeated .CMsgDOTARealtimeGameStats.BuildingDetails buildings = 3; + optional .CMsgDOTARealtimeGameStats.GraphData graph_data = 4; + optional bool delta_frame = 5; +} + +message CMsgDOTARealtimeGameStatsTerse { + message TeamDetails { + optional uint32 team_number = 1; + optional uint32 team_id = 2; + optional string team_name = 3; + optional string team_tag = 8; + optional fixed64 team_logo = 4; + optional uint32 score = 5; + optional uint32 net_worth = 7; + optional string team_logo_url = 9; + repeated .CMsgDOTARealtimeGameStatsTerse.PlayerDetails players = 6; + } + + message PlayerDetails { + optional uint32 accountid = 1; + optional int32 playerid = 2 [default = -1]; + optional string name = 3; + optional uint32 team = 4; + optional int32 heroid = 5; + optional uint32 level = 6; + optional uint32 kill_count = 7; + optional uint32 death_count = 8; + optional uint32 assists_count = 9; + optional uint32 denies_count = 10; + optional uint32 lh_count = 11; + optional uint32 gold = 12; + optional float x = 13; + optional float y = 14; + optional uint32 net_worth = 15; + repeated int32 abilities = 16; + repeated int32 items = 17; + optional uint32 team_slot = 18; + } + + message BuildingDetails { + optional uint32 team = 1; + optional float heading = 2; + optional uint32 type = 3; + optional uint32 lane = 4; + optional uint32 tier = 5; + optional float x = 6; + optional float y = 7; + optional bool destroyed = 8; + } + + message PickBanDetails { + optional int32 hero = 1; + optional uint32 team = 2; + } + + message MatchDetails { + optional fixed64 server_steam_id = 1; + optional uint64 match_id = 2; + optional uint32 timestamp = 3; + optional int32 game_time = 4; + repeated uint32 steam_broadcaster_account_ids = 6; + optional uint32 game_mode = 7; + optional uint32 league_id = 8; + optional uint32 league_node_id = 9; + optional uint32 game_state = 10; + repeated .CMsgDOTARealtimeGameStatsTerse.PickBanDetails picks = 11; + repeated .CMsgDOTARealtimeGameStatsTerse.PickBanDetails bans = 12; + optional uint32 lobby_type = 13; + optional uint32 start_timestamp = 14; + optional bool is_player_draft = 15; + } + + message GraphData { + repeated int32 graph_gold = 1; + } + + optional .CMsgDOTARealtimeGameStatsTerse.MatchDetails match = 1; + repeated .CMsgDOTARealtimeGameStatsTerse.TeamDetails teams = 2; + repeated .CMsgDOTARealtimeGameStatsTerse.BuildingDetails buildings = 3; + optional .CMsgDOTARealtimeGameStatsTerse.GraphData graph_data = 4; + optional bool delta_frame = 5; +} + +message CMsgDOTABroadcastTimelineEvent { + optional .EBroadcastTimelineEvent event = 1 [default = EBroadcastTimelineEvent_MatchStarted]; + optional fixed32 timestamp = 2; + optional uint32 data = 3; + optional string string_data = 4; +} + +message CMsgGCToClientMatchGroupsVersion { + optional uint32 matchgroups_version = 1; +} + +message CMsgDOTASDOHeroStatsHistory { + optional uint64 match_id = 1; + optional uint32 game_mode = 2; + optional uint32 lobby_type = 3; + optional uint32 start_time = 4; + optional bool won = 5; + optional uint32 gpm = 6; + optional uint32 xpm = 7; + optional uint32 kills = 8; + optional uint32 deaths = 9; + optional uint32 assists = 10; +} + +message CMsgPredictionChoice { + optional uint32 value = 1; + optional string name = 2; + optional uint32 min_raw_value = 3; + optional uint32 max_raw_value = 4; +} + +message CMsgInGamePrediction { + message QueryKeyValues { + optional string name = 1; + optional string value = 2; + } + + enum ERawValueType_t { + Number = 0; + Time = 1; + } + + enum EPredictionType { + Generic = 0; + Hero = 1; + Team = 2; + Player = 3; + Special = 4; + YesNo = 5; + QualifiersTeam = 6; + } + + enum EResolutionType_t { + InvalidQuery = 0; + FirstToPassQuery = 1; + LastToPassQuery = 2; + LastRemainingQuery = 3; + MaxToPassQuery = 4; + MinToPassQuery = 5; + SumQuery = 6; + MaxTeamSumToPassQuery = 7; + MinTeamSumToPassQuery = 8; + } + + enum ERandomSelectionGroup_t { + EarlyGame = 0; + MidGame = 1; + LateGame = 2; + Count = 3; + } + + optional uint32 id = 1; + optional string name = 2; + optional .CMsgInGamePrediction.EPredictionType type = 3 [default = Generic]; + optional .CMsgInGamePrediction.ERandomSelectionGroup_t group = 4 [default = EarlyGame]; + optional string question = 5; + repeated .CMsgPredictionChoice choices = 6; + repeated string required_heroes = 7; + optional string query_name = 8; + repeated .CMsgInGamePrediction.QueryKeyValues query_values = 9; + optional .CMsgInGamePrediction.EResolutionType_t answer_resolution_type = 10 [default = InvalidQuery]; + optional uint32 points_to_grant = 11; + optional uint32 reward_action = 12; + optional uint32 debug_force_selection = 13; + optional .CMsgInGamePrediction.ERawValueType_t raw_value_type = 14 [default = Number]; +} + +message CMsgDOTASeasonPredictions { + message Prediction { + message Answers { + optional uint32 answer_id = 1; + } + + enum EPredictionType { + Generic = 0; + Hero = 1; + Team = 2; + Player = 3; + Special = 4; + YesNo = 5; + QualifiersTeam = 6; + LastChanceTeam = 7; + } + + enum EAnswerType { + SingleInt = 0; + SingleFloat = 1; + MultipleInt = 2; + MultipleFloat = 3; + AnswerTeam = 4; + SingleTime = 5; + MultipleTime = 6; + NoAnswer = 7; + } + + optional .CMsgDOTASeasonPredictions.Prediction.EPredictionType type = 1 [default = Generic]; + optional string question = 2; + repeated .CMsgPredictionChoice choices = 3; + optional uint32 selection_id = 4; + optional uint32 start_date = 5; + optional uint32 lock_date = 6; + optional uint32 reward = 7; + optional .CMsgDOTASeasonPredictions.Prediction.EAnswerType answer_type = 8 [default = SingleInt]; + optional uint32 answer_id = 9; + repeated .CMsgDOTASeasonPredictions.Prediction.Answers answers = 10; + optional string query_name = 11; + optional uint32 lock_on_selection_id = 13; + optional uint32 lock_on_selection_value = 14; + optional bool lock_on_selection_set = 15; + optional bool use_answer_value_ranges = 16; + optional .ELeagueRegion region = 17 [default = LEAGUE_REGION_UNSET]; + repeated .ELeaguePhase phases = 18; + optional .EEvent reward_event = 19 [default = EVENT_ID_NONE]; + optional uint32 league_node_id = 20; + optional string reward_event_action = 21; + } + + repeated .CMsgDOTASeasonPredictions.Prediction predictions = 1; + repeated .CMsgInGamePrediction in_game_predictions = 2; + optional uint32 in_game_prediction_count_per_game = 3; + optional uint32 in_game_prediction_voting_period_minutes = 4; +} + +message CMsgAvailablePredictions { + message MatchPrediction { + optional uint64 match_id = 1; + repeated .CMsgInGamePrediction predictions = 2; + } + + repeated .CMsgAvailablePredictions.MatchPrediction match_predictions = 1; +} + +message CMsgLeagueWatchedGames { + message Series { + optional uint32 node_id = 1; + repeated uint32 game = 2; + } + + message League { + optional uint32 league_id = 1; + repeated .CMsgLeagueWatchedGames.Series series = 2; + } + + repeated .CMsgLeagueWatchedGames.League leagues = 1; +} + +message CMsgDOTAMatch { + option (maximum_size_bytes) = 4096; + + message Player { + message CustomGameData { + optional uint32 dota_team = 1; + optional bool winner = 2; + } + + message HeroDamageReceived { + optional uint32 pre_reduction = 1; + optional uint32 post_reduction = 2; + optional .CMsgDOTAMatch.Player.HeroDamageType damage_type = 3 [default = HERO_DAMAGE_PHYSICAL]; + } + + enum HeroDamageType { + HERO_DAMAGE_PHYSICAL = 0; + HERO_DAMAGE_MAGICAL = 1; + HERO_DAMAGE_PURE = 2; + } + + optional uint32 account_id = 1; + optional uint32 player_slot = 2; + optional int32 hero_id = 3; + optional int32 item_0 = 4 [default = -1]; + optional int32 item_1 = 5 [default = -1]; + optional int32 item_2 = 6 [default = -1]; + optional int32 item_3 = 7 [default = -1]; + optional int32 item_4 = 8 [default = -1]; + optional int32 item_5 = 9 [default = -1]; + optional int32 item_6 = 59 [default = -1]; + optional int32 item_7 = 60 [default = -1]; + optional int32 item_8 = 61 [default = -1]; + optional int32 item_9 = 76 [default = -1]; + optional int32 item_10 = 83 [default = -1]; + optional int32 item_10_lvl = 84; + optional float expected_team_contribution = 10; + optional float scaled_metric = 11; + optional uint32 previous_rank = 12; + optional sint32 rank_change = 13; + optional uint32 mmr_type = 74; + optional uint32 kills = 14; + optional uint32 deaths = 15; + optional uint32 assists = 16; + optional uint32 leaver_status = 17; + optional uint32 gold = 18; + optional uint32 last_hits = 19; + optional uint32 denies = 20; + optional uint32 gold_per_min = 21; + optional uint32 xp_per_min = 22; + optional uint32 gold_spent = 23; + optional uint32 hero_damage = 24; + optional uint32 tower_damage = 25; + optional uint32 hero_healing = 26; + optional uint32 level = 27; + optional uint32 time_last_seen = 28; + optional string player_name = 29; + optional uint32 support_ability_value = 30; + optional bool feeding_detected = 32; + optional uint32 search_rank = 34; + optional uint32 search_rank_uncertainty = 35; + optional int32 rank_uncertainty_change = 36; + optional uint32 hero_play_count = 37; + optional fixed64 party_id = 38; + optional uint32 scaled_hero_damage = 54; + optional uint32 scaled_tower_damage = 55; + optional uint32 scaled_hero_healing = 56; + optional float scaled_kills = 39; + optional float scaled_deaths = 40; + optional float scaled_assists = 41; + optional uint32 claimed_farm_gold = 42; + optional uint32 support_gold = 43; + optional uint32 claimed_denies = 44; + optional uint32 claimed_misses = 45; + optional uint32 misses = 46; + repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47; + repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48; + repeated .CMatchPlayerPermanentBuff permanent_buffs = 57; + optional string pro_name = 72; + optional string real_name = 73; + optional .CMsgDOTAMatch.Player.CustomGameData custom_game_data = 50; + optional bool active_plus_subscription = 51; + optional uint32 net_worth = 52; + optional uint32 bot_difficulty = 58; + optional uint32 hero_pick_order = 63; + optional bool hero_was_randomed = 64; + optional bool hero_was_dota_plus_suggestion = 69; + repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67; + repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79; + optional uint32 seconds_dead = 70; + optional uint32 gold_lost_to_death = 71; + optional uint32 lane_selection_flags = 75; + optional uint32 bounty_runes = 77; + optional uint32 outposts_captured = 78; + optional .DOTA_GC_TEAM team_number = 80 [default = DOTA_GC_TEAM_GOOD_GUYS]; + optional uint32 team_slot = 81; + optional uint32 selected_facet = 82; + } + + message BroadcasterInfo { + optional uint32 account_id = 1; + optional string name = 2; + } + + message BroadcasterChannel { + optional string country_code = 1; + optional string description = 2; + repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3; + optional string language_code = 4; + } + + message Coach { + optional uint32 account_id = 1; + optional string coach_name = 2; + optional uint32 coach_rating = 3; + optional uint32 coach_team = 4; + optional uint64 coach_party_id = 5; + optional bool is_private_coach = 6; + } + + message CustomGameData { + optional uint64 custom_game_id = 1; + optional string map_name = 2; + } + + enum ReplayState { + REPLAY_AVAILABLE = 0; + REPLAY_NOT_RECORDED = 1; + REPLAY_EXPIRED = 2; + } + + optional uint32 duration = 3; + optional fixed32 starttime = 4; + repeated .CMsgDOTAMatch.Player players = 5; + optional uint64 match_id = 6; + repeated uint32 tower_status = 8; + repeated uint32 barracks_status = 9; + optional uint32 cluster = 10; + optional uint32 first_blood_time = 12; + optional fixed32 replay_salt = 13; + optional fixed32 server_ip = 14; + optional uint32 server_port = 15; + optional uint32 lobby_type = 16; + optional uint32 human_players = 17; + optional uint32 average_skill = 18; + optional float game_balance = 19; + optional uint32 radiant_team_id = 20; + optional uint32 dire_team_id = 21; + optional uint32 leagueid = 22; + optional string radiant_team_name = 23; + optional string dire_team_name = 24; + optional uint64 radiant_team_logo = 25; + optional uint64 dire_team_logo = 26; + optional string radiant_team_logo_url = 54; + optional string dire_team_logo_url = 55; + optional uint32 radiant_team_complete = 27; + optional uint32 dire_team_complete = 28; + optional .DOTA_GameMode game_mode = 31 [default = DOTA_GAMEMODE_NONE]; + repeated .CMatchHeroSelectEvent picks_bans = 32; + optional uint64 match_seq_num = 33; + optional .CMsgDOTAMatch.ReplayState replay_state = 34 [default = REPLAY_AVAILABLE]; + optional uint32 radiant_guild_id = 35; + optional uint32 dire_guild_id = 36; + optional string radiant_team_tag = 37; + optional string dire_team_tag = 38; + optional uint32 series_id = 39; + optional uint32 series_type = 40; + repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43; + optional uint32 engine = 44; + optional .CMsgDOTAMatch.CustomGameData custom_game_data = 45; + optional uint32 match_flags = 46; + optional fixed32 private_metadata_key = 47; + optional uint32 radiant_team_score = 48; + optional uint32 dire_team_score = 49; + optional .EMatchOutcome match_outcome = 50 [default = k_EMatchOutcome_Unknown]; + optional uint32 tournament_id = 51; + optional uint32 tournament_round = 52; + optional uint32 pre_game_duration = 53; + repeated .CMsgDOTAMatch.Coach coaches = 57; +} + +message CMsgPlayerCard { + message StatModifier { + optional uint32 stat = 1; + optional uint32 value = 2; + } + + optional uint32 account_id = 1; + repeated .CMsgPlayerCard.StatModifier stat_modifier = 2; +} + +message CMsgDOTAFantasyPlayerStats { + optional uint32 player_account_id = 1; + optional uint64 match_id = 2; + optional bool match_completed = 3; + optional uint32 team_id = 4; + optional uint32 league_id = 5; + optional uint32 delay = 6; + optional uint32 series_id = 7; + optional uint32 series_type = 8; + optional uint32 kills = 10; + optional uint32 deaths = 11; + optional uint32 cs = 12; + optional float gpm = 13; + optional uint32 tower_kills = 14; + optional uint32 roshan_kills = 15; + optional float teamfight_participation = 16; + optional uint32 wards_placed = 17; + optional uint32 camps_stacked = 18; + optional uint32 runes_grabbed = 19; + optional uint32 first_blood = 20; + optional float stuns = 21; + optional uint32 smokes = 22; + optional uint32 watchers = 24; + optional uint32 lotuses = 25; + optional uint32 tormentors = 26; + optional uint32 courier_kills = 27; + optional fixed64 title_stats = 28; + optional uint32 madstone = 29; +} + +message CMsgDOTAFantasyPlayerMatchStats { + repeated .CMsgDOTAFantasyPlayerStats matches = 1; +} + +message CMsgDOTABotDebugInfo { + message Bot { + message Mode { + optional uint32 mode_id = 1; + optional float desire = 2; + optional int32 target_entity = 3 [default = -1]; + optional uint32 target_x = 4; + optional uint32 target_y = 5; + optional uint32 target_z = 6; + } + + message Action { + optional uint32 action_id = 1; + optional string action_target = 2; + } + + optional int32 player_owner_id = 1 [default = -1]; + optional int32 hero_id = 2; + optional uint32 difficulty = 3; + optional uint32 power_current = 4; + optional uint32 power_max = 5; + optional uint32 move_target_x = 6; + optional uint32 move_target_y = 7; + optional uint32 move_target_z = 8; + optional uint32 active_mode_id = 9; + optional float execution_time = 10; + repeated .CMsgDOTABotDebugInfo.Bot.Mode modes = 11; + optional .CMsgDOTABotDebugInfo.Bot.Action action = 12; + } + + repeated .CMsgDOTABotDebugInfo.Bot bots = 1; + optional float desire_push_lane_top = 2; + optional float desire_push_lane_mid = 3; + optional float desire_push_lane_bot = 4; + optional float desire_defend_lane_top = 5; + optional float desire_defend_lane_mid = 6; + optional float desire_defend_lane_bot = 7; + optional float desire_farm_lane_top = 8; + optional float desire_farm_lane_mid = 9; + optional float desire_farm_lane_bot = 10; + optional float desire_farm_roshan = 11; + optional float execution_time = 12; + repeated uint32 rune_status = 13; +} + +message CMsgSuccessfulHero { + optional int32 hero_id = 1; + optional float win_percent = 2; + optional uint32 longest_streak = 3; +} + +message CMsgRecentMatchInfo { + optional uint64 match_id = 1; + optional .DOTA_GameMode game_mode = 2 [default = DOTA_GAMEMODE_NONE]; + optional uint32 kills = 3; + optional uint32 deaths = 4; + optional uint32 assists = 5; + optional uint32 duration = 6; + optional uint32 player_slot = 7; + optional .EMatchOutcome match_outcome = 8 [default = k_EMatchOutcome_Unknown]; + optional uint32 timestamp = 9; + optional uint32 lobby_type = 10; + optional uint32 team_number = 11; +} + +message CMsgMatchTips { + message SingleTip { + optional uint32 source_account_id = 1; + optional uint32 target_account_id = 2; + optional uint32 tip_amount = 3; + optional .EEvent event_id = 4 [default = EVENT_ID_NONE]; + } + + repeated .CMsgMatchTips.SingleTip tips = 2; +} + +message CMsgDOTAMatchMinimal { + message Player { + optional uint32 account_id = 1; + optional int32 hero_id = 2; + optional uint32 kills = 3; + optional uint32 deaths = 4; + optional uint32 assists = 5; + repeated int32 items = 6; + optional uint32 player_slot = 7; + optional string pro_name = 8; + optional uint32 level = 9; + optional .DOTA_GC_TEAM team_number = 10 [default = DOTA_GC_TEAM_GOOD_GUYS]; + } + + message Tourney { + optional uint32 league_id = 1; + optional uint32 series_type = 8; + optional uint32 series_game = 9; + optional uint32 weekend_tourney_tournament_id = 10; + optional uint32 weekend_tourney_season_trophy_id = 11; + optional uint32 weekend_tourney_division = 12; + optional uint32 weekend_tourney_skill_level = 13; + optional uint32 radiant_team_id = 2; + optional string radiant_team_name = 3; + optional fixed64 radiant_team_logo = 4; + optional string radiant_team_logo_url = 14; + optional uint32 dire_team_id = 5; + optional string dire_team_name = 6; + optional fixed64 dire_team_logo = 7; + optional string dire_team_logo_url = 15; + } + + optional uint64 match_id = 1; + optional fixed32 start_time = 2; + optional uint32 duration = 3; + optional .DOTA_GameMode game_mode = 4 [default = DOTA_GAMEMODE_NONE]; + repeated .CMsgDOTAMatchMinimal.Player players = 6; + optional .CMsgDOTAMatchMinimal.Tourney tourney = 7; + optional .EMatchOutcome match_outcome = 8 [default = k_EMatchOutcome_Unknown]; + optional uint32 radiant_score = 9; + optional uint32 dire_score = 10; + optional uint32 lobby_type = 11; + optional bool is_player_draft = 12; +} + +message CMsgConsumableUsage { + optional uint32 item_def = 1; + optional int32 quantity_change = 2; +} + +message CMsgMatchConsumableUsage { + message PlayerUsage { + optional uint32 account_id = 1; + repeated .CMsgConsumableUsage consumables_used = 2; + } + + repeated .CMsgMatchConsumableUsage.PlayerUsage player_consumables_used = 1; +} + +message CMsgMatchEventActionGrants { + message PlayerGrants { + optional uint32 account_id = 1; + repeated .CMsgPendingEventAward actions_granted = 3; + } + + repeated .CMsgMatchEventActionGrants.PlayerGrants player_grants = 1; +} + +message CMsgCustomGameWhitelist { + optional uint32 version = 1; + repeated uint64 custom_games_whitelist = 2; + optional bool disable_whitelist = 3; +} + +message CMsgCustomGameWhitelistForEdit { + message WhitelistEntry { + optional uint64 custom_game_id = 1; + optional .ECustomGameWhitelistState whitelist_state = 2 [default = CUSTOM_GAME_WHITELIST_STATE_UNKNOWN]; + } + + repeated .CMsgCustomGameWhitelistForEdit.WhitelistEntry whitelist_entries = 1; +} + +message CMsgPlayerRecentMatchInfo { + optional uint64 match_id = 1; + optional uint32 timestamp = 2; + optional uint32 duration = 3; + optional bool win = 4; + optional int32 hero_id = 5; + optional uint32 kills = 6; + optional uint32 deaths = 7; + optional uint32 assists = 8; +} + +message CMsgPlayerMatchRecord { + optional uint32 wins = 1; + optional uint32 losses = 2; +} + +message CMsgPlayerRecentMatchOutcomes { + optional uint32 outcomes = 1; + optional uint32 match_count = 2; +} + +message CMsgPlayerRecentCommends { + optional uint32 commends = 1; + optional uint32 match_count = 2; +} + +message CMsgPlayerRecentAccomplishments { + optional .CMsgPlayerRecentMatchOutcomes recent_outcomes = 1; + optional .CMsgPlayerMatchRecord total_record = 2; + optional uint32 prediction_streak = 3; + optional uint32 plus_prediction_streak = 4; + optional .CMsgPlayerRecentCommends recent_commends = 5; + optional uint32 first_match_timestamp = 6; + optional .CMsgPlayerRecentMatchInfo last_match = 7; + optional .CMsgPlayerRecentMatchOutcomes recent_mvps = 8; +} + +message CMsgPlayerHeroRecentAccomplishments { + optional .CMsgPlayerRecentMatchOutcomes recent_outcomes = 1; + optional .CMsgPlayerMatchRecord total_record = 2; + optional .CMsgPlayerRecentMatchInfo last_match = 3; +} + +message CMsgRecentAccomplishments { + optional .CMsgPlayerRecentAccomplishments player_accomplishments = 1; + optional .CMsgPlayerHeroRecentAccomplishments hero_accomplishments = 2; +} + +message CMsgServerToGCRequestPlayerRecentAccomplishments { + optional uint32 account_id = 1; + optional int32 hero_id = 2; +} + +message CMsgServerToGCRequestPlayerRecentAccomplishmentsResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + } + + optional .CMsgServerToGCRequestPlayerRecentAccomplishmentsResponse.EResponse result = 1 [default = k_eInternalError]; + optional .CMsgRecentAccomplishments player_accomplishments = 2; +} + +message CMsgArcanaVoteMatchVotes { + optional uint32 match_id = 1; + optional int32 hero_id = 2; + optional uint32 vote_count = 3; +} + +message CMsgGCtoGCAssociatedExploiterAccountInfo { + optional uint32 account_id = 1; + optional uint32 num_matches_to_search = 2; + optional uint32 min_shared_match_count = 3; + optional uint32 num_additional_players = 4; +} + +message CMsgGCtoGCAssociatedExploiterAccountInfoResponse { + message Account { + optional uint32 account_id = 1; + optional uint32 num_common_matches = 2; + optional uint32 earliest_common_match = 3; + optional uint32 latest_common_match = 4; + optional uint32 generation = 5; + optional string persona = 6; + optional bool already_banned = 7; + } + + repeated .CMsgGCtoGCAssociatedExploiterAccountInfoResponse.Account accounts = 1; +} + +message CMsgPullTabsData { + message Slot { + optional uint32 event_id = 1; + optional uint32 board_id = 2; + optional int32 hero_id = 3; + optional uint32 action_id = 4; + optional bool redeemed = 5; + } + + message Jackpot { + optional uint32 board_id = 1; + optional uint32 action_id = 2; + optional int32 hero_id = 3; + } + + repeated .CMsgPullTabsData.Slot slots = 1; + repeated .CMsgPullTabsData.Jackpot jackpots = 2; + optional uint32 last_board = 3; +} + +message CMsgUnderDraftData { + message BenchSlot { + optional uint32 slot_id = 1; + optional int32 hero_id = 2; + optional uint32 stars = 3; + } + + message ShopSlot { + optional uint32 slot_id = 1; + optional int32 hero_id = 2; + optional bool is_special_reward = 3; + } + + repeated .CMsgUnderDraftData.BenchSlot bench_slots = 1; + repeated .CMsgUnderDraftData.ShopSlot shop_slots = 2; + optional uint32 gold = 3; + optional uint32 total_gold = 4; + optional bool not_restorable = 5; +} + +message CMsgPlayerTitleData { + repeated uint32 title = 1; + repeated uint32 event_id = 2; + optional uint32 active = 3; +} + +message CMsgDOTATriviaQuestion { + optional uint32 question_id = 1; + optional .EDOTATriviaQuestionCategory category = 2 [default = k_EDOTATriviaQuestionCategory_AbilityIcon]; + optional uint32 timestamp = 3; + optional string question_value = 4; + repeated string answer_values = 5; + optional uint32 correct_answer_index = 6; +} + +message CMsgDOTATriviaQuestionAnswersSummary { + optional bool summary_available = 1; + repeated uint32 picked_count = 2; +} + +message CMsgGameDataSpecialValueBonus { + optional string name = 1; + optional float value = 2; + optional uint32 operation = 3; +} + +message CMsgGameDataSpecialValues { + optional string name = 1; + repeated float values_float = 2; + optional bool is_percentage = 4; + optional string heading_loc = 5; + repeated .CMsgGameDataSpecialValueBonus bonuses = 6; + repeated float values_shard = 7; + repeated float values_scepter = 8; + optional .CMsgGameDataFacetAbilityBonus facet_bonus = 9; + optional string required_facet = 10; +} + +message CMsgGameDataFacetAbilityBonus { + optional string name = 1; + repeated float values = 2; + optional uint32 operation = 3; +} + +message CMsgGameDataAbilityOrItem { + optional int32 id = 1 [default = -1]; + optional string name = 2; + optional string name_loc = 5; + optional string desc_loc = 6; + optional string lore_loc = 7; + repeated string notes_loc = 8; + optional string shard_loc = 9; + optional string scepter_loc = 10; + repeated string facets_loc = 11; + optional uint32 type = 20; + optional uint64 behavior = 21; + optional uint32 target_team = 22; + optional uint32 target_type = 23; + optional uint32 flags = 24; + optional uint32 damage = 25; + optional uint32 immunity = 26; + optional uint32 dispellable = 27; + optional uint32 max_level = 28; + repeated uint32 cast_ranges = 30; + repeated float cast_points = 31; + repeated float channel_times = 32; + repeated float cooldowns = 33; + repeated float durations = 34; + repeated uint32 damages = 35; + repeated uint32 mana_costs = 36; + repeated uint32 gold_costs = 37; + repeated uint32 health_costs = 38; + repeated .CMsgGameDataSpecialValues special_values = 40; + optional bool is_item = 50; + optional bool ability_has_scepter = 60; + optional bool ability_has_shard = 61; + optional bool ability_is_granted_by_scepter = 62; + optional bool ability_is_granted_by_shard = 63; + optional bool ability_is_innate = 64; + optional uint32 item_cost = 70; + optional uint32 item_initial_charges = 71; + optional uint32 item_neutral_tier = 72; + optional uint32 item_stock_max = 73; + optional float item_stock_time = 74; + optional uint32 item_quality = 85; +} + +message CMsgGameDataAbilityOrItemList { + repeated .CMsgGameDataAbilityOrItem abilities = 1; +} + +message CMsgGameDataHero { + message Facet { + optional uint32 color = 1; + optional string title_loc = 2; + optional string description_loc = 3; + optional string name = 4; + optional string icon = 5; + optional int32 gradient_id = 6; + optional uint32 index = 7; + } + + optional int32 id = 1; + optional string name = 2; + optional uint32 order_id = 3; + optional string name_loc = 5; + optional string bio_loc = 6; + optional string hype_loc = 7; + optional string npe_desc_loc = 8; + repeated .CMsgGameDataHero.Facet facets = 43; + optional uint32 str_base = 10; + optional float str_gain = 11; + optional uint32 agi_base = 12; + optional float agi_gain = 13; + optional uint32 int_base = 14; + optional float int_gain = 15; + optional uint32 primary_attr = 20; + optional uint32 complexity = 21; + optional uint32 attack_capability = 22; + repeated uint32 role_levels = 23; + optional int32 damage_min = 24; + optional int32 damage_max = 25; + optional float attack_rate = 26; + optional uint32 attack_range = 27; + optional uint32 projectile_speed = 28; + optional float armor = 29; + optional uint32 magic_resistance = 30; + optional uint32 movement_speed = 31; + optional float turn_rate = 32; + optional uint32 sight_range_day = 33; + optional uint32 sight_range_night = 34; + optional uint32 max_health = 35; + optional float health_regen = 36; + optional uint32 max_mana = 37; + optional float mana_regen = 38; + repeated .CMsgGameDataAbilityOrItem abilities = 40; + repeated .CMsgGameDataAbilityOrItem talents = 41; + repeated .CMsgGameDataAbilityOrItemList facet_abilities = 42; +} + +message CMsgGameDataAbilities { + repeated .CMsgGameDataAbilityOrItem abilities = 1; +} + +message CMsgGameDataItems { + repeated .CMsgGameDataAbilityOrItem items = 1; +} + +message CMsgGameDataHeroes { + repeated .CMsgGameDataHero heroes = 1; +} + +message CMsgGameDataHeroList { + message HeroInfo { + optional int32 id = 1; + optional string name = 2; + optional string name_loc = 3; + optional string name_english_loc = 4; + optional uint32 primary_attr = 5; + optional uint32 complexity = 6; + } + + repeated .CMsgGameDataHeroList.HeroInfo heroes = 1; +} + +message CMsgGameDataItemAbilityList { + message ItemAbilityInfo { + message Recipe { + repeated int32 items = 1; + } + + optional int32 id = 1 [default = -1]; + optional string name = 2; + optional string name_loc = 3; + optional string name_english_loc = 4; + optional int32 neutral_item_tier = 5; + optional bool is_pregame_suggested = 6; + optional bool is_earlygame_suggested = 7; + optional bool is_lategame_suggested = 8; + repeated .CMsgGameDataItemAbilityList.ItemAbilityInfo.Recipe recipes = 9; + } + + repeated .CMsgGameDataItemAbilityList.ItemAbilityInfo itemabilities = 1; +} + +message CMsgLobbyAbilityDraftData { + optional bool shuffle_draft_order = 1; +} + +message CSOEconItemDropRateBonus { + optional uint32 account_id = 1 [(key_field) = true]; + optional fixed32 expiration_date = 2; + optional float bonus = 3 [(key_field) = true]; + optional uint32 bonus_count = 4; + optional uint64 item_id = 5; + optional uint32 def_index = 6; + optional uint32 seconds_left = 7; + optional uint32 booster_type = 8 [(key_field) = true]; +} + +message CSOEconItemTournamentPassport { + optional uint32 account_id = 1; + optional uint32 league_id = 2; + optional uint64 item_id = 3; + optional uint32 original_purchaser_id = 4; + optional uint32 passports_bought = 5; + optional uint32 version = 6; + optional uint32 def_index = 7; + optional uint32 reward_flags = 8; +} + +message CMsgStickerbookSticker { + optional uint32 item_def_id = 1; + optional uint32 sticker_num = 2; + optional uint32 quality = 3; + optional float position_x = 4; + optional float position_y = 5; + optional float position_z = 8; + optional float rotation = 6; + optional float scale = 7; + optional uint64 source_item_id = 9; + optional uint32 depth_bias = 10; +} + +message CMsgStickerbookPage { + optional uint32 page_num = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; + optional uint32 team_id = 3; + repeated .CMsgStickerbookSticker stickers = 4; + optional .EStickerbookPageType page_type = 5 [default = STICKER_PAGE_GENERIC]; +} + +message CMsgStickerbookTeamPageOrderSequence { + repeated uint32 page_numbers = 1; +} + +message CMsgStickerbook { + repeated .CMsgStickerbookPage pages = 1; + optional .CMsgStickerbookTeamPageOrderSequence team_page_order_sequence = 2; + optional uint32 favorite_page_num = 3; +} + +message CMsgStickerHero { + optional int32 hero_id = 1; + optional uint32 item_def_id = 2; + optional uint32 quality = 3; + optional uint64 source_item_id = 4; +} + +message CMsgStickerHeroes { + repeated .CMsgStickerHero heroes = 1; +} + +message CMsgHeroRoleStats { + optional uint32 lane_selection_flags = 1; + optional uint32 match_count = 2; + optional uint32 win_count = 3; +} + +message CMsgHeroRoleHeroStats { + optional int32 hero_id = 1; + repeated .CMsgHeroRoleStats role_stats = 2; +} + +message CMsgHeroRoleRankStats { + optional uint32 rank_tier = 1; + repeated .CMsgHeroRoleHeroStats hero_stats = 2; +} + +message CMsgHeroRoleAllRanksStats { + optional uint32 start_timestamp = 1; + optional uint32 end_timestamp = 2; + repeated .CMsgHeroRoleRankStats rank_stats = 3; +} + +message CMsgMapStatsSnapshot { + optional uint32 timestamp = 1; + optional uint64 lotuses_gained = 2; + optional uint64 wisdom_runes_gained = 3; + optional uint64 roshan_kills_day = 4; + optional uint64 roshan_kills_night = 5; + optional uint64 portals_used = 6; + optional uint64 watchers_taken = 7; + optional uint64 tormentor_kills = 8; + optional uint64 outposts_captured = 9; + optional uint64 shield_runes_gained = 10; +} + +message CMsgGlobalMapStats { + optional .CMsgMapStatsSnapshot current = 1; + optional .CMsgMapStatsSnapshot window_start = 2; + optional .CMsgMapStatsSnapshot window_end = 3; +} + +message CMsgTrackedStat { + optional uint32 tracked_stat_id = 1; + optional int32 tracked_stat_value = 2; +} + +message CMsgDOTAClaimEventActionResponse { + message MysteryItemRewardData { + optional uint32 item_def = 1; + optional uint32 item_category = 2; + } + + message LootListRewardData { + repeated uint32 item_def = 1; + } + + message ActionListRewardData { + optional uint32 action_id = 1; + optional bytes result_reward_data = 2; + } + + message OverworldTokenRewardData { + message TokenQuantity { + optional uint32 token_id = 1; + optional uint32 token_count = 2; + } + + repeated .CMsgDOTAClaimEventActionResponse.OverworldTokenRewardData.TokenQuantity tokens = 1; + } + + message MonsterHunterMaterialRewardData { + message MaterialQuantity { + optional uint32 material_id = 1; + optional uint32 material_count = 2; + } + + repeated .CMsgDOTAClaimEventActionResponse.MonsterHunterMaterialRewardData.MaterialQuantity materials = 1; + } + + message GrantedRewardData { + optional uint32 grant_index = 1; + optional uint32 score_index = 2; + optional uint32 reward_index = 3; + optional bytes reward_data = 4; + optional uint32 action_id = 5; + } + + enum ResultCode { + Success = 0; + InvalidEvent = 1; + EventNotActive = 2; + InvalidAction = 3; + ServerError = 4; + InsufficientPoints = 5; + InsufficentLevel = 6; + AlreadyClaimed = 7; + SDOLockFailure = 8; + SDOLoadFailure = 9; + EventNotOwned = 10; + Timeout = 11; + RequiresPlusSubscription = 12; + InvalidItem = 13; + AsyncRewards = 14; + } + + optional .CMsgDOTAClaimEventActionResponse.ResultCode result = 1 [default = Success]; + repeated .CMsgDOTAClaimEventActionResponse.GrantedRewardData reward_results = 2; + optional uint32 action_id = 3; +} + +message CMsgClientToGCDotaLabsFeedback { + optional uint32 language = 1; + optional uint32 feedback_item = 2; + optional string feedback = 3; +} + +message CMsgClientToGCDotaLabsFeedbackResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + k_eInvalidItem = 6; + } + + optional .CMsgClientToGCDotaLabsFeedbackResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CDotaMsg_PredictionResult { + message Prediction { + enum EResult { + k_eResult_ItemGranted = 1; + k_eResult_Destroyed = 2; + } + + optional uint32 item_def = 1; + optional uint32 num_correct = 2; + optional uint32 num_fails = 3; + optional .CDotaMsg_PredictionResult.Prediction.EResult result = 4 [default = k_eResult_ItemGranted]; + repeated uint32 granted_item_defs = 6; + } + + optional uint32 account_id = 1; + optional uint64 match_id = 2; + optional bool correct = 3; + repeated .CDotaMsg_PredictionResult.Prediction predictions = 4; +} + +message CDotaMsgStructuredTooltipProperties { + message AttributeValueValue { + optional float value = 1; + optional bool is_active_value = 2; + } + + message AttributeValue_Single { + optional .CDotaMsgStructuredTooltipProperties.AttributeValueValue single_value = 1; + } + + message AttributeValue_Variable { + repeated .CDotaMsgStructuredTooltipProperties.AttributeValueValue values = 1; + } + + message AttributeValue_Delta { + optional .CDotaMsgStructuredTooltipProperties.AttributeValueValue prev = 1; + optional .CDotaMsgStructuredTooltipProperties.AttributeValueValue next = 2; + } + + message AttributeValue { + oneof attr_value { + .CDotaMsgStructuredTooltipProperties.AttributeValue_Single single = 1; + .CDotaMsgStructuredTooltipProperties.AttributeValue_Variable variable = 2; + .CDotaMsgStructuredTooltipProperties.AttributeValue_Delta delta = 3; + } + } + + message FacetDisplayProperties { + optional string facet_name_loc_token = 1; + optional string facet_desc_loc_token = 2; + optional string facet_icon_style_name = 3; + optional string facet_color_style_name = 4; + optional string facet_gradient_style_name = 5; + } + + message Attribute { + optional string name_loc_token = 1; + optional .CDotaMsgStructuredTooltipProperties.EAttributeType type = 2 [default = kUnknown]; + optional .CDotaMsgStructuredTooltipProperties.AttributeValue value = 3; + optional .CDotaMsgStructuredTooltipProperties.FacetDisplayProperties facet = 4; + } + + message AttributeGroupDesc_Basic { + } + + message AttributeGroupDesc_Specific { + optional string title_loc_token = 1; + optional string desc_loc_token = 2; + } + + message AttributeGroupDesc_Facet { + optional .CDotaMsgStructuredTooltipProperties.FacetDisplayProperties facet = 1; + } + + message AttributeGroupDescription { + oneof attr_group_desc { + .CDotaMsgStructuredTooltipProperties.AttributeGroupDesc_Basic basic = 1; + .CDotaMsgStructuredTooltipProperties.AttributeGroupDesc_Specific specific = 2; + .CDotaMsgStructuredTooltipProperties.AttributeGroupDesc_Facet facet = 3; + } + } + + message AttributeGroup { + optional .CDotaMsgStructuredTooltipProperties.AttributeGroupDescription desc = 1; + repeated .CDotaMsgStructuredTooltipProperties.Attribute attributes = 2; + } + + message ContentChunk_AttributeGroup { + repeated .CDotaMsgStructuredTooltipProperties.AttributeGroup groups = 1; + } + + message TooltipContentChunk { + oneof content_chunk { + .CDotaMsgStructuredTooltipProperties.ContentChunk_AttributeGroup attribute_group = 1; + } + } + + message SummaryDescriptionEmbedValue { + optional string name = 1; + optional .CDotaMsgStructuredTooltipProperties.EAttributeType type = 2 [default = kUnknown]; + optional .CDotaMsgStructuredTooltipProperties.AttributeValue value = 3; + } + + enum EAttributeType { + kUnknown = 0; + kDuration = 1; + kManaCost = 2; + kHealthCost = 3; + kCastRange = 4; + kAreaOfEffectRadius = 5; + kPhysicalDamage = 6; + kMagicalDamage = 7; + kPureDamage = 8; + kCooldown = 9; + kDebuffPercentage = 10; + kDebuffValue = 11; + kBuffPercentage = 12; + kBuffValue = 13; + } + + optional string ability_name_loc_token = 1; + optional string ability_category_loc_token = 2; + optional int32 ability_level = 3; + optional int32 current_mana_cost = 4; + optional int32 current_health_cost = 5; + optional float current_cooldown = 6; + optional string summary_description_loc_token = 7; + optional string summary_description_level_up_loc_token = 8; + repeated .CDotaMsgStructuredTooltipProperties.SummaryDescriptionEmbedValue summary_description_embed_values = 9; + optional .CDotaMsgStructuredTooltipProperties.FacetDisplayProperties summary_description_facet = 10; + repeated .CDotaMsgStructuredTooltipProperties.TooltipContentChunk chunks = 20; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_craftworks.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_craftworks.proto new file mode 100644 index 00000000..1fa00a8c --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_craftworks.proto @@ -0,0 +1,30 @@ +import "in/dragonbra/javasteam/protobufs/dota2/steammessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_shared_enums.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/gcsdk_gcmessages.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum ECraftworksAuditAction { + k_eInvalid = 0; + k_eRecipeCrafted = 1; + k_eMatchRewards = 2; + k_eMatchRewardsTurbo = 3; +} + +message CMsgCraftworksComponents { + message ComponentQuantitiesEntry { + optional uint32 key = 1; + optional uint32 value = 2; + } + + repeated .CMsgCraftworksComponents.ComponentQuantitiesEntry component_quantities = 1; +} + +message CMsgCraftworksQuestReward { + optional uint32 quest_id = 1; + optional .CMsgCraftworksComponents reward_components = 2; + optional uint32 stat_value = 3; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_league.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_league.proto new file mode 100644 index 00000000..5a2b3b6e --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_league.proto @@ -0,0 +1,358 @@ +import "in/dragonbra/javasteam/protobufs/dota2/dota_shared_enums.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum ELeagueNodeGroupType { + INVALID_GROUP_TYPE = 0; + ORGANIZATIONAL = 1; + ROUND_ROBIN = 2; + SWISS = 3; + BRACKET_SINGLE = 4; + BRACKET_DOUBLE_SEED_LOSER = 5; + BRACKET_DOUBLE_ALL_WINNER = 6; + SHOWMATCH = 7; + GSL = 8; + PLACEMENT = 9; +} + +enum ELeagueNodeType { + INVALID_NODE_TYPE = 0; + BEST_OF_ONE = 1; + BEST_OF_THREE = 2; + BEST_OF_FIVE = 3; + BEST_OF_TWO = 4; +} + +message CMsgDOTALeagueNode { + message MatchDetails { + optional uint64 match_id = 1; + optional uint32 winning_team_id = 2; + } + + message VOD { + optional uint32 series_game = 1; + optional uint32 stream_id = 2; + optional string url = 3; + } + + optional string name = 1; + optional uint32 node_id = 2; + optional uint32 node_group_id = 3; + optional uint32 winning_node_id = 4; + optional uint32 losing_node_id = 5; + optional uint32 incoming_node_id_1 = 6; + optional uint32 incoming_node_id_2 = 7; + optional .ELeagueNodeType node_type = 8 [default = INVALID_NODE_TYPE]; + optional uint32 scheduled_time = 9; + optional uint32 actual_time = 19; + optional uint32 series_id = 10; + optional uint32 team_id_1 = 11; + optional uint32 team_id_2 = 12; + repeated .CMsgDOTALeagueNode.MatchDetails matches = 13; + optional uint32 team_1_wins = 14; + optional uint32 team_2_wins = 15; + optional bool has_started = 16; + optional bool is_completed = 17; + repeated uint32 stream_ids = 18; + repeated .CMsgDOTALeagueNode.VOD vods = 20; +} + +message CMsgDOTALeagueNodeGroup { + message TeamStanding { + optional uint32 standing = 1; + optional uint32 team_id = 2; + optional string team_name = 3; + optional string team_tag = 4; + optional uint64 team_logo = 5; + optional string team_logo_url = 6; + optional uint32 wins = 7; + optional uint32 losses = 8; + optional int64 score = 9; + optional string team_abbreviation = 10; + optional bool is_pro = 14; + optional uint32 tiebreak_game_win_pct = 15; + optional uint32 tiebreak_opponent_match_wins = 16; + optional uint32 tiebreak_opponent_game_win_pct = 17; + optional uint32 tiebreak_coinflip = 18; + } + + optional string name = 1; + optional uint32 node_group_id = 2; + optional uint32 parent_node_group_id = 3; + repeated uint32 incoming_node_group_ids = 4; + optional uint32 advancing_node_group_id = 5; + optional uint32 advancing_team_count = 6; + optional uint32 team_count = 7; + optional .ELeagueNodeGroupType node_group_type = 8 [default = INVALID_GROUP_TYPE]; + optional .ELeagueNodeType default_node_type = 9 [default = INVALID_NODE_TYPE]; + optional uint32 round = 10; + optional uint32 max_rounds = 11; + optional uint32 win_loss_limit = 27; + optional bool is_tiebreaker = 12; + optional bool is_final_group = 13; + optional bool is_completed = 14; + optional .ELeaguePhase phase = 18 [default = LEAGUE_PHASE_UNSET]; + optional .ELeagueRegion region = 19 [default = LEAGUE_REGION_UNSET]; + optional uint32 start_time = 20; + optional uint32 end_time = 21; + optional uint32 secondary_advancing_node_group_id = 22; + optional uint32 secondary_advancing_team_count = 23; + optional uint32 tertiary_advancing_node_group_id = 24; + optional uint32 tertiary_advancing_team_count = 25; + optional uint32 elimination_dpc_points = 26; + repeated .CMsgDOTALeagueNodeGroup.TeamStanding team_standings = 15; + repeated .CMsgDOTALeagueNode nodes = 16; + repeated .CMsgDOTALeagueNodeGroup node_groups = 17; +} + +message CMsgDOTALeague { + message Info { + optional uint32 league_id = 1; + optional string name = 2; + optional .ELeagueTier tier = 3 [default = LEAGUE_TIER_UNSET]; + optional .ELeagueRegion region = 4 [default = LEAGUE_REGION_UNSET]; + optional string url = 5; + optional string description = 6; + optional string notes = 7; + optional uint32 start_timestamp = 8; + optional uint32 end_timestamp = 9; + optional uint32 pro_circuit_points = 10; + optional uint32 image_bits = 11; + optional .ELeagueStatus status = 12 [default = LEAGUE_STATUS_UNSET]; + optional uint32 most_recent_activity = 13; + optional uint32 registration_period = 14; + } + + message Admin { + optional uint32 account_id = 1; + optional bool is_primary = 2; + optional string email_address = 3; + } + + message PrizePoolItem { + optional uint32 item_def = 1; + optional uint32 sales_stop_timestamp = 2; + optional uint32 revenue_pct = 3; + optional uint32 revenue_cents_per_sale = 4; + } + + message PrizePool { + optional uint32 base_prize_pool = 1; + optional uint32 total_prize_pool = 2; + repeated uint32 prize_split_pct_x100 = 3; + repeated .CMsgDOTALeague.PrizePoolItem prize_pool_items = 4; + } + + message Stream { + optional uint32 stream_id = 1; + optional uint32 language = 2; + optional string name = 3; + optional .ELeagueBroadcastProvider broadcast_provider = 4 [default = LEAGUE_BROADCAST_UNKNOWN]; + optional string stream_url = 5; + optional string vod_url = 6; + } + + message SeriesInfo { + optional uint32 series_id = 1; + optional uint32 series_type = 2; + optional uint32 start_time = 3; + repeated uint64 match_ids = 4; + optional uint32 team_id_1 = 5; + optional uint32 team_id_2 = 6; + } + + message Player { + optional uint32 account_id = 1; + optional string name = 2; + optional uint32 team_id = 3; + } + + optional .CMsgDOTALeague.Info info = 1; + optional .CMsgDOTALeague.PrizePool prize_pool = 2; + repeated .CMsgDOTALeague.Admin admins = 3; + repeated .CMsgDOTALeague.Stream streams = 4; + repeated .CMsgDOTALeagueNodeGroup node_groups = 5; + repeated .CMsgDOTALeague.SeriesInfo series_infos = 6; + repeated .CMsgDOTALeague.Player registered_players = 7; +} + +message CMsgDOTALeagueList { + repeated .CMsgDOTALeague leagues = 1; +} + +message CMsgDOTALeagueInfo { + optional uint32 league_id = 1; + optional string name = 2; + optional .ELeagueTier tier = 3 [default = LEAGUE_TIER_UNSET]; + optional .ELeagueRegion region = 4 [default = LEAGUE_REGION_UNSET]; + optional uint32 most_recent_activity = 5; + optional uint32 total_prize_pool = 6; + optional uint32 start_timestamp = 7; + optional uint32 end_timestamp = 8; + optional uint32 status = 9; +} + +message CMsgDOTALeagueInfoList { + repeated .CMsgDOTALeagueInfo infos = 1; +} + +message CMsgDOTALeagueLiveGames { + message LiveGame { + optional uint32 league_id = 1; + optional uint64 server_steam_id = 2; + optional string radiant_name = 3; + optional uint64 radiant_logo = 4; + optional uint32 radiant_team_id = 9; + optional string dire_name = 5; + optional uint64 dire_logo = 6; + optional uint32 dire_team_id = 10; + optional uint32 time = 7; + optional uint32 spectators = 8; + optional uint32 league_node_id = 11; + optional uint32 series_id = 12; + optional uint64 match_id = 13; + } + + repeated .CMsgDOTALeagueLiveGames.LiveGame games = 1; +} + +message CMsgDOTALeagueMessages { + message Message { + optional uint32 author_account_id = 1; + optional uint32 timestamp = 2; + optional string message = 3; + } + + repeated .CMsgDOTALeagueMessages.Message messages = 1; +} + +message CMsgDOTALeaguePrizePool { + optional uint32 prize_pool = 1; + optional float increment_per_second = 2; +} + +message CMsgDOTALeagueInfoListAdminsRequest { +} + +message CMsgDOTALeagueAvailableLobbyNodesRequest { + optional uint32 league_id = 1; +} + +message CMsgDOTALeagueAvailableLobbyNodes { + message NodeInfo { + optional uint32 node_id = 1; + optional string node_name = 2; + optional string node_group_name = 3; + optional uint32 team_id_1 = 4; + optional uint32 team_id_2 = 5; + } + + repeated .CMsgDOTALeagueAvailableLobbyNodes.NodeInfo node_infos = 1; +} + +message CMsgDOTALeagueNodeResults { + message Result { + optional uint32 node_id = 1; + optional uint32 winning_node_id = 2; + optional uint32 losing_node_id = 3; + optional uint32 incoming_node_id_1 = 4; + optional uint32 incoming_node_id_2 = 5; + optional uint32 team_id_1 = 6; + optional uint32 team_id_2 = 7; + optional string team_1_name = 8; + optional string team_2_name = 9; + optional uint32 team_1_wins = 10; + optional uint32 team_2_wins = 11; + optional uint32 winning_team_id = 12; + optional uint32 losing_team_id = 13; + optional bool has_started = 14; + optional bool is_completed = 15; + optional uint32 scheduled_time = 16; + repeated uint64 match_ids = 17; + } + + repeated .CMsgDOTALeagueNodeResults.Result node_results = 1; +} + +message CMsgDOTADPCLeagueResults { + message Result { + optional uint32 standing = 1; + optional uint32 team_id = 2; + optional string team_name = 3; + optional uint64 team_logo = 4; + optional string team_logo_url = 5; + optional uint32 points = 6; + optional uint32 earnings = 7; + optional uint32 timestamp = 8; + optional .ELeaguePhase phase = 9 [default = LEAGUE_PHASE_UNSET]; + optional string team_abbreviation = 10; + } + + repeated .CMsgDOTADPCLeagueResults.Result results = 1; + repeated uint32 points = 2; + repeated uint32 dollars = 3; +} + +message CMsgDOTADPCTeamResults { + message Result { + optional uint32 league_id = 1; + optional uint32 standing = 2; + optional uint32 points = 3; + optional uint32 earnings = 4; + optional uint32 timestamp = 5; + } + + repeated .CMsgDOTADPCTeamResults.Result results = 1; +} + +message CMsgDOTADPCSeasonResults { + message TeamLeagueResult { + optional uint32 timestamp = 1; + optional uint32 league_id = 2; + optional uint32 standing = 3; + optional uint32 points = 4; + optional uint32 earnings = 5; + optional uint32 audit_action = 6; + optional uint32 audit_data = 7; + } + + message TeamResult { + optional uint32 team_id = 1; + optional string team_name = 2; + optional string team_abbreviation = 8; + optional uint64 team_logo = 3; + optional string team_logo_url = 4; + optional uint32 total_points = 5; + optional uint32 total_earnings = 6; + repeated .CMsgDOTADPCSeasonResults.TeamLeagueResult league_results = 7; + } + + message StandingEntry { + optional uint32 team_id = 1; + optional uint32 wins = 2; + optional uint32 losses = 3; + optional string team_url = 4; + optional string team_name = 5; + optional string team_abbreviation = 6; + } + + message Standing { + optional .ELeagueRegion region = 1 [default = LEAGUE_REGION_UNSET]; + optional .ELeagueDivision division = 2 [default = LEAGUE_DIVISION_UNSET]; + repeated .CMsgDOTADPCSeasonResults.StandingEntry entries = 3; + } + + repeated .CMsgDOTADPCSeasonResults.TeamResult results = 1; + repeated .CMsgDOTADPCSeasonResults.Standing standings = 2; + repeated .CMsgDOTADPCSeasonResults.StandingEntry major_wildcard_standings = 3; + repeated .CMsgDOTADPCSeasonResults.StandingEntry major_group_standings = 4; + repeated .CMsgDOTADPCSeasonResults.StandingEntry major_playoff_standings = 5; +} + +message CMsgDOTADPCSeasonSpoilerResults { + optional uint32 time_last_updated = 1; + optional .CMsgDOTADPCSeasonResults saved_results = 2; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_lobby.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_lobby.proto new file mode 100644 index 00000000..0c7e119e --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_lobby.proto @@ -0,0 +1,399 @@ +import "in/dragonbra/javasteam/protobufs/dota2/steammessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_shared_enums.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/gcsdk_gcmessages.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum ELobbyMemberCoachRequestState { + k_eLobbyMemberCoachRequestState_None = 0; + k_eLobbyMemberCoachRequestState_Accepted = 1; + k_eLobbyMemberCoachRequestState_Rejected = 2; +} + +enum LobbyDotaTVDelay { + LobbyDotaTV_10 = 0; + LobbyDotaTV_120 = 1; + LobbyDotaTV_300 = 2; + LobbyDotaTV_900 = 3; +} + +enum LobbyDotaPauseSetting { + LobbyDotaPauseSetting_Unlimited = 0; + LobbyDotaPauseSetting_Limited = 1; + LobbyDotaPauseSetting_Disabled = 2; +} + +message CMsgLobbyCoachFriendRequest { + optional uint32 coach_account_id = 1; + optional uint32 player_account_id = 2; + optional .ELobbyMemberCoachRequestState request_state = 3 [default = k_eLobbyMemberCoachRequestState_None]; +} + +message CMsgLobbyPlayerPlusSubscriptionData { + message HeroBadge { + optional int32 hero_id = 1; + optional uint32 hero_badge_xp = 2; + } + + repeated .CMsgLobbyPlayerPlusSubscriptionData.HeroBadge hero_badges = 1; +} + +message CMsgEventActionData { + optional uint32 action_id = 1; + optional uint32 action_score = 2; +} + +message CMsgPeriodicResourceData { + optional uint32 periodic_resource_id = 1; + optional uint32 remaining = 2; + optional uint32 max = 3; +} + +message CMsgLobbyEventPoints { + message AccountPoints { + optional uint32 account_id = 1; + optional uint32 normal_points = 2; + optional uint32 premium_points = 3; + optional bool owned = 4; + optional uint32 event_level = 7; + optional uint64 active_effects_mask = 12; + optional uint32 wager_streak = 23; + repeated .CMsgEventActionData event_game_custom_actions = 25; + optional uint32 tip_amount_index = 26; + optional uint32 active_event_season_id = 27; + optional uint32 teleport_fx_level = 28; + repeated .CMsgEventActionData networked_event_actions = 30; + repeated .CMsgPeriodicResourceData periodic_resources = 31; + repeated .CExtraMsgBlock extra_event_messages = 32; + } + + optional uint32 event_id = 1; + repeated .CMsgLobbyEventPoints.AccountPoints account_points = 2; +} + +message CMsgLobbyEventGameData { + optional uint32 game_seed = 1; + optional uint32 event_window_start_time = 2; +} + +message CSODOTALobbyInvite { + message LobbyMember { + optional string name = 1; + optional fixed64 steam_id = 2; + } + + optional uint64 group_id = 1 [(key_field) = true]; + optional fixed64 sender_id = 2; + optional string sender_name = 3; + repeated .CSODOTALobbyInvite.LobbyMember members = 4; + optional uint64 custom_game_id = 5; + optional fixed64 invite_gid = 6; + optional fixed64 custom_game_crc = 7; + optional fixed32 custom_game_timestamp = 8; +} + +message CSODOTALobbyMember { + optional fixed64 id = 1 [(key_field) = true]; + optional int32 hero_id = 2; + optional .DOTA_GC_TEAM team = 3 [default = DOTA_GC_TEAM_GOOD_GUYS]; + optional uint32 slot = 7; + optional .DOTALeaverStatus_t leaver_status = 16 [default = DOTA_LEAVER_NONE]; + optional uint32 leaver_actions = 28; + optional .DOTA_GC_TEAM coach_team = 23 [default = DOTA_GC_TEAM_NOTEAM]; + repeated uint32 custom_game_product_ids = 31; + optional .DOTA_GC_TEAM live_spectator_team = 40 [default = DOTA_GC_TEAM_NOTEAM]; + repeated .CMsgPendingEventAward pending_awards = 44; + repeated .CMsgPendingEventAward pending_awards_on_victory = 45; + optional uint32 reports_available = 52; + optional uint32 live_spectator_account_id = 55; + optional uint32 comms_reports_available = 56; +} + +message CSODOTAServerLobbyMember { +} + +message CSODOTAStaticLobbyMember { + optional string name = 1; + optional uint64 party_id = 2; + optional uint32 channel = 3 [default = 6]; + optional bool cameraman = 4; +} + +message CSODOTAServerStaticLobbyMember { + optional fixed64 steam_id = 1; + optional int32 rank_tier = 3; + optional int32 leaderboard_rank = 4 [default = -1]; + optional int32 lane_selection_flags = 5; + optional .EDOTAMMRBoostType rank_mmr_boost_type = 6 [default = k_EDOTAMMRBoostType_None]; + optional int32 coach_rating = 7; + repeated uint32 coached_account_ids = 8; + optional bool was_mvp_last_game = 9; + optional bool can_earn_rewards = 10; + optional bool is_plus_subscriber = 11; + optional uint64 favorite_team_packed = 12; + optional bool is_steam_china = 13; + optional uint32 title = 14; + optional uint32 guild_id = 15; + repeated fixed32 disabled_random_hero_bits = 16; + repeated int32 disabled_hero_id = 17; + repeated int32 enabled_hero_id = 18; + repeated int32 banned_hero_ids = 19; +} + +message CLobbyTeamDetails { + optional string team_name = 1; + optional string team_tag = 3; + optional uint32 team_id = 4; + optional uint64 team_logo = 5; + optional uint64 team_base_logo = 6; + optional uint64 team_banner_logo = 7; + optional bool team_complete = 8; + optional uint32 rank = 15; + optional sint32 rank_change = 16; + optional bool is_home_team = 17; + optional bool is_challenge_match = 18; + optional uint64 challenge_match_token_account = 19; + optional string team_logo_url = 20; + optional string team_abbreviation = 21; +} + +message CLobbyGuildDetails { + optional uint32 guild_id = 1; + optional uint32 guild_primary_color = 2; + optional uint32 guild_secondary_color = 3; + optional uint32 guild_pattern = 4; + optional uint64 guild_logo = 5; + optional uint32 guild_points = 6; + optional uint32 guild_event = 7; + optional uint32 guild_flags = 8; + optional .DOTA_GC_TEAM team_for_guild = 9 [default = DOTA_GC_TEAM_GOOD_GUYS]; + optional string guild_tag = 10; + optional uint32 guild_weekly_percentile = 11; +} + +message CLobbyTimedRewardDetails { + optional uint32 item_def_index = 2; + optional bool is_supply_crate = 3; + optional bool is_timed_drop = 4; + optional uint32 account_id = 5; + optional uint32 origin = 6; +} + +message CLobbyBroadcastChannelInfo { + optional uint32 channel_id = 1; + optional string country_code = 2; + optional string description = 3; + optional string language_code = 4; +} + +message CLobbyGuildChallenge { + optional uint32 guild_id = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; + optional uint32 challenge_instance_id = 3; + optional uint32 challenge_parameter = 4; + optional uint32 challenge_timestamp = 5; + optional uint32 challenge_period_serial = 6; + optional uint32 challenge_progress_at_start = 7; + repeated uint32 eligible_account_ids = 8; +} + +message CDOTALobbyMatchQualityData { + optional uint32 overall_quality = 1; + optional uint32 team_balance = 2; + optional uint32 match_skill_range = 3; + optional uint32 match_behavior = 4; +} + +message CSODOTALobby { + message CExtraMsg { + optional uint32 id = 1; + optional bytes contents = 2; + } + + enum State { + UI = 0; + READYUP = 4; + SERVERSETUP = 1; + RUN = 2; + POSTGAME = 3; + NOTREADY = 5; + SERVERASSIGN = 6; + } + + enum LobbyType { + INVALID = -1; + CASUAL_MATCH = 0; + PRACTICE = 1; + COOP_BOT_MATCH = 4; + COMPETITIVE_MATCH = 7; + WEEKEND_TOURNEY = 9; + LOCAL_BOT_MATCH = 10; + SPECTATOR = 11; + EVENT_MATCH = 12; + NEW_PLAYER_POOL = 14; + FEATURED_GAMEMODE = 15; + AUTOMATED_BOT_ONLY_MATCH = 16; + } + + optional uint64 lobby_id = 1 [(key_field) = true]; + repeated .CSODOTALobbyMember all_members = 120; + repeated uint32 member_indices = 121; + repeated uint32 left_member_indices = 122; + repeated uint32 free_member_indices = 123; + optional fixed64 leader_id = 11; + optional fixed64 server_id = 6 [default = 0]; + optional uint32 game_mode = 3; + repeated fixed64 pending_invites = 10; + optional .CSODOTALobby.State state = 4 [default = UI]; + optional string connect = 5; + optional .CSODOTALobby.LobbyType lobby_type = 12 [default = INVALID]; + optional bool allow_cheats = 13; + optional bool fill_with_bots = 14; + optional string game_name = 16; + repeated .CLobbyTeamDetails team_details = 17; + optional uint32 tournament_id = 19; + optional uint32 tournament_game_id = 20; + optional uint32 server_region = 21 [default = 0]; + optional .DOTA_GameState game_state = 22 [default = DOTA_GAMERULES_STATE_INIT]; + optional uint32 num_spectators = 23; + optional uint32 matchgroup = 25; + optional .DOTA_CM_PICK cm_pick = 28 [default = DOTA_CM_RANDOM]; + optional uint64 match_id = 30; + optional bool allow_spectating = 31 [default = true]; + optional .DOTABotDifficulty bot_difficulty_radiant = 36 [default = BOT_DIFFICULTY_HARD]; + optional string pass_key = 39; + optional uint32 leagueid = 42; + optional uint32 penalty_level_radiant = 43 [default = 0]; + optional uint32 penalty_level_dire = 44 [default = 0]; + optional uint32 series_type = 46; + optional uint32 radiant_series_wins = 47; + optional uint32 dire_series_wins = 48; + optional bool allchat = 51 [default = false]; + optional .LobbyDotaTVDelay dota_tv_delay = 53 [default = LobbyDotaTV_10]; + optional string custom_game_mode = 54; + optional string custom_map_name = 55; + optional uint32 custom_difficulty = 56; + optional bool lan = 57; + repeated .CLobbyBroadcastChannelInfo broadcast_channel_info = 58; + optional uint32 first_leaver_accountid = 59; + optional uint32 series_id = 60; + optional bool low_priority = 61; + repeated .CSODOTALobby.CExtraMsg extra_messages = 62; + optional bool first_blood_happened = 65; + optional .EMatchOutcome match_outcome = 70 [default = k_EMatchOutcome_Unknown]; + optional bool mass_disconnect = 67; + optional uint64 custom_game_id = 68; + optional uint32 custom_min_players = 71; + optional uint32 custom_max_players = 72; + optional .DOTALobbyVisibility visibility = 75 [default = DOTALobbyVisibility_Public]; + optional fixed64 custom_game_crc = 76; + optional bool custom_game_auto_created_lobby = 77; + optional fixed32 custom_game_timestamp = 80; + repeated uint64 previous_series_matches = 81; + optional uint64 previous_match_override = 82; + optional uint32 game_start_time = 87; + optional .LobbyDotaPauseSetting pause_setting = 88 [default = LobbyDotaPauseSetting_Unlimited]; + optional uint32 weekend_tourney_division_id = 90; + optional uint32 weekend_tourney_skill_level = 91; + optional uint32 weekend_tourney_bracket_round = 92; + optional .DOTABotDifficulty bot_difficulty_dire = 93 [default = BOT_DIFFICULTY_HARD]; + optional uint64 bot_radiant = 94; + optional uint64 bot_dire = 95; + repeated .EEvent event_progression_enabled = 96; + optional .DOTASelectionPriorityRules selection_priority_rules = 97 [default = k_DOTASelectionPriorityRules_Manual]; + optional uint32 series_previous_selection_priority_team_id = 98; + optional uint32 series_current_selection_priority_team_id = 99; + optional .DOTASelectionPriorityChoice series_current_priority_team_choice = 100 [default = k_DOTASelectionPriorityChoice_Invalid]; + optional .DOTASelectionPriorityChoice series_current_non_priority_team_choice = 101 [default = k_DOTASelectionPriorityChoice_Invalid]; + optional bool series_current_selection_priority_used_coin_toss = 102; + optional .EEvent current_primary_event = 103 [default = EVENT_ID_NONE]; + optional .EEvent current_primary_event_for_display = 104 [default = EVENT_ID_NONE]; + repeated int32 emergency_disabled_hero_ids = 105; + optional fixed64 custom_game_private_key = 106; + optional bool custom_game_penalties = 107; + optional string lan_host_ping_location = 109; + optional uint32 league_node_id = 110; + optional uint32 match_duration = 111; + optional uint32 league_phase = 113; + optional bool experimental_gameplay_enabled = 116; + repeated .CLobbyGuildChallenge guild_challenges = 117; + repeated .CLobbyGuildDetails guild_details = 118; + repeated int32 requested_hero_ids = 124; + repeated .CMsgLobbyCoachFriendRequest coach_friend_requests = 125; + optional bool is_in_steam_china = 126; + optional bool with_scenario_save = 127; + optional uint32 lobby_creation_time = 128; + optional string event_game_definition = 129; + optional .CDOTALobbyMatchQualityData match_quality_data = 131; + repeated int32 requested_hero_teams = 132; +} + +message CSODOTAServerLobby { + repeated .CSODOTAServerLobbyMember all_members = 1; + repeated .CSODOTALobby.CExtraMsg extra_startup_messages = 2; + optional bool broadcast_active = 3; +} + +message CSODOTAStaticLobby { + repeated .CSODOTAStaticLobbyMember all_members = 1; + optional bool is_player_draft = 2; + optional bool is_last_match_in_series = 3; +} + +message CSODOTAServerStaticLobby { + repeated .CSODOTAServerStaticLobbyMember all_members = 1; + optional float post_patch_strategy_time_buffer = 2; + repeated .CMsgLobbyEventPoints lobby_event_points = 3; + optional string broadcast_url = 4; +} + +message CMsgAdditionalLobbyStartupAccountData { + message ChatWheelMessageRange { + optional uint32 message_id_start = 1 [default = 4294967295]; + optional uint32 message_id_end = 2 [default = 4294967295]; + } + + message PingWheelMessageRange { + optional uint32 message_id_start = 1 [default = 4294967295]; + optional uint32 message_id_end = 2 [default = 4294967295]; + } + + optional uint32 account_id = 1; + optional .CMsgLobbyPlayerPlusSubscriptionData plus_data = 2; + repeated .CMsgAdditionalLobbyStartupAccountData.ChatWheelMessageRange unlocked_chat_wheel_message_ranges = 3; + repeated .CMsgAdditionalLobbyStartupAccountData.PingWheelMessageRange unlocked_ping_wheel_message_ranges = 4; +} + +message CMsgLobbyInitializationComplete { +} + +message CMsgLobbyPlaytestDetails { + optional string json = 1; +} + +message CMsgLocalServerGuildData { + optional uint32 guild_id = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; + optional uint32 guild_points = 3; + optional uint64 guild_logo = 4; + optional uint32 guild_primary_color = 5; + optional uint32 guild_secondary_color = 6; + optional uint32 guild_pattern = 7; + optional uint32 guild_flags = 8; + optional uint32 guild_weekly_percentile = 9; +} + +message CMsgLocalServerFakeLobbyData { + optional uint32 account_id = 1; + repeated .CMsgLobbyEventPoints event_points = 2; + optional bool is_plus_subscriber = 3; + optional uint32 primary_event_id = 4; + optional uint32 favorite_team = 5; + optional uint32 favorite_team_quality = 6; + optional .CMsgLocalServerGuildData guild_info = 7; + optional uint32 teleport_fx_level = 8; + optional .CMsgAdditionalLobbyStartupAccountData additional_data = 9; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_match_management.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_match_management.proto new file mode 100644 index 00000000..0165e1f7 --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_match_management.proto @@ -0,0 +1,507 @@ +import "in/dragonbra/javasteam/protobufs/dota2/steammessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/gcsdk_gcmessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_shared_enums.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum ELaneSelection { + k_ELaneSelection_SAFELANE = 0; + k_ELaneSelection_OFFLANE = 1; + k_ELaneSelection_MIDLANE = 2; + k_ELaneSelection_SUPPORT = 3; + k_ELaneSelection_HARDSUPPORT = 4; +} + +enum ELaneSelectionFlags { + k_ELaneSelectionFlags_SAFELANE = 1; + k_ELaneSelectionFlags_OFFLANE = 2; + k_ELaneSelectionFlags_MIDLANE = 4; + k_ELaneSelectionFlags_SUPPORT = 8; + k_ELaneSelectionFlags_HARDSUPPORT = 16; + k_ELaneSelectionFlagGroup_None = 0; + k_ELaneSelectionFlagGroup_CORE = 7; + k_ELaneSelectionFlagGroup_SUPPORT = 24; + k_ELaneSelectionFlagGroup_ALL = 31; +} + +enum EPartyMatchmakingFlags { + k_EPartyMatchmakingFlags_None = 0; + k_EPartyMatchmakingFlags_LargeRankSpread = 1; +} + +enum EHighPriorityMMState { + k_EHighPriorityMM_Unknown = 0; + k_EHighPriorityMM_MissingMMData = 1; + k_EHighPriorityMM_ResourceMissing = 2; + k_EHighPriorityMM_ManuallyDisabled = 3; + k_EHighPriorityMM_Min_Enabled = 64; + k_EHighPriorityMM_AllRolesSelected = 65; + k_EHighPriorityMM_UsingResource = 66; + k_EHighPriorityMM_FiveStack = 67; + k_EHighPriorityMM_HighDemand = 68; +} + +enum EReadyCheckStatus { + k_EReadyCheckStatus_Unknown = 0; + k_EReadyCheckStatus_NotReady = 1; + k_EReadyCheckStatus_Ready = 2; +} + +enum EReadyCheckRequestResult { + k_EReadyCheckRequestResult_Success = 0; + k_EReadyCheckRequestResult_AlreadyInProgress = 1; + k_EReadyCheckRequestResult_NotInParty = 2; + k_EReadyCheckRequestResult_SendError = 3; + k_EReadyCheckRequestResult_UnknownError = 4; +} + +enum EMatchBehaviorScoreVariance { + k_EMatchBehaviorScoreVariance_Invalid = 0; + k_EMatchBehaviorScoreVariance_Low = 1; + k_EMatchBehaviorScoreVariance_Medium = 2; + k_EMatchBehaviorScoreVariance_High = 3; +} + +message CSODOTAPartyMember { + optional bool is_coach = 2; + repeated uint32 region_ping_codes = 4 [packed = true]; + repeated uint32 region_ping_times = 5 [packed = true]; + optional uint32 region_ping_failed_bitmask = 6; + optional bool is_plus_subscriber = 10; + optional uint32 tourney_skill_level = 7; + optional uint32 tourney_buyin = 8; + optional uint32 tourney_prevent_until = 9; + optional bool mm_data_valid = 13; + optional uint32 lane_selection_flags = 11; + optional bool high_priority_disabled = 14; + optional bool has_hp_resource = 15; + optional bool joined_from_partyfinder = 12; + optional bool is_steam_china = 16; + repeated int32 banned_hero_ids = 17; +} + +message CSODOTAParty { + enum State { + UI = 0; + FINDING_MATCH = 1; + IN_MATCH = 2; + } + + optional uint64 party_id = 1 [(key_field) = true]; + optional fixed64 leader_id = 2; + repeated fixed64 member_ids = 3; + optional uint32 game_modes = 4; + optional .CSODOTAParty.State state = 6 [default = UI]; + optional uint32 effective_started_matchmaking_time = 7; + optional uint32 raw_started_matchmaking_time = 32; + optional uint32 attempt_start_time = 33; + optional uint32 attempt_num = 34; + optional uint32 matchgroups = 11; + optional uint32 low_priority_account_id = 19; + optional .MatchType match_type = 21 [default = MATCH_TYPE_CASUAL]; + optional uint32 team_id = 23; + optional string team_name = 51; + optional uint64 team_ui_logo = 52; + optional uint64 team_base_logo = 53; + optional uint32 match_disabled_until_date = 24; + optional uint32 match_disabled_account_id = 25; + optional uint32 matchmaking_max_range_minutes = 26; + optional uint32 matchlanguages = 27; + repeated .CSODOTAPartyMember members = 29; + optional uint32 low_priority_games_remaining = 35; + optional bool open_for_join_requests = 40; + repeated .CSODOTAPartyInvite sent_invites = 41; + repeated .CSODOTAPartyInvite recv_invites = 42; + optional uint32 account_flags = 43; + optional uint32 region_select_flags = 44; + optional uint32 exclusive_tournament_id = 45; + optional uint32 tourney_division_id = 47; + optional uint32 tourney_schedule_time = 48; + optional uint32 tourney_skill_level = 49; + optional uint32 tourney_bracket_round = 50; + optional uint32 tourney_queue_deadline_time = 54; + optional .ETourneyQueueDeadlineState tourney_queue_deadline_state = 55 [default = k_ETourneyQueueDeadlineState_Normal]; + optional uint32 party_builder_slots_to_fill = 56; + optional uint32 party_builder_match_groups = 57; + optional uint32 party_builder_start_time = 58; + optional bool solo_queue = 59; + optional uint32 steam_clan_account_id = 61; + optional .CMsgReadyCheckStatus ready_check = 62; + optional uint32 custom_game_disabled_until_date = 63; + optional uint32 custom_game_disabled_account_id = 64; + optional bool is_challenge_match = 65; + optional bool party_search_beacon_active = 66; + optional uint32 matchmaking_flags = 67; + optional .EHighPriorityMMState high_priority_state = 68 [default = k_EHighPriorityMM_Unknown]; + optional bool lane_selections_enabled = 69; + optional uint32 custom_game_difficulty_mask = 70; + optional bool is_steam_china = 71; + optional uint32 bot_difficulty_mask = 72; + optional uint32 bot_script_index_mask = 73; + optional bool restricted_from_ranked = 74; + optional uint32 restricted_from_ranked_account_id = 75; + optional uint32 rank_spread_likert_scale = 76; + optional uint32 behavior_score_likert_scale = 77; + optional bool contains_required_playtester = 78; +} + +message CSODOTAPartyInvite { + message PartyMember { + optional string name = 1; + optional fixed64 steam_id = 2; + optional bool is_coach = 4; + } + + optional uint64 group_id = 1 [(key_field) = true]; + optional fixed64 sender_id = 2; + optional string sender_name = 3; + repeated .CSODOTAPartyInvite.PartyMember members = 4; + optional uint32 team_id = 5; + optional bool low_priority_status = 6; + optional bool as_coach = 7; + optional fixed64 invite_gid = 8; +} + +message CMsgLeaverState { + optional uint32 lobby_state = 1; + optional .DOTA_GameState game_state = 2 [default = DOTA_GAMERULES_STATE_INIT]; + optional bool leaver_detected = 3; + optional bool first_blood_happened = 4; + optional bool discard_match_results = 5; + optional bool mass_disconnect = 6; +} + +message CMsgReadyCheckStatus { + message ReadyMember { + optional uint32 account_id = 1; + optional .EReadyCheckStatus ready_status = 2 [default = k_EReadyCheckStatus_Unknown]; + } + + optional uint32 start_timestamp = 1; + optional uint32 finish_timestamp = 2; + optional uint32 initiator_account_id = 3; + repeated .CMsgReadyCheckStatus.ReadyMember ready_members = 4; +} + +message CMsgPartyReadyCheckRequest { +} + +message CMsgPartyReadyCheckResponse { + optional .EReadyCheckRequestResult result = 1 [default = k_EReadyCheckRequestResult_Success]; +} + +message CMsgPartyReadyCheckAcknowledge { + optional .EReadyCheckStatus ready_status = 1 [default = k_EReadyCheckStatus_Unknown]; +} + +message CMsgLobbyEventGameDetails { + optional bytes kv_data = 1; +} + +message CMsgMatchMatchmakingStats { + optional uint32 average_queue_time = 1; + optional uint32 maximum_queue_time = 2; + optional .EMatchBehaviorScoreVariance behavior_score_variance = 3 [default = k_EMatchBehaviorScoreVariance_Invalid]; +} + +message CMvpData { + message MvpDatum { + message MvpAccolade { + enum MvpAccoladeType { + kills = 1; + deaths = 2; + assists = 3; + net_worth = 5; + item_value = 6; + support_gold_spent = 7; + wards_placed = 8; + dewards = 9; + camps_stacked = 10; + last_hits = 11; + denies = 12; + kKillEaterEvent_Killing_Sprees = 13; + kKillEaterEvent_Godlike = 14; + kKillEaterEvent_Towers_Destroyed = 15; + kKillEaterEventType_Invoker_SunstrikeKills = 16; + kKillEaterEventType_Axe_Culls = 17; + kKillEaterEventType_Axe_BattleHungerKills = 18; + kKillEaterEventType_LowHealthKills = 19; + kKillEaterEventType_Invoker_TornadoKills = 20; + kKillEaterEventType_Sven_DoubleStuns = 21; + kKillEaterEventType_Sven_WarcryAssists = 22; + kKillEaterEventType_Sven_CleaveDoubleKills = 23; + kKillEaterEventType_Sven_TeleportInterrupts = 24; + kKillEaterEventType_Faceless_MultiChrono = 25; + kKillEaterEventType_Faceless_ChronoKills = 26; + kKillEaterEventType_Ursa_MultiShocks = 27; + kKillEaterEventType_RoshanKills = 28; + kKillEaterEventType_Lion_FingerKills = 29; + kKillEaterEventType_Riki_SmokedHeroKills = 32; + kKillEaterEventType_HeroesRevealedWithDust = 33; + kKillEaterEventType_SkeletonKing_ReincarnationKills = 34; + kKillEaterEventType_Skywrath_FlareKills = 35; + kKillEaterEventType_Leshrac_SplitEarthStuns = 36; + kKillEaterEventType_Mirana_MaxStunArrows = 37; + kKillEaterEventType_PhantomAssassin_CoupdeGraceCrits = 38; + kKillEaterEventType_PhantomAssassin_DaggerCrits = 39; + kKillEaterEventType_Meepo_Earthbinds = 40; + kKillEaterEventType_Bloodseeker_RuptureKills = 41; + kKillEaterEventType_Slark_LeashedEnemies = 42; + kKillEaterEventType_Disruptor_FountainGlimpses = 43; + kKillEaterEventType_Rubick_SpellsStolen = 44; + kKillEaterEventType_Rubick_UltimatesStolen = 45; + kKillEaterEventType_Doom_EnemiesDoomed = 46; + kKillEaterEventType_Omniknight_Purifications = 47; + kKillEaterEventType_Omniknight_AlliesRepelled = 48; + kKillEaterEventType_Omniknight_EnemiesRepelled = 49; + kKillEaterEventType_Warlock_FiveHeroFatalBonds = 50; + kKillEaterEventType_CrystalMaiden_FrostbittenEnemies = 51; + kKillEaterEventType_CrystalMaiden_CrystalNovas = 52; + kKillEaterEventType_Kunkka_DoubleHeroTorrents = 53; + kKillEaterEventType_Kunkka_TripleHeroGhostShips = 54; + kKillEaterEventType_NagaSiren_EnemiesEnsnared = 55; + kKillEaterEventType_NagaSiren_TripleHeroRipTides = 56; + kKillEaterEventType_Lycan_KillsDuringShapeshift = 57; + kKillEaterEventType_Pudge_DismemberKills = 58; + kKillEaterEventType_Pudge_EnemyHeroesHooked = 59; + kKillEaterEventType_Pudge_HookKills = 60; + kKillEaterEventType_Pudge_UnseenEnemyHeroesHooked = 61; + kKillEaterEventType_DrowRanger_EnemiesSilenced = 62; + kKillEaterEventType_DrowRanger_MultiHeroSilences = 63; + kKillEaterEventType_DrowRanger_SilencedKills = 64; + kKillEaterEventType_DrowRanger_FrostArrowKills = 65; + kKillEaterEventType_DragonKnight_KillsInDragonForm = 66; + kKillEaterEventType_DragonKnight_BreatheFireKills = 67; + kKillEaterEventType_DragonKnight_SplashKills = 68; + kKillEaterEventType_WitchDoctor_CaskStuns = 69; + kKillEaterEventType_WitchDoctor_MaledictKills = 70; + kKillEaterEventType_WitchDoctor_MultiHeroMaledicts = 71; + kKillEaterEventType_WitchDoctor_DeathWardKills = 72; + kKillEaterEventType_Disruptor_ThunderStrikeKills = 73; + kKillEaterEventType_Disruptor_HeroesGlimpsed = 74; + kKillEaterEventType_CrystalMaiden_FreezingFieldKills = 75; + kKillEaterEventType_Medusa_EnemiesPetrified = 77; + kKillEaterEventType_Warlock_FatalBondsKills = 78; + kKillEaterEventType_Warlock_GolemKills = 79; + kKillEaterEventType_Tusk_WalrusPunches = 80; + kKillEaterEventType_Tusk_SnowballStuns = 81; + kKillEaterEventType_Earthshaker_FissureStuns = 82; + kKillEaterEventType_Earthshaker_3HeroEchoslams = 83; + kKillEaterEventType_SandKing_BurrowstrikeStuns = 84; + kKillEaterEventType_SandKing_EpicenterKills = 85; + kKillEaterEventType_SkywrathMage_AncientSealKills = 86; + kKillEaterEventType_SkywrathMage_ConcussiveShotKills = 87; + kKillEaterEventType_Luna_LucentBeamKills = 88; + kKillEaterEventType_Luna_EclipseKills = 89; + kKillEaterEventType_KeeperOfTheLight_IlluminateKills = 90; + kKillEaterEventType_KeeperOfTheLight_ManaLeakStuns = 91; + kKillEaterEventType_KeeperOfTheLight_TeammatesRecalled = 92; + kKillEaterEventType_LegionCommander_DuelsWon = 93; + kKillEaterEventType_Beastmaster_RoarKills = 94; + kKillEaterEventType_Beastmaster_RoarMultiKills = 95; + kKillEaterEventType_Windrunner_FocusFireBuildings = 96; + kKillEaterEventType_Windrunner_PowershotKills = 97; + kKillEaterEventType_PhantomAssassin_DaggerLastHits = 98; + kKillEaterEventType_PhantomAssassin_PhantomStrikeKills = 99; + kKillEaterEventType_DeathProphet_CryptSwarmKills = 100; + kKillEaterEventType_DeathProphet_ExorcismBuildingKills = 101; + kKillEaterEventType_DeathProphet_ExorcismSpiritsSummoned = 102; + kKillEaterEventType_DeathProphet_MultiHeroSilences = 103; + kKillEaterEventType_Abaddon_MistCoilKills = 104; + kKillEaterEventType_Abaddon_MistCoilHealed = 105; + kKillEaterEventType_Abaddon_AphoticShieldKills = 106; + kKillEaterEventType_Lich_ChainFrostTripleKills = 107; + kKillEaterEventType_Lich_ChainFrostMultiKills = 108; + kKillEaterEventType_Lich_ChainFrostBounces = 109; + kKillEaterEventType_Ursa_EnragedKills = 110; + kKillEaterEventType_Ursa_EarthshockKills = 111; + kKillEaterEventType_Lina_LagunaBladeKills = 112; + kKillEaterEventType_Lina_DragonSlaveKills = 113; + kKillEaterEventType_Lina_LightStrikeArrayStuns = 114; + kKillEaterEvent_Barracks_Destroyed = 115; + kKillEaterEvent_TemplarAssassin_MeldKills = 116; + kKillEaterEvent_TemplarAssassin_HeroesSlowed = 117; + kKillEaterEvent_Sniper_AssassinationKills = 118; + kKillEaterEvent_Sniper_HeadshotStuns = 119; + kKillEaterEvent_EarthSpirit_SmashStuns = 120; + kKillEaterEvent_EarthSpirit_GripSilences = 121; + kKillEaterEvent_ShadowShaman_ShackleKills = 122; + kKillEaterEvent_ShadowShaman_HexKills = 123; + kKillEaterEvent_Centaur_EnemiesStomped = 124; + kKillEaterEvent_Centaur_DoubleEdgeKills = 125; + kKillEaterEvent_Centaur_ReturnKills = 126; + kKillEaterEvent_EmberSpirit_EnemiesChained = 127; + kKillEaterEvent_EmberSpirit_SleightOfFistMultiKills = 128; + kKillEaterEvent_Puck_OrbKills = 129; + kKillEaterEvent_VengefulSpirit_EnemiesStunned = 130; + kKillEaterEvent_Lifestealer_RageKills = 131; + kKillEaterEvent_Lifestealer_OpenWoundsKills = 132; + kKillEaterEvent_Lifestealer_InfestKills = 133; + kKillEaterEvent_ElderTitan_SpiritKills = 134; + kKillEaterEvent_ElderTitan_GoodStomps = 135; + kKillEaterEvent_Clockwerk_RocketKills = 136; + kKillEaterEvent_Clockwerk_BlindRocketKills = 137; + kKillEaterEvent_StormSpirit_BallKills = 138; + kKillEaterEvent_StormSpirit_DoubleRemnantKills = 139; + kKillEaterEvent_StormSpirit_VortexKills = 140; + kKillEaterEvent_Tinker_DoubleMissileKills = 141; + kKillEaterEvent_Tinker_LaserKills = 142; + kKillEaterEvent_Techies_SuicideKills = 143; + kKillEaterEvent_Techies_LandMineKills = 144; + kKillEaterEvent_Techies_StatisTrapStuns = 145; + kKillEaterEvent_Techies_RemoteMineKills = 146; + kKillEaterEvent_ShadowFiend_TripleRazeKills = 147; + kKillEaterEvent_ShadowFiend_RequiemMultiKills = 148; + kKillEaterEvent_ShadowFiend_QRazeKills = 149; + kKillEaterEvent_ShadowFiend_WRazeKills = 150; + kKillEaterEvent_ShadowFiend_ERazeKills = 151; + kKillEaterEvent_Oracle_FatesEdictKills = 152; + kKillEaterEvent_Oracle_FalsePromiseSaves = 153; + kKillEaterEvent_Juggernaut_OmnislashKills = 154; + kKillEaterEventType_SkeletonKing_SkeletonHeroKills = 157; + kKillEaterEventType_DarkWillow_CursedCrownTripleStuns = 158; + kKillEaterEventType_Dazzle_ShallowGraveSaves = 159; + kKillEaterEventType_Dazzle_PoisonTouchKills = 160; + kKillEaterEventType_ThreeManMeks = 161; + kKillEaterEventType_Viper_PoisonAttackKills = 162; + kKillEaterEventType_Viper_CorrosiveSkinKills = 163; + kKillEaterEventType_ThreeHeroVeils = 164; + kKillEaterEventType_Viper_KillsDuringViperStrike = 165; + kKillEaterEventType_SolarCrestKills = 166; + kKillEaterEventType_Tiny_TreeThrowKills = 167; + kKillEaterEventType_Riki_BackstabKills = 168; + kKillEaterEventType_Phoenix_ThreeHeroSupernovaStuns = 169; + kKillEaterEventType_Terrorblade_MetamorphosisKills = 170; + kKillEaterEventType_Lion_GreatFingerKills = 171; + kKillEaterEventType_Antimage_SpellsBlockedWithAghanims = 172; + kKillEaterEventType_Antimage_ThreeManManaVoids = 173; + kKillEaterEventType_ArcWarden_TempestDoubleKills = 174; + kKillEaterEventType_ArcWarden_SparkWraithKills = 175; + kKillEaterEventType_Bane_BrainSapKills = 176; + kKillEaterEventType_Bane_FiendsGripKills = 177; + kKillEaterEventType_Batrider_TripleHeroFlamebreaks = 178; + kKillEaterEventType_Batrider_DoubleHeroLassoes = 179; + kKillEaterEventType_Brewmaster_KillsDuringPrimalSplit = 180; + kKillEaterEventType_Bristleback_KillsUnderFourQuillStacks = 181; + kKillEaterEventType_Bristleback_TripleHeroNasalGoo = 182; + kKillEaterEventType_Broodmother_SpiderlingHeroKills = 183; + kKillEaterEventType_Broodmother_KillsInsideWeb = 184; + kKillEaterEventType_Centaur_ThreeHeroStampede = 185; + kKillEaterEventType_ChaosKnight_RealityRiftKills = 186; + kKillEaterEventType_Chen_KillsWithPenitence = 187; + kKillEaterEventType_CrystalMaiden_TwoHeroCrystalNovas = 188; + kKillEaterEventType_CrystalMaiden_ThreeHeroFreezingFields = 189; + kKillEaterEventType_Dazzle_ShadowWaveKills = 190; + kKillEaterEventType_DeathProphet_SiphonKills = 191; + kKillEaterEventType_DeathProphet_ExorcismKillsDuringEuls = 192; + kKillEaterEventType_Disruptor_ThreeHeroKineticFieldStaticStorm = 193; + kKillEaterEventType_Doom_InfernalBladeBurnKills = 194; + kKillEaterEventType_DrowRanger_PrecisionAuraCreepTowerKills = 195; + kKillEaterEventType_EmberSpirit_RemnantKills = 196; + kKillEaterEventType_EmberSpirit_SleightOfFistKills = 197; + kKillEaterEventType_Enigma_MidnightPulseBlackHoleCombos = 198; + kKillEaterEventType_Enigma_ThreeManBlackHoles = 199; + kKillEaterEventType_FacelessVoid_MultiHeroTimeDilation = 200; + kKillEaterEventType_Gyrocopter_ThreeHeroFlakCannon = 201; + kKillEaterEventType_Gyrocopter_HomingMissileKills = 202; + kKillEaterEventType_Gyrocopter_RocketBarrageKills = 203; + kKillEaterEventType_Huskar_KillsDuringLifeBreak = 204; + kKillEaterEventType_Huskar_BurningSpearKills = 205; + kKillEaterEventType_Invoker_MultiHeroIceWall = 206; + kKillEaterEventType_Invoker_ThreeHeroEMP = 207; + kKillEaterEventType_Invoker_ThreeHeroDeafeningBlast = 208; + kKillEaterEventType_Invoker_MultiHeroChaosMeteor = 209; + kKillEaterEventType_Jakiro_MultiHeroDualBreath = 210; + kKillEaterEventType_Jakiro_IcePathMacropyreCombos = 211; + kKillEaterEventType_Leshrac_PulseNovaKills = 212; + kKillEaterEventType_Leshrac_ThreeHeroLightningStorm = 213; + kKillEaterEventType_Lion_ThreeHeroFingerOfDeath = 214; + kKillEaterEventType_Meepo_PoofKills = 215; + kKillEaterEventType_Meepo_MultiHeroEarthbinds = 216; + kKillEaterEventType_NightStalker_NighttimeKills = 217; + kKillEaterEventType_Morphling_KillsDuringReplicate = 218; + kKillEaterEventType_OgreMagi_FireblastKills = 219; + kKillEaterEventType_OgreMagi_IgniteKills = 220; + kKillEaterEventType_DominatingKillStreaks = 221; + kKillEaterEventType_MegaKillStreaks = 222; + kKillEaterEventType_Alchemist_AghanimsGiven = 223; + kKillEaterEventType_VeilsLeadingToKills = 224; + kKillEaterEventType_DustLeadingToKills = 225; + kKillEaterEventType_WitchDoctor_MultiHeroCaskStuns = 226; + kKillEaterEventType_Weaver_ShukuchiKills = 227; + kKillEaterEventType_Windrunner_ShackleFocusFireKills = 228; + kKillEaterEventType_VengefulSpirit_VengeanceAuraIllusionKills = 229; + kKillEaterEventType_Tusk_WalrusPunchKills = 230; + kKillEaterEventType_Tinker_MultiHeroLasers = 231; + kKillEaterEventType_TemplarAssassin_MultiHeroPsiBlades = 232; + kKillEaterEventType_Sven_KillsDuringGodsStrength = 233; + kKillEaterEventType_Sniper_ThreeHeroShrapnels = 234; + kKillEaterEventType_Slark_KillsDuringShadowDance = 235; + kKillEaterEventType_ShadowShaman_MultiHeroEtherShocks = 236; + kKillEaterEventType_ShadowShaman_SerpentWardShackleKills = 237; + kKillEaterEventType_Riki_ThreeHeroTricksOfTheTrade = 238; + kKillEaterEventType_Razor_EyeOfTheStormKills = 239; + kKillEaterEventType_Pugna_LifeDrainKills = 240; + kKillEaterEventType_ObsidianDestroyer_SanitysEclipseKills = 241; + kKillEaterEventType_Oracle_MultiHeroFortunesEnd = 242; + kKillEaterEventType_Omniknight_PurificationKills = 243; + kKillEaterEventType_NightStalker_EnemyMissesUnderCripplingFear = 244; + kKillEaterEventType_Warlock_ThreeHeroFatalBonds = 245; + kKillEaterEventType_Riki_TricksOfTheTradeKills = 246; + kKillEaterEventType_Earthshaker_AftershockHits10 = 247; + kKillEaterEventType_Earthshaker_5HeroEchoslams = 248; + kKillEaterEventType_Lina_LagunaBladeHeroKills = 249; + kKillEaterEventType_Lina_LightStrikeHeroStuns = 250; + kKillEaterEventType_Earthshaker_FissureMultiStuns = 251; + kKillEaterEventType_Earthshaker_TotemKills = 252; + kKillEaterEventType_Pangolier_SwashbuckleKills = 253; + kKillEaterEventType_Furion_EnemyHeroesTrapped = 254; + kKillEaterEventType_Pangolier_HeartpiercerKills = 255; + kKillEaterEventType_Medusa_MultiHeroStoneGaze = 256; + kKillEaterEventType_Medusa_SplitShotKills = 257; + kKillEaterEventType_Mirana_MultiHeroStarstorm = 258; + kKillEaterEventType_Mirana_KillsFromMoonlightShadow = 259; + kKillEaterEventType_Magnus_MultiHeroSkewers = 260; + kKillEaterEventType_Magnus_MultiHeroReversePolarity = 261; + kKillEaterEventType_Magnus_HeroesSlowedWithShockwave = 262; + kKillEaterEventType_NagaSiren_MultiHeroSong = 263; + kKillEaterEventType_NagaSiren_AlliesHealedBySong = 264; + kKillEaterEventType_LoneDruid_MultiHeroRoar = 265; + kKillEaterEventType_LoneDruid_BattleCryKills = 266; + kKillEaterEventType_WinterWyvern_ThreeHeroCurses = 267; + kKillEaterEventType_Antimage_SpellsBlockedWithCounterspell = 268; + kKillEaterEventType_Mars_EnemiesKilledInArena = 269; + kKillEaterEventType_Mars_MultiHeroGodsRebuke = 270; + kKillEaterEventType_Mars_GodsRebukeKills = 271; + kKillEaterEventType_Snapfire_LizardBlobsKills = 272; + kKillEaterEventType_Snapfire_TwoHeroCookieStuns = 273; + Custom_KillStreak = 274; + kKillEaterEventType_Muerta_DeadShotKills = 275; + kKillEaterEventType_Muerta_PierceTheVeilKills = 276; + kKillEaterEventType_Muerta_MultiHeroDeadShot = 277; + kKillEaterEventType_Muerta_DeadShotsIntoTheCalling = 278; + kKillEaterEventType_Ringmaster_LongRangeDaggerHits = 279; + kKillEaterEventType_Ringmaster_MultiHeroWhips = 280; + kKillEaterEventType_Ringmaster_MultiHeroMesmerizes = 281; + kKillEaterEventType_Kez_ParryCounterAttacks = 282; + kKillEaterEventType_Kez_RavensVeilKills = 283; + kKillEaterEventType_Kez_RaptorDanceHealing = 284; + kKillEaterEventType_Kez_KillsDuringFalconRush = 285; + kKillEaterEventType_Seasonal_PartyHatsStolen = 286; + kKillEaterEventType_Seasonal_TallestHat = 287; + } + + optional .CMvpData.MvpDatum.MvpAccolade.MvpAccoladeType type = 1 [default = kills]; + optional float detail_value = 2; + } + + optional uint32 player_slot = 1; + repeated .CMvpData.MvpDatum.MvpAccolade accolades = 2; + } + + repeated .CMvpData.MvpDatum mvps = 1; + repeated .CMvpData.MvpDatum event_mvps = 2; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_monster_hunter.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_monster_hunter.proto new file mode 100644 index 00000000..78c3aa0b --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_monster_hunter.proto @@ -0,0 +1,351 @@ +import "in/dragonbra/javasteam/protobufs/dota2/steammessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_shared_enums.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/gcsdk_gcmessages.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum EMonsterHunterAuditAction { + k_eMonsterHunterAuditAction_Invalid = 0; + k_eMonsterHunterAuditAction_DevModifyMaterials = 1; + k_eMonsterHunterAuditAction_DevGrantMaterials = 2; + k_eMonsterHunterAuditAction_DevResetAll = 3; + k_eMonsterHunterAuditAction_ClaimReward = 4; + k_eMonsterHunterAuditAction_MatchRewardsWin = 5; + k_eMonsterHunterAuditAction_MatchRewardsLose = 6; + k_eMonsterHunterAuditAction_MaterialTraderLost = 7; + k_eMonsterHunterAuditAction_MaterialTraderGained = 8; + k_eMonsterHunterAuditAction_RewardMaterialCost = 9; + k_eMonsterHunterAuditAction_SupportGrantMaterials = 10; + k_eMonsterHunterAuditAction_MaterialGiftSent = 11; + k_eMonsterHunterAuditAction_DevClaimInvestigationRewards = 12; + k_eMonsterHunterAuditAction_HeroCodexUpdate = 13; + k_eMonsterHunterAuditAction_EventActionReward = 14; +} + +enum EHeroCodexEntryStatType { + k_eHeroCodexEntryStatType_Killed = 0; + k_eHeroCodexEntryStatType_WinsPlayingAsHero = 1; + k_eHeroCodexEntryStatType_WinsWith = 2; + k_eHeroCodexEntryStatType_LossesPlayingAsHero = 3; + k_eHeroCodexEntryStatType_LossesWith = 4; + k_eHeroCodexEntryStatType_TurboWinsPlayingAsHero = 5; + k_eHeroCodexEntryStatType_TurboWinsWith = 6; + k_eHeroCodexEntryStatType_TurboLossesPlayingAsHero = 7; + k_eHeroCodexEntryStatType_TurboLossesWith = 8; + k_eHeroCodexEntryStatType_Count = 9; +} + +message CMsgMonsterHunterMaterialCount { + optional uint32 material_id = 1; + optional uint32 material_count = 2; +} + +message CMsgMonsterHunterHeroCodexEntry { + repeated uint32 stats = 1; + optional bool unlocked = 2; +} + +message CMsgMonsterHunterUserData { + message HeroCodexEntry { + optional int32 key = 1; + optional .CMsgMonsterHunterHeroCodexEntry value = 2; + } + + optional .CMsgMonsterHunterMaterialQuantity material_inventory = 1; + repeated .CMsgMonsterHunterUserData.HeroCodexEntry hero_codex = 2; + optional int32 unlocked_count = 3; +} + +message CMsgMonsterHunterMatchRewards { + message Player { + message HuntReward { + optional int32 hero_id = 1; + optional .CMsgMonsterHunterMaterialQuantity materials = 2; + optional bool success = 3; + } + + optional uint32 player_slot = 1; + optional .CMsgMonsterHunterMaterialQuantity possible_match_reward_materials = 2; + optional .CMsgMonsterHunterMaterialQuantity actual_match_reward_materials = 3; + optional .CMsgMonsterHunterMatchRewards.Player.HuntReward hunt_reward = 4; + repeated .CMsgMonsterHunterMatchRewards.Player.HuntReward denial_rewards = 5; + optional bool hunter_duel = 6; + } + + repeated .CMsgMonsterHunterMatchRewards.Player players = 1; +} + +message CMsgClientToGCMonsterHunterGetUserData { +} + +message CMsgClientToGCMonsterHunterGetUserDataResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + } + + optional .CMsgClientToGCMonsterHunterGetUserDataResponse.EResponse response = 1 [default = k_eInternalError]; + optional .CMsgMonsterHunterUserData user_data = 2; +} + +message CMsgGCToClientMonsterHunterUserDataUpdated { + optional .CMsgMonsterHunterUserData user_data = 1; +} + +message CMsgClientToGCMonsterHunterClaimReward { + oneof RewardType { + uint32 item_id = 1; + uint32 hunter_rank_reward = 2; + } +} + +message CMsgClientToGCMonsterHunterClaimRewardResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eRewardAlreadyClaimed = 5; + k_eNotEnoughMaterialsForReward = 6; + k_eNotEnoughResourceForReward = 7; + k_eRequiredHunterLevel = 8; + k_eDontHavePremium = 9; + } + + optional .CMsgClientToGCMonsterHunterClaimRewardResponse.EResponse response = 1 [default = k_eInternalError]; + optional .CMsgDOTAClaimEventActionResponse claim_response = 2; + optional .CMsgMonsterHunterMaterialQuantity materials_received = 3; +} + +message CMsgMonsterHunterItemSet { + optional uint32 econ_item_id = 1; + optional uint32 set_index = 2; +} + +message CMsgClientToGCMonsterHunterClaimSetReward { + repeated .CMsgMonsterHunterItemSet item_sets = 1; +} + +message CMsgClientToGCMonsterHunterClaimSetRewardResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eRewardAlreadyClaimed = 5; + k_eNotEnoughMaterialsForReward = 6; + k_eDontHavePremium = 7; + } + + optional .CMsgClientToGCMonsterHunterClaimSetRewardResponse.EResponse response = 1 [default = k_eInternalError]; + repeated .CMsgDOTAClaimEventActionResponse claim_responses = 2; +} + +message CMsgClientToGCMonsterHunterTradeMaterials { + optional .CMsgMonsterHunterMaterialQuantity material_offer = 1; + optional .CMsgMonsterHunterMaterialQuantity material_request = 2; + optional uint32 recipe_id = 3; +} + +message CMsgClientToGCMonsterHunterTradeMaterialsResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + k_eInvalidOffer = 6; + k_eNotEnoughMaterials = 7; + k_eRewardDoesNotMatchRecipe = 8; + } + + optional .CMsgClientToGCMonsterHunterTradeMaterialsResponse.EResponse response = 1 [default = k_eInternalError]; + optional .CMsgMonsterHunterMaterialQuantity materials_received = 2; +} + +message CMsgClientToGCMonsterHunterGiftMaterials { + optional .CMsgMonsterHunterMaterialCount token_gift = 1; + optional uint32 recipient_account_id = 2; + optional uint32 periodic_resource_id = 3; +} + +message CMsgClientToGCMonsterHunterGiftMaterialsResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + k_eInvalidGift = 6; + k_eNotEnoughMaterials = 7; + k_eInvalidRecipient = 8; + k_eNotEnoughPeriodicResource = 9; + } + + optional .CMsgClientToGCMonsterHunterGiftMaterialsResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCMonsterHunterRequestMaterialsNeededByFriend { + optional uint32 friend_account_id = 1; +} + +message CMsgClientToGCMonsterHunterRequestMaterialsNeededByFriendResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + k_eInvalidFriend = 6; + k_eTooManyRequests = 7; + } + + optional .CMsgClientToGCMonsterHunterRequestMaterialsNeededByFriendResponse.EResponse response = 1 [default = k_eInternalError]; + optional .CMsgMonsterHunterMaterialQuantity token_quantity = 2; +} + +message CMsgClientToGCMonsterHunterDevResetAll { + optional bool reset_codex_only = 1; +} + +message CMsgClientToGCMonsterHunterDevResetAllResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + } + + optional .CMsgClientToGCMonsterHunterDevResetAllResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCMonsterHunterDevGrantMaterials { + optional .CMsgMonsterHunterMaterialQuantity material_quantity = 1; +} + +message CMsgClientToGCMonsterHunterDevGrantMaterialsResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + } + + optional .CMsgClientToGCMonsterHunterDevGrantMaterialsResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCMonsterHunterDevClearInventory { +} + +message CMsgClientToGCMonsterHunterDevClearInventoryResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + } + + optional .CMsgClientToGCMonsterHunterDevClearInventoryResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCMonsterHunterDevClaimInvestigationRewards { + optional .CMsgMonsterHunterInvestigationGameState investigation_game_state = 1; + optional bool win = 2; +} + +message CMsgClientToGCMonsterHunterDevClaimInvestigationRewardsResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + } + + optional .CMsgClientToGCMonsterHunterDevClaimInvestigationRewardsResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCMonsterHunterClaimCodexReward { + optional uint32 codex_id = 1; + optional uint32 reward = 2; +} + +message CMsgClientToGCMonsterHunterClaimCodexRewardResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + k_eAlreadyClaimed = 6; + } + + optional .CMsgClientToGCMonsterHunterClaimCodexRewardResponse.EResponse response = 1 [default = k_eInternalError]; + optional .CMsgDOTAClaimEventActionResponse claim_response = 2; +} + +message CMsgDevModifyCodexAction { + enum EAction { + k_eClear = 0; + k_eAdd = 1; + } + + optional uint32 codex_id = 1; + optional .EHeroCodexEntryStatType stat_type = 2 [default = k_eHeroCodexEntryStatType_Killed]; + optional .CMsgDevModifyCodexAction.EAction action = 3 [default = k_eClear]; +} + +message CMsgClientToGCMonsterHunterDevModifyHeroCodex { + repeated .CMsgDevModifyCodexAction actions = 1; +} + +message CMsgClientToGCMonsterHunterDevModifyHeroCodexResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + } + + optional .CMsgClientToGCMonsterHunterDevModifyHeroCodexResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCMonsterHunterFeedback { + optional uint32 language = 1; + optional string feedback = 2; +} + +message CMsgClientToGCMonsterHunterFeedbackResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + } + + optional .CMsgClientToGCMonsterHunterFeedbackResponse.EResponse response = 1 [default = k_eInternalError]; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_overworld.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_overworld.proto new file mode 100644 index 00000000..3fd8e2a3 --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_overworld.proto @@ -0,0 +1,504 @@ +import "in/dragonbra/javasteam/protobufs/dota2/steammessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_shared_enums.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_survivors.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/gcsdk_gcmessages.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum EOverworldNodeState { + k_eOverworldNodeState_Invalid = 0; + k_eOverworldNodeState_Locked = 1; + k_eOverworldNodeState_Unlocked = 2; +} + +enum EOverworldPathState { + k_eOverworldPathState_Invalid = 0; + k_eOverworldPathState_Incomplete = 1; + k_eOverworldPathState_Complete = 2; +} + +enum EOverworldAuditAction { + k_eOverworldAuditAction_Invalid = 0; + k_eOverworldAuditAction_DevModifyTokens = 1; + k_eOverworldAuditAction_DevClearInventory = 2; + k_eOverworldAuditAction_DevGrantTokens = 3; + k_eOverworldAuditAction_CompletePath = 4; + k_eOverworldAuditAction_ClaimEncounterReward = 5; + k_eOverworldAuditAction_DevResetNode = 6; + k_eOverworldAuditAction_DevResetPath = 7; + k_eOverworldAuditAction_MatchRewardsFull = 8; + k_eOverworldAuditAction_MatchRewardsHalf = 9; + k_eOverworldAuditAction_EventActionTokenGrant = 10; + k_eOverworldAuditAction_TokenTraderLost = 11; + k_eOverworldAuditAction_TokenTraderGained = 12; + k_eOverworldAuditAction_EncounterRewardTokenCost = 13; + k_eOverworldAuditAction_EncounterRewardTokenReward = 14; + k_eOverworldAuditAction_SupportGrantTokens = 16; + k_eOverworldAuditAction_TokenGiftSent = 17; +} + +enum EOverworldMinigameAction { + k_eOverworldMinigameAction_Invalid = 0; + k_eOverworldMinigameAction_DevReset = 1; + k_eOverworldMinigameAction_DevGiveCurrency = 2; + k_eOverworldMinigameAction_Purchase = 3; + k_eOverworldMinigameAction_SetOption = 4; + k_eOverworldMinigameAction_ReportCurrencyGained = 5; + k_eOverworldMinigameAction_UnlockDifficulty = 6; +} + +message CMsgOverworldTokenCount { + optional uint32 token_id = 1; + optional uint32 token_count = 2; +} + +message CMsgOverworldTokenQuantity { + repeated .CMsgOverworldTokenCount token_counts = 1; +} + +message CMsgOverworldEncounterTokenTreasureData { + message RewardOption { + optional uint32 reward_data = 1; + optional .CMsgOverworldTokenQuantity token_cost = 2; + optional .CMsgOverworldTokenQuantity token_reward = 3; + } + + repeated .CMsgOverworldEncounterTokenTreasureData.RewardOption reward_options = 1; +} + +message CMsgOverworldEncounterTokenQuestData { + message Quest { + optional uint32 reward_data = 1; + optional .CMsgOverworldTokenQuantity token_cost = 2; + optional .CMsgOverworldTokenQuantity token_reward = 3; + } + + repeated .CMsgOverworldEncounterTokenQuestData.Quest quests = 1; +} + +message CMsgOverworldHeroList { + repeated int32 hero_ids = 1; +} + +message CMsgOverworldEncounterChooseHeroData { + optional .CMsgOverworldHeroList hero_list = 1; + optional bool additive = 2; +} + +message CMsgOverworldEncounterProgressData { + optional int32 choice = 1; + optional int32 progress = 2; + optional int32 max_progress = 3; + optional bool visited = 4; +} + +message CMsgOverworldEncounterData { + repeated .CExtraMsgBlock extra_encounter_data = 1; +} + +message CMsgOverworldNode { + optional uint32 node_id = 1; + optional .EOverworldNodeState node_state = 2 [default = k_eOverworldNodeState_Invalid]; + optional .CMsgOverworldEncounterData node_encounter_data = 3; +} + +message CMsgOverworldPath { + optional uint32 path_id = 1; + optional .CMsgOverworldTokenQuantity path_cost = 2; + optional .EOverworldPathState path_state = 3 [default = k_eOverworldPathState_Invalid]; +} + +message CMsgOverworldMinigameCustomData { + oneof minigame_type { + .CMsgSurvivorsUserData survivors_data = 1; + } +} + +message CMsgOverworldMinigameUserData { + optional uint32 node_id = 1; + optional uint32 currency_amount = 2; + optional .CMsgOverworldMinigameCustomData custom_data = 3; +} + +message CMsgOverworldUserData { + message MinigameDataEntry { + optional uint32 key = 1; + optional .CMsgOverworldMinigameUserData value = 2; + } + + optional .CMsgOverworldTokenQuantity token_inventory = 1; + repeated .CMsgOverworldNode overworld_nodes = 2; + repeated .CMsgOverworldPath overworld_paths = 3; + optional uint32 current_node_id = 4; + repeated .CMsgOverworldUserData.MinigameDataEntry minigame_data = 5; +} + +message CMsgOverworldMatchRewards { + message Player { + optional uint32 player_slot = 1; + optional .CMsgOverworldTokenQuantity tokens = 2; + optional uint32 overworld_id = 3; + } + + repeated .CMsgOverworldMatchRewards.Player players = 1; +} + +message CMsgClientToGCOverworldGetUserData { + optional uint32 overworld_id = 1; +} + +message CMsgClientToGCOverworldGetUserDataResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidOverworld = 5; + } + + optional .CMsgClientToGCOverworldGetUserDataResponse.EResponse response = 1 [default = k_eInternalError]; + optional .CMsgOverworldUserData user_data = 2; +} + +message CMsgGCToClientOverworldUserDataUpdated { + optional uint32 overworld_id = 1; + optional .CMsgOverworldUserData user_data = 2; +} + +message CMsgClientToGCOverworldCompletePath { + optional uint32 overworld_id = 1; + optional uint32 path_id = 2; +} + +message CMsgClientToGCOverworldCompletePathResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidOverworld = 5; + k_eInvalidPath = 6; + k_eNotEnoughTokens = 7; + k_ePathIsLocked = 8; + k_ePathAlreadyUnlocked = 9; + k_eEventExpired = 10; + } + + optional .CMsgClientToGCOverworldCompletePathResponse.EResponse response = 1 [default = k_eInternalError]; + optional .CMsgDOTAClaimEventActionResponse claim_response = 2; +} + +message CMsgOverworldEncounterPitFighterRewardData { + optional uint32 token_id = 1; + optional uint32 choice = 2; +} + +message CMsgClientToGCOverworldClaimEncounterReward { + optional uint32 overworld_id = 1; + optional uint32 node_id = 2; + optional uint32 reward_data = 3; + optional uint32 periodic_resource_id = 4; + optional .CMsgOverworldEncounterData extra_reward_data = 5; + optional uint32 leaderboard_data = 6; + optional uint32 leaderboard_index = 7; + optional bool should_claim_reward = 8; +} + +message CMsgClientToGCOverworldClaimEncounterRewardResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidOverworld = 5; + k_eInvalidNode = 6; + k_eNodeLocked = 7; + k_eRewardAlreadyClaimed = 8; + k_eNodeNotEncounter = 9; + k_eEncounterMissingRewards = 10; + k_eInvalidEncounterRewardStyle = 11; + k_eInvalidEncounterData = 12; + k_eNotEnoughTokensForReward = 13; + k_eNotEnoughResourceForReward = 14; + k_eInvalidRewardData = 15; + k_eEventExpired = 16; + } + + optional .CMsgClientToGCOverworldClaimEncounterRewardResponse.EResponse response = 1 [default = k_eInternalError]; + optional .CMsgDOTAClaimEventActionResponse claim_response = 2; + optional .CMsgOverworldTokenQuantity tokens_received = 3; +} + +message CMsgClientToGCOverworldVisitEncounter { + optional uint32 overworld_id = 1; + optional uint32 node_id = 2; +} + +message CMsgClientToGCOverworldVisitEncounterResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidOverworld = 5; + k_eInvalidNode = 6; + k_eNodeLocked = 7; + k_eNodeNotEncounter = 8; + k_eAlreadyVisited = 9; + } + + optional .CMsgClientToGCOverworldVisitEncounterResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCOverworldMoveToNode { + optional uint32 overworld_id = 1; + optional uint32 node_id = 2; +} + +message CMsgClientToGCOverworldMoveToNodeResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidOverworld = 5; + k_eInvalidNode = 6; + k_eNodeLocked = 7; + } + + optional .CMsgClientToGCOverworldMoveToNodeResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCOverworldTradeTokens { + optional uint32 overworld_id = 1; + optional .CMsgOverworldTokenQuantity token_offer = 2; + optional .CMsgOverworldTokenQuantity token_request = 3; + optional uint32 recipe = 4; + optional uint32 encounter_id = 5; +} + +message CMsgClientToGCOverworldTradeTokensResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + k_eNodeLocked = 6; + k_eInvalidOverworld = 7; + k_eInvalidOffer = 8; + k_eNotEnoughTokens = 9; + k_eInvalidNode = 10; + k_eInvalidEncounter = 11; + k_eRewardDoesNotMatchRecipe = 12; + } + + optional .CMsgClientToGCOverworldTradeTokensResponse.EResponse response = 1 [default = k_eInternalError]; + optional .CMsgOverworldTokenQuantity tokens_received = 2; +} + +message CMsgClientToGCOverworldGiftTokens { + optional uint32 overworld_id = 1; + optional .CMsgOverworldTokenCount token_gift = 2; + optional uint32 recipient_account_id = 3; + optional uint32 periodic_resource_id = 4; +} + +message CMsgClientToGCOverworldGiftTokensResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + k_eNodeLocked = 6; + k_eInvalidOverworld = 7; + k_eInvalidGift = 8; + k_eNotEnoughTokens = 9; + k_eInvalidRecipient = 10; + k_eNotEnoughPeriodicResource = 11; + } + + optional .CMsgClientToGCOverworldGiftTokensResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCOverworldRequestTokensNeededByFriend { + optional uint32 friend_account_id = 1; + optional uint32 overworld_id = 2; +} + +message CMsgClientToGCOverworldRequestTokensNeededByFriendResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + k_eNodeLocked = 6; + k_eInvalidOverworld = 7; + k_eInvalidFriend = 8; + k_eTooManyRequests = 9; + } + + optional .CMsgClientToGCOverworldRequestTokensNeededByFriendResponse.EResponse response = 1 [default = k_eInternalError]; + optional .CMsgOverworldTokenQuantity token_quantity = 2; +} + +message CMsgClientToGCOverworldDevResetAll { + optional uint32 overworld_id = 1; +} + +message CMsgClientToGCOverworldDevResetAllResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + k_eInvalidOverworld = 6; + } + + optional .CMsgClientToGCOverworldDevResetAllResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCOverworldDevResetNode { + optional uint32 overworld_id = 1; + optional uint32 node_id = 2; +} + +message CMsgClientToGCOverworldDevResetNodeResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + k_eInvalidOverworld = 6; + k_eInvalidNode = 7; + } + + optional .CMsgClientToGCOverworldDevResetNodeResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCOverworldDevGrantTokens { + optional uint32 overworld_id = 1; + optional .CMsgOverworldTokenQuantity token_quantity = 2; +} + +message CMsgClientToGCOverworldDevGrantTokensResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + k_eInvalidOverworld = 6; + } + + optional .CMsgClientToGCOverworldDevGrantTokensResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCOverworldDevClearInventory { + optional uint32 overworld_id = 1; +} + +message CMsgClientToGCOverworldDevClearInventoryResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + k_eInvalidOverworld = 6; + } + + optional .CMsgClientToGCOverworldDevClearInventoryResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCOverworldFeedback { + optional uint32 language = 1; + optional uint32 overworld_id = 2; + optional string feedback = 3; +} + +message CMsgClientToGCOverworldFeedbackResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + k_eInvalidOverworld = 6; + } + + optional .CMsgClientToGCOverworldFeedbackResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCOverworldGetDynamicImage { + optional uint32 magic = 1; + optional uint32 image_id = 2; + optional uint32 language = 3; +} + +message CMsgClientToGCOverworldGetDynamicImageResponse { + message Image { + optional uint32 width = 1; + optional uint32 height = 2; + optional .CMsgClientToGCOverworldGetDynamicImageResponse.EDynamicImageFormat format = 3 [default = k_eUnknown]; + optional bytes image_bytes = 4; + } + + enum EDynamicImageFormat { + k_eUnknown = 0; + k_ePNG = 1; + k_eData = 2; + } + + optional uint32 image_id = 1; + repeated .CMsgClientToGCOverworldGetDynamicImageResponse.Image images = 2; +} + +message CMsgClientToGCOverworldMinigameAction { + optional uint32 overworld_id = 1; + optional uint32 node_id = 2; + optional .EOverworldMinigameAction action = 3 [default = k_eOverworldMinigameAction_Invalid]; + optional uint32 selection = 4; + optional uint32 option_value = 5; + optional uint32 currency_amount = 6; +} + +message CMsgClientToGCOverworldMinigameActionResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidOverworld = 5; + k_eInvalidNode = 6; + k_eNodeLocked = 7; + k_eInvalidSelection = 8; + k_eNotEnoughTokens = 9; + k_eNotEnoughMinigameCurrency = 10; + k_eNotAllowed = 11; + } + + optional .CMsgClientToGCOverworldMinigameActionResponse.EResponse response = 1 [default = k_eInternalError]; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_survivors.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_survivors.proto new file mode 100644 index 00000000..b8610a95 --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_survivors.proto @@ -0,0 +1,53 @@ +import "in/dragonbra/javasteam/protobufs/dota2/steammessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_shared_enums.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/gcsdk_gcmessages.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +message CMsgSurvivorsUserData { + message AttributeLevelsEntry { + optional int32 key = 1; + optional uint32 value = 2; + } + + repeated .CMsgSurvivorsUserData.AttributeLevelsEntry attribute_levels = 1; + optional uint32 unlocked_difficulty = 2; +} + +message CMsgClientToGCSurvivorsPowerUpTelemetryData { + optional uint32 powerup_id = 1; + optional uint32 level = 2; + optional uint32 time_received = 3; + optional uint32 time_held = 4; + optional uint64 total_damage = 5; + optional uint32 dps = 6; + optional uint32 has_scepter = 7; +} + +message CMsgClientToGCSurvivorsGameTelemetryData { + optional uint32 time_survived = 1; + optional uint32 player_level = 2; + optional uint32 game_result = 3; + optional uint32 gold_earned = 4; + repeated .CMsgClientToGCSurvivorsPowerUpTelemetryData powerups = 5; + optional uint32 difficulty = 6; + optional uint32 metaprogression_level = 7; +} + +message CMsgClientToGCSurvivorsGameTelemetryDataResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + k_eInvalidItem = 6; + } + + optional .CMsgClientToGCSurvivorsGameTelemetryDataResponse.EResponse response = 1 [default = k_eInternalError]; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_msgid.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_msgid.proto new file mode 100644 index 00000000..8a91cbab --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_msgid.proto @@ -0,0 +1,1000 @@ +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum EDOTAGCMsg { + k_EMsgGCDOTABase = 7000; + k_EMsgGCGameMatchSignOut = 7004; + k_EMsgGCGameMatchSignOutResponse = 7005; + k_EMsgGCJoinChatChannel = 7009; + k_EMsgGCJoinChatChannelResponse = 7010; + k_EMsgGCOtherJoinedChannel = 7013; + k_EMsgGCOtherLeftChannel = 7014; + k_EMsgServerToGCRequestStatus = 7026; + k_EMsgGCStartFindingMatch = 7033; + k_EMsgGCConnectedPlayers = 7034; + k_EMsgGCAbandonCurrentGame = 7035; + k_EMsgGCStopFindingMatch = 7036; + k_EMsgGCPracticeLobbyCreate = 7038; + k_EMsgGCPracticeLobbyLeave = 7040; + k_EMsgGCPracticeLobbyLaunch = 7041; + k_EMsgGCPracticeLobbyList = 7042; + k_EMsgGCPracticeLobbyListResponse = 7043; + k_EMsgGCPracticeLobbyJoin = 7044; + k_EMsgGCPracticeLobbySetDetails = 7046; + k_EMsgGCPracticeLobbySetTeamSlot = 7047; + k_EMsgGCInitialQuestionnaireResponse = 7049; + k_EMsgGCPracticeLobbyResponse = 7055; + k_EMsgGCBroadcastNotification = 7056; + k_EMsgGCLiveScoreboardUpdate = 7057; + k_EMsgGCRequestChatChannelList = 7060; + k_EMsgGCRequestChatChannelListResponse = 7061; + k_EMsgGCReadyUp = 7070; + k_EMsgGCKickedFromMatchmakingQueue = 7071; + k_EMsgGCLeaverDetected = 7072; + k_EMsgGCSpectateFriendGame = 7073; + k_EMsgGCSpectateFriendGameResponse = 7074; + k_EMsgGCReportsRemainingRequest = 7076; + k_EMsgGCReportsRemainingResponse = 7077; + k_EMsgGCSubmitPlayerReport = 7078; + k_EMsgGCSubmitPlayerReportResponse = 7079; + k_EMsgGCPracticeLobbyKick = 7081; + k_EMsgGCSubmitPlayerReportV2 = 7082; + k_EMsgGCSubmitPlayerReportResponseV2 = 7083; + k_EMsgGCRequestSaveGames = 7084; + k_EMsgGCRequestSaveGamesServer = 7085; + k_EMsgGCRequestSaveGamesResponse = 7086; + k_EMsgGCLeaverDetectedResponse = 7087; + k_EMsgGCPlayerFailedToConnect = 7088; + k_EMsgGCGCToRelayConnect = 7089; + k_EMsgGCGCToRelayConnectresponse = 7090; + k_EMsgGCWatchGame = 7091; + k_EMsgGCWatchGameResponse = 7092; + k_EMsgGCBanStatusRequest = 7093; + k_EMsgGCBanStatusResponse = 7094; + k_EMsgGCMatchDetailsRequest = 7095; + k_EMsgGCMatchDetailsResponse = 7096; + k_EMsgGCCancelWatchGame = 7097; + k_EMsgGCPopup = 7102; + k_EMsgGCFriendPracticeLobbyListRequest = 7111; + k_EMsgGCFriendPracticeLobbyListResponse = 7112; + k_EMsgGCPracticeLobbyJoinResponse = 7113; + k_EMsgGCCreateTeam = 7115; + k_EMsgGCCreateTeamResponse = 7116; + k_EMsgGCTeamInvite_InviterToGC = 7122; + k_EMsgGCTeamInvite_GCImmediateResponseToInviter = 7123; + k_EMsgGCTeamInvite_GCRequestToInvitee = 7124; + k_EMsgGCTeamInvite_InviteeResponseToGC = 7125; + k_EMsgGCTeamInvite_GCResponseToInviter = 7126; + k_EMsgGCTeamInvite_GCResponseToInvitee = 7127; + k_EMsgGCKickTeamMember = 7128; + k_EMsgGCKickTeamMemberResponse = 7129; + k_EMsgGCLeaveTeam = 7130; + k_EMsgGCLeaveTeamResponse = 7131; + k_EMsgGCApplyTeamToPracticeLobby = 7142; + k_EMsgGCTransferTeamAdmin = 7144; + k_EMsgGCPracticeLobbyJoinBroadcastChannel = 7149; + k_EMsgGC_TournamentItemEvent = 7150; + k_EMsgGC_TournamentItemEventResponse = 7151; + k_EMsgTeamFanfare = 7156; + k_EMsgResponseTeamFanfare = 7157; + k_EMsgGCEditTeamDetails = 7166; + k_EMsgGCEditTeamDetailsResponse = 7167; + k_EMsgGCReadyUpStatus = 7170; + k_EMsgGCToGCMatchCompleted = 7186; + k_EMsgGCBalancedShuffleLobby = 7188; + k_EMsgGCMatchmakingStatsRequest = 7197; + k_EMsgGCMatchmakingStatsResponse = 7198; + k_EMsgGCBotGameCreate = 7199; + k_EMsgGCSetMatchHistoryAccess = 7200; + k_EMsgGCSetMatchHistoryAccessResponse = 7201; + k_EMsgUpgradeLeagueItem = 7203; + k_EMsgUpgradeLeagueItemResponse = 7204; + k_EMsgGCWatchDownloadedReplay = 7206; + k_EMsgClientsRejoinChatChannels = 7217; + k_EMsgGCToGCGetUserChatInfo = 7218; + k_EMsgGCToGCGetUserChatInfoResponse = 7219; + k_EMsgGCToGCLeaveAllChatChannels = 7220; + k_EMsgGCToGCUpdateAccountChatBan = 7221; + k_EMsgGCToGCCanInviteUserToTeam = 7234; + k_EMsgGCToGCCanInviteUserToTeamResponse = 7235; + k_EMsgGCToGCGetUserRank = 7236; + k_EMsgGCToGCGetUserRankResponse = 7237; + k_EMsgGCToGCAdjustUserRank = 7238; + k_EMsgGCToGCAdjustUserRankResponse = 7239; + k_EMsgGCToGCUpdateTeamStats = 7240; + k_EMsgGCToGCValidateTeam = 7241; + k_EMsgGCToGCValidateTeamResponse = 7242; + k_EMsgGCToGCGetLeagueAdmin = 7255; + k_EMsgGCToGCGetLeagueAdminResponse = 7256; + k_EMsgGCLeaveChatChannel = 7272; + k_EMsgGCChatMessage = 7273; + k_EMsgGCGetHeroStandings = 7274; + k_EMsgGCGetHeroStandingsResponse = 7275; + k_EMsgGCItemEditorReservationsRequest = 7283; + k_EMsgGCItemEditorReservationsResponse = 7284; + k_EMsgGCItemEditorReserveItemDef = 7285; + k_EMsgGCItemEditorReserveItemDefResponse = 7286; + k_EMsgGCItemEditorReleaseReservation = 7287; + k_EMsgGCItemEditorReleaseReservationResponse = 7288; + k_EMsgGCFantasyLivePlayerStats = 7308; + k_EMsgGCFantasyFinalPlayerStats = 7309; + k_EMsgGCFlipLobbyTeams = 7320; + k_EMsgGCToGCEvaluateReportedPlayer = 7322; + k_EMsgGCToGCEvaluateReportedPlayerResponse = 7323; + k_EMsgGCToGCProcessPlayerReportForTarget = 7324; + k_EMsgGCToGCProcessReportSuccess = 7325; + k_EMsgGCNotifyAccountFlagsChange = 7326; + k_EMsgGCSetProfilePrivacy = 7327; + k_EMsgGCSetProfilePrivacyResponse = 7328; + k_EMsgGCClientSuspended = 7342; + k_EMsgGCPartyMemberSetCoach = 7343; + k_EMsgGCPracticeLobbySetCoach = 7346; + k_EMsgGCChatModeratorBan = 7359; + k_EMsgGCLobbyUpdateBroadcastChannelInfo = 7367; + k_EMsgGCToGCGrantTournamentItem = 7372; + k_EMsgGCToGCUpgradeTwitchViewerItems = 7375; + k_EMsgGCToGCGetLiveMatchAffiliates = 7376; + k_EMsgGCToGCGetLiveMatchAffiliatesResponse = 7377; + k_EMsgGCToGCUpdatePlayerPennantCounts = 7378; + k_EMsgGCToGCGetPlayerPennantCounts = 7379; + k_EMsgGCToGCGetPlayerPennantCountsResponse = 7380; + k_EMsgGCGameMatchSignOutPermissionRequest = 7381; + k_EMsgGCGameMatchSignOutPermissionResponse = 7382; + k_EMsgDOTAAwardEventPoints = 7384; + k_EMsgDOTAGetEventPoints = 7387; + k_EMsgDOTAGetEventPointsResponse = 7388; + k_EMsgGCPartyLeaderWatchGamePrompt = 7397; + k_EMsgGCCompendiumSetSelection = 7405; + k_EMsgGCCompendiumDataRequest = 7406; + k_EMsgGCCompendiumDataResponse = 7407; + k_EMsgDOTAGetPlayerMatchHistory = 7408; + k_EMsgDOTAGetPlayerMatchHistoryResponse = 7409; + k_EMsgGCToGCMatchmakingAddParty = 7410; + k_EMsgGCToGCMatchmakingRemoveParty = 7411; + k_EMsgGCToGCMatchmakingRemoveAllParties = 7412; + k_EMsgGCToGCMatchmakingMatchFound = 7413; + k_EMsgGCToGCUpdateMatchManagementStats = 7414; + k_EMsgGCToGCUpdateMatchmakingStats = 7415; + k_EMsgGCToServerPingRequest = 7416; + k_EMsgGCToServerPingResponse = 7417; + k_EMsgGCToServerEvaluateToxicChat = 7418; + k_EMsgServerToGCEvaluateToxicChat = 7419; + k_EMsgServerToGCEvaluateToxicChatResponse = 7420; + k_EMsgGCToGCProcessMatchLeaver = 7426; + k_EMsgGCNotificationsRequest = 7427; + k_EMsgGCNotificationsResponse = 7428; + k_EMsgGCToGCModifyNotification = 7429; + k_EMsgGCLeagueAdminList = 7434; + k_EMsgGCNotificationsMarkReadRequest = 7435; + k_EMsgServerToGCRequestBatchPlayerResources = 7450; + k_EMsgServerToGCRequestBatchPlayerResourcesResponse = 7451; + k_EMsgGCCompendiumSetSelectionResponse = 7453; + k_EMsgGCRankedPlayerInfoSubmit = 7454; + k_EMsgGCRankedPlayerInfoSubmitResponse = 7455; + k_EMsgGCPlayerInfoSubmit = 7456; + k_EMsgGCPlayerInfoSubmitResponse = 7457; + k_EMsgGCToGCGetAccountLevel = 7458; + k_EMsgGCToGCGetAccountLevelResponse = 7459; + k_EMsgDOTAGetWeekendTourneySchedule = 7464; + k_EMsgDOTAWeekendTourneySchedule = 7465; + k_EMsgGCJoinableCustomGameModesRequest = 7466; + k_EMsgGCJoinableCustomGameModesResponse = 7467; + k_EMsgGCJoinableCustomLobbiesRequest = 7468; + k_EMsgGCJoinableCustomLobbiesResponse = 7469; + k_EMsgGCQuickJoinCustomLobby = 7470; + k_EMsgGCQuickJoinCustomLobbyResponse = 7471; + k_EMsgGCToGCGrantEventPointAction = 7472; + k_EMsgGCToGCSetCompendiumSelection = 7478; + k_EMsgGCHasItemQuery = 7484; + k_EMsgGCHasItemResponse = 7485; + k_EMsgGCToGCGrantEventPointActionMsg = 7488; + k_EMsgGCToGCGetCompendiumSelections = 7492; + k_EMsgGCToGCGetCompendiumSelectionsResponse = 7493; + k_EMsgServerToGCMatchConnectionStats = 7494; + k_EMsgGCToClientTournamentItemDrop = 7495; + k_EMsgSQLDelayedGrantLeagueDrop = 7496; + k_EMsgServerGCUpdateSpectatorCount = 7497; + k_EMsgGCToGCEmoticonUnlock = 7501; + k_EMsgSignOutDraftInfo = 7502; + k_EMsgClientToGCEmoticonDataRequest = 7503; + k_EMsgGCToClientEmoticonData = 7504; + k_EMsgGCPracticeLobbyToggleBroadcastChannelCameramanStatus = 7505; + k_EMsgDOTARedeemItem = 7518; + k_EMsgDOTARedeemItemResponse = 7519; + k_EMsgClientToGCGetAllHeroProgress = 7521; + k_EMsgClientToGCGetAllHeroProgressResponse = 7522; + k_EMsgGCToGCGetServerForClient = 7523; + k_EMsgGCToGCGetServerForClientResponse = 7524; + k_EMsgSQLProcessTournamentGameOutcome = 7525; + k_EMsgSQLGrantTrophyToAccount = 7526; + k_EMsgClientToGCGetTrophyList = 7527; + k_EMsgClientToGCGetTrophyListResponse = 7528; + k_EMsgGCToClientTrophyAwarded = 7529; + k_EMsgGCGameBotMatchSignOut = 7530; + k_EMsgGCGameBotMatchSignOutPermissionRequest = 7531; + k_EMsgSignOutBotInfo = 7532; + k_EMsgGCToGCUpdateProfileCards = 7533; + k_EMsgClientToGCGetProfileCard = 7534; + k_EMsgClientToGCGetProfileCardResponse = 7535; + k_EMsgClientToGCGetBattleReport = 7536; + k_EMsgClientToGCGetBattleReportResponse = 7537; + k_EMsgClientToGCSetProfileCardSlots = 7538; + k_EMsgGCToClientProfileCardUpdated = 7539; + k_EMsgServerToGCVictoryPredictions = 7540; + k_EMsgClientToGCGetBattleReportAggregateStats = 7541; + k_EMsgClientToGCGetBattleReportAggregateStatsResponse = 7542; + k_EMsgClientToGCGetBattleReportInfo = 7543; + k_EMsgClientToGCGetBattleReportInfoResponse = 7544; + k_EMsgSignOutCommunicationSummary = 7545; + k_EMsgServerToGCRequestStatus_Response = 7546; + k_EMsgClientToGCCreateHeroStatue = 7547; + k_EMsgGCToClientHeroStatueCreateResult = 7548; + k_EMsgGCGCToLANServerRelayConnect = 7549; + k_EMsgClientToGCAcknowledgeBattleReport = 7550; + k_EMsgClientToGCAcknowledgeBattleReportResponse = 7551; + k_EMsgClientToGCGetBattleReportMatchHistory = 7552; + k_EMsgClientToGCGetBattleReportMatchHistoryResponse = 7553; + k_EMsgServerToGCReportKillSummaries = 7554; + k_EMsgGCToGCUpdatePlayerPredictions = 7561; + k_EMsgGCToServerPredictionResult = 7562; + k_EMsgGCToGCReplayMonitorValidateReplay = 7569; + k_EMsgLobbyEventPoints = 7572; + k_EMsgGCToGCGetCustomGameTickets = 7573; + k_EMsgGCToGCGetCustomGameTicketsResponse = 7574; + k_EMsgGCToGCCustomGamePlayed = 7576; + k_EMsgGCToGCGrantEventPointsToUser = 7577; + k_EMsgGameserverCrashReport = 7579; + k_EMsgGameserverCrashReportResponse = 7580; + k_EMsgGCToClientSteamDatagramTicket = 7581; + k_EMsgGCToGCSendAccountsEventPoints = 7583; + k_EMsgClientToGCRerollPlayerChallenge = 7584; + k_EMsgServerToGCRerollPlayerChallenge = 7585; + k_EMsgGCRerollPlayerChallengeResponse = 7586; + k_EMsgSignOutUpdatePlayerChallenge = 7587; + k_EMsgClientToGCSetPartyLeader = 7588; + k_EMsgClientToGCCancelPartyInvites = 7589; + k_EMsgSQLGrantLeagueMatchToTicketHolders = 7592; + k_EMsgGCToGCEmoticonUnlockNoRollback = 7594; + k_EMsgClientToGCApplyGemCombiner = 7603; + k_EMsgClientToGCGetAllHeroOrder = 7606; + k_EMsgClientToGCGetAllHeroOrderResponse = 7607; + k_EMsgSQLGCToGCGrantBadgePoints = 7608; + k_EMsgGCToGCCheckOwnsEntireEmoticonRange = 7611; + k_EMsgGCToGCCheckOwnsEntireEmoticonRangeResponse = 7612; + k_EMsgGCToClientRequestLaneSelection = 7623; + k_EMsgGCToClientRequestLaneSelectionResponse = 7624; + k_EMsgServerToGCCavernCrawlIsHeroActive = 7625; + k_EMsgServerToGCCavernCrawlIsHeroActiveResponse = 7626; + k_EMsgClientToGCPlayerCardSpecificPurchaseRequest = 7627; + k_EMsgClientToGCPlayerCardSpecificPurchaseResponse = 7628; + k_EMsgSQLSetIsLeagueAdmin = 7630; + k_EMsgGCToGCGetLiveLeagueMatches = 7631; + k_EMsgGCToGCGetLiveLeagueMatchesResponse = 7632; + k_EMsgDOTALeagueInfoListAdminsRequest = 7633; + k_EMsgDOTALeagueInfoListAdminsReponse = 7634; + k_EMsgGCToGCLeagueMatchStarted = 7645; + k_EMsgGCToGCLeagueMatchCompleted = 7646; + k_EMsgGCToGCLeagueMatchStartedResponse = 7647; + k_EMsgDOTALeagueAvailableLobbyNodesRequest = 7650; + k_EMsgDOTALeagueAvailableLobbyNodes = 7651; + k_EMsgGCToGCLeagueRequest = 7652; + k_EMsgGCToGCLeagueResponse = 7653; + k_EMsgGCToGCLeagueNodeGroupRequest = 7654; + k_EMsgGCToGCLeagueNodeGroupResponse = 7655; + k_EMsgGCToGCLeagueNodeRequest = 7656; + k_EMsgGCToGCLeagueNodeResponse = 7657; + k_EMsgGCToGCRealtimeStatsTerseRequest = 7658; + k_EMsgGCToGCRealtimeStatsTerseResponse = 7659; + k_EMsgGCToGCGetTopMatchesRequest = 7660; + k_EMsgGCToGCGetTopMatchesResponse = 7661; + k_EMsgClientToGCGetFilteredPlayers = 7662; + k_EMsgGCToClientGetFilteredPlayersResponse = 7663; + k_EMsgClientToGCRemoveFilteredPlayer = 7664; + k_EMsgGCToClientRemoveFilteredPlayerResponse = 7665; + k_EMsgGCToClientPlayerBeaconState = 7666; + k_EMsgGCToClientPartyBeaconUpdate = 7667; + k_EMsgGCToClientPartySearchInvite = 7668; + k_EMsgClientToGCUpdatePartyBeacon = 7669; + k_EMsgClientToGCRequestActiveBeaconParties = 7670; + k_EMsgGCToClientRequestActiveBeaconPartiesResponse = 7671; + k_EMsgClientToGCManageFavorites = 7672; + k_EMsgGCToClientManageFavoritesResponse = 7673; + k_EMsgClientToGCJoinPartyFromBeacon = 7674; + k_EMsgGCToClientJoinPartyFromBeaconResponse = 7675; + k_EMsgClientToGCGetFavoritePlayers = 7676; + k_EMsgGCToClientGetFavoritePlayersResponse = 7677; + k_EMsgClientToGCVerifyFavoritePlayers = 7678; + k_EMsgGCToClientVerifyFavoritePlayersResponse = 7679; + k_EMsgGCToClientPartySearchInvites = 7680; + k_EMsgGCToClientRequestMMInfo = 7681; + k_EMsgClientToGCMMInfo = 7682; + k_EMsgSignOutTextMuteInfo = 7683; + k_EMsgClientToGCPurchaseLabyrinthBlessings = 7684; + k_EMsgClientToGCPurchaseLabyrinthBlessingsResponse = 7685; + k_EMsgClientToGCPurchaseFilteredPlayerSlot = 7686; + k_EMsgGCToClientPurchaseFilteredPlayerSlotResponse = 7687; + k_EMsgClientToGCUpdateFilteredPlayerNote = 7688; + k_EMsgGCToClientUpdateFilteredPlayerNoteResponse = 7689; + k_EMsgClientToGCClaimSwag = 7690; + k_EMsgGCToClientClaimSwagResponse = 7691; + k_EMsgServerToGCLockCharmTrading = 8004; + k_EMsgClientToGCPlayerStatsRequest = 8006; + k_EMsgGCToClientPlayerStatsResponse = 8007; + k_EMsgGCClearPracticeLobbyTeam = 8008; + k_EMsgClientToGCFindTopSourceTVGames = 8009; + k_EMsgGCToClientFindTopSourceTVGamesResponse = 8010; + k_EMsgGCLobbyList = 8011; + k_EMsgGCLobbyListResponse = 8012; + k_EMsgGCPlayerStatsMatchSignOut = 8013; + k_EMsgClientToGCSocialFeedPostCommentRequest = 8016; + k_EMsgGCToClientSocialFeedPostCommentResponse = 8017; + k_EMsgClientToGCCustomGamesFriendsPlayedRequest = 8018; + k_EMsgGCToClientCustomGamesFriendsPlayedResponse = 8019; + k_EMsgClientToGCFriendsPlayedCustomGameRequest = 8020; + k_EMsgGCToClientFriendsPlayedCustomGameResponse = 8021; + k_EMsgGCTopCustomGamesList = 8024; + k_EMsgClientToGCSetPartyOpen = 8029; + k_EMsgClientToGCMergePartyInvite = 8030; + k_EMsgGCToClientMergeGroupInviteReply = 8031; + k_EMsgClientToGCMergePartyResponse = 8032; + k_EMsgGCToClientMergePartyResponseReply = 8033; + k_EMsgClientToGCGetProfileCardStats = 8034; + k_EMsgClientToGCGetProfileCardStatsResponse = 8035; + k_EMsgClientToGCTopLeagueMatchesRequest = 8036; + k_EMsgClientToGCTopFriendMatchesRequest = 8037; + k_EMsgGCToClientProfileCardStatsUpdated = 8040; + k_EMsgServerToGCRealtimeStats = 8041; + k_EMsgGCToServerRealtimeStatsStartStop = 8042; + k_EMsgGCToGCGetServersForClients = 8045; + k_EMsgGCToGCGetServersForClientsResponse = 8046; + k_EMsgGCPracticeLobbyKickFromTeam = 8047; + k_EMsgDOTAChatGetMemberCount = 8048; + k_EMsgDOTAChatGetMemberCountResponse = 8049; + k_EMsgClientToGCSocialFeedPostMessageRequest = 8050; + k_EMsgGCToClientSocialFeedPostMessageResponse = 8051; + k_EMsgCustomGameListenServerStartedLoading = 8052; + k_EMsgCustomGameClientFinishedLoading = 8053; + k_EMsgGCPracticeLobbyCloseBroadcastChannel = 8054; + k_EMsgGCStartFindingMatchResponse = 8055; + k_EMsgSQLGCToGCGrantAccountFlag = 8057; + k_EMsgGCToClientTopLeagueMatchesResponse = 8061; + k_EMsgGCToClientTopFriendMatchesResponse = 8062; + k_EMsgClientToGCMatchesMinimalRequest = 8063; + k_EMsgClientToGCMatchesMinimalResponse = 8064; + k_EMsgGCToClientChatRegionsEnabled = 8067; + k_EMsgClientToGCPingData = 8068; + k_EMsgGCToGCEnsureAccountInParty = 8071; + k_EMsgGCToGCEnsureAccountInPartyResponse = 8072; + k_EMsgClientToGCGetProfileTickets = 8073; + k_EMsgClientToGCGetProfileTicketsResponse = 8074; + k_EMsgGCToClientMatchGroupsVersion = 8075; + k_EMsgClientToGCH264Unsupported = 8076; + k_EMsgClientToGCWatchingBroadcast = 8077; + k_EMsgClientToGCGetQuestProgress = 8078; + k_EMsgClientToGCGetQuestProgressResponse = 8079; + k_EMsgSignOutXPCoins = 8080; + k_EMsgGCToClientMatchSignedOut = 8081; + k_EMsgGCGetHeroStatsHistory = 8082; + k_EMsgGCGetHeroStatsHistoryResponse = 8083; + k_EMsgClientToGCPrivateChatInvite = 8084; + k_EMsgClientToGCPrivateChatKick = 8088; + k_EMsgClientToGCPrivateChatPromote = 8089; + k_EMsgClientToGCPrivateChatDemote = 8090; + k_EMsgGCToClientPrivateChatResponse = 8091; + k_EMsgClientToGCLatestConductScorecardRequest = 8095; + k_EMsgClientToGCLatestConductScorecard = 8096; + k_EMsgClientToGCWageringRequest = 8099; + k_EMsgGCToClientWageringResponse = 8100; + k_EMsgClientToGCEventGoalsRequest = 8103; + k_EMsgClientToGCEventGoalsResponse = 8104; + k_EMsgGCToGCLeaguePredictionsUpdate = 8108; + k_EMsgGCToGCAddUserToPostGameChat = 8110; + k_EMsgClientToGCHasPlayerVotedForMVP = 8111; + k_EMsgClientToGCHasPlayerVotedForMVPResponse = 8112; + k_EMsgClientToGCVoteForMVP = 8113; + k_EMsgClientToGCVoteForMVPResponse = 8114; + k_EMsgGCToGCGetEventParticipation = 8115; + k_EMsgGCToGCGetEventParticipationResponse = 8116; + k_EMsgGCToClientAutomatedTournamentStateChange = 8117; + k_EMsgClientToGCWeekendTourneyOpts = 8118; + k_EMsgClientToGCWeekendTourneyOptsResponse = 8119; + k_EMsgClientToGCWeekendTourneyLeave = 8120; + k_EMsgClientToGCWeekendTourneyLeaveResponse = 8121; + k_EMsgClientToGCTeammateStatsRequest = 8124; + k_EMsgClientToGCTeammateStatsResponse = 8125; + k_EMsgClientToGCGetGiftPermissions = 8126; + k_EMsgClientToGCGetGiftPermissionsResponse = 8127; + k_EMsgClientToGCVoteForArcana = 8128; + k_EMsgClientToGCVoteForArcanaResponse = 8129; + k_EMsgClientToGCRequestArcanaVotesRemaining = 8130; + k_EMsgClientToGCRequestArcanaVotesRemainingResponse = 8131; + k_EMsgGCTransferTeamAdminResponse = 8132; + k_EMsgGCToClientTeamInfo = 8135; + k_EMsgGCToClientTeamsInfo = 8136; + k_EMsgClientToGCMyTeamInfoRequest = 8137; + k_EMsgClientToGCPublishUserStat = 8140; + k_EMsgGCToGCSignoutSpendWager = 8141; + k_EMsgGCSubmitLobbyMVPVote = 8144; + k_EMsgGCSubmitLobbyMVPVoteResponse = 8145; + k_EMsgSignOutCommunityGoalProgress = 8150; + k_EMsgGCToClientLobbyMVPAwarded = 8152; + k_EMsgGCToClientQuestProgressUpdated = 8153; + k_EMsgGCToClientWageringUpdate = 8154; + k_EMsgGCToClientArcanaVotesUpdate = 8155; + k_EMsgClientToGCSetSpectatorLobbyDetails = 8157; + k_EMsgClientToGCSetSpectatorLobbyDetailsResponse = 8158; + k_EMsgClientToGCCreateSpectatorLobby = 8159; + k_EMsgClientToGCCreateSpectatorLobbyResponse = 8160; + k_EMsgClientToGCSpectatorLobbyList = 8161; + k_EMsgClientToGCSpectatorLobbyListResponse = 8162; + k_EMsgSpectatorLobbyGameDetails = 8163; + k_EMsgServerToGCCompendiumInGamePredictionResults = 8166; + k_EMsgServerToGCCloseCompendiumInGamePredictionVoting = 8167; + k_EMsgClientToGCOpenPlayerCardPack = 8168; + k_EMsgClientToGCOpenPlayerCardPackResponse = 8169; + k_EMsgClientToGCSelectCompendiumInGamePrediction = 8170; + k_EMsgClientToGCSelectCompendiumInGamePredictionResponse = 8171; + k_EMsgClientToGCWeekendTourneyGetPlayerStats = 8172; + k_EMsgClientToGCWeekendTourneyGetPlayerStatsResponse = 8173; + k_EMsgClientToGCRecyclePlayerCard = 8174; + k_EMsgClientToGCRecyclePlayerCardResponse = 8175; + k_EMsgClientToGCCreatePlayerCardPack = 8176; + k_EMsgClientToGCCreatePlayerCardPackResponse = 8177; + k_EMsgClientToGCGetPlayerCardRosterRequest = 8178; + k_EMsgClientToGCGetPlayerCardRosterResponse = 8179; + k_EMsgClientToGCSetPlayerCardRosterRequest = 8180; + k_EMsgClientToGCSetPlayerCardRosterResponse = 8181; + k_EMsgServerToGCCloseCompendiumInGamePredictionVotingResponse = 8183; + k_EMsgLobbyBattleCupVictory = 8186; + k_EMsgGCGetPlayerCardItemInfo = 8187; + k_EMsgGCGetPlayerCardItemInfoResponse = 8188; + k_EMsgClientToGCRequestSteamDatagramTicket = 8189; + k_EMsgClientToGCRequestSteamDatagramTicketResponse = 8190; + k_EMsgGCToClientBattlePassRollupRequest = 8191; + k_EMsgGCToClientBattlePassRollupResponse = 8192; + k_EMsgClientToGCTransferSeasonalMMRRequest = 8193; + k_EMsgClientToGCTransferSeasonalMMRResponse = 8194; + k_EMsgGCToGCPublicChatCommunicationBan = 8195; + k_EMsgGCToGCUpdateAccountInfo = 8196; + k_EMsgGCChatReportPublicSpam = 8197; + k_EMsgClientToGCSetPartyBuilderOptions = 8198; + k_EMsgClientToGCSetPartyBuilderOptionsResponse = 8199; + k_EMsgGCToClientPlaytestStatus = 8200; + k_EMsgClientToGCJoinPlaytest = 8201; + k_EMsgClientToGCJoinPlaytestResponse = 8202; + k_EMsgLobbyPlaytestDetails = 8203; + k_EMsgDOTASetFavoriteTeam = 8204; + k_EMsgGCToClientBattlePassRollupListRequest = 8205; + k_EMsgGCToClientBattlePassRollupListResponse = 8206; + k_EMsgDOTAClaimEventAction = 8209; + k_EMsgDOTAClaimEventActionResponse = 8210; + k_EMsgDOTAGetPeriodicResource = 8211; + k_EMsgDOTAGetPeriodicResourceResponse = 8212; + k_EMsgDOTAPeriodicResourceUpdated = 8213; + k_EMsgServerToGCSpendWager = 8214; + k_EMsgGCToGCSignoutSpendWagerToken = 8215; + k_EMsgSubmitTriviaQuestionAnswer = 8216; + k_EMsgSubmitTriviaQuestionAnswerResponse = 8217; + k_EMsgClientToGCGiveTip = 8218; + k_EMsgClientToGCGiveTipResponse = 8219; + k_EMsgStartTriviaSession = 8220; + k_EMsgStartTriviaSessionResponse = 8221; + k_EMsgAnchorPhoneNumberRequest = 8222; + k_EMsgAnchorPhoneNumberResponse = 8223; + k_EMsgUnanchorPhoneNumberRequest = 8224; + k_EMsgUnanchorPhoneNumberResponse = 8225; + k_EMsgGCToGCSignoutSpendRankWager = 8229; + k_EMsgGCToGCGetFavoriteTeam = 8230; + k_EMsgGCToGCGetFavoriteTeamResponse = 8231; + k_EMsgSignOutEventGameData = 8232; + k_EMsgClientToGCQuickStatsRequest = 8238; + k_EMsgClientToGCQuickStatsResponse = 8239; + k_EMsgGCToGCSubtractEventPointsFromUser = 8240; + k_EMsgSelectionPriorityChoiceRequest = 8241; + k_EMsgSelectionPriorityChoiceResponse = 8242; + k_EMsgGCToGCCompendiumInGamePredictionResults = 8243; + k_EMsgGameAutographReward = 8244; + k_EMsgGameAutographRewardResponse = 8245; + k_EMsgDestroyLobbyRequest = 8246; + k_EMsgDestroyLobbyResponse = 8247; + k_EMsgPurchaseItemWithEventPoints = 8248; + k_EMsgPurchaseItemWithEventPointsResponse = 8249; + k_EMsgServerToGCMatchPlayerItemPurchaseHistory = 8250; + k_EMsgGCToGCGrantPlusHeroMatchResults = 8251; + k_EMsgServerToGCMatchStateHistory = 8255; + k_EMsgPurchaseHeroRandomRelic = 8258; + k_EMsgPurchaseHeroRandomRelicResponse = 8259; + k_EMsgClientToGCClaimEventActionUsingItem = 8260; + k_EMsgClientToGCClaimEventActionUsingItemResponse = 8261; + k_EMsgPartyReadyCheckRequest = 8262; + k_EMsgPartyReadyCheckResponse = 8263; + k_EMsgPartyReadyCheckAcknowledge = 8264; + k_EMsgGetRecentPlayTimeFriendsRequest = 8265; + k_EMsgGetRecentPlayTimeFriendsResponse = 8266; + k_EMsgGCToClientCommendNotification = 8267; + k_EMsgProfileRequest = 8268; + k_EMsgProfileResponse = 8269; + k_EMsgProfileUpdate = 8270; + k_EMsgProfileUpdateResponse = 8271; + k_EMsgHeroGlobalDataRequest = 8274; + k_EMsgHeroGlobalDataResponse = 8275; + k_EMsgClientToGCRequestPlusWeeklyChallengeResult = 8276; + k_EMsgClientToGCRequestPlusWeeklyChallengeResultResponse = 8277; + k_EMsgGCToGCGrantPlusPrepaidTime = 8278; + k_EMsgPrivateMetadataKeyRequest = 8279; + k_EMsgPrivateMetadataKeyResponse = 8280; + k_EMsgGCToGCReconcilePlusStatus = 8281; + k_EMsgGCToGCCheckPlusStatus = 8282; + k_EMsgGCToGCCheckPlusStatusResponse = 8283; + k_EMsgGCToGCReconcilePlusAutoGrantItems = 8284; + k_EMsgGCToGCReconcilePlusStatusUnreliable = 8285; + k_EMsgGCToClientCavernCrawlMapPathCompleted = 8288; + k_EMsgClientToGCCavernCrawlClaimRoom = 8289; + k_EMsgClientToGCCavernCrawlClaimRoomResponse = 8290; + k_EMsgClientToGCCavernCrawlUseItemOnRoom = 8291; + k_EMsgClientToGCCavernCrawlUseItemOnRoomResponse = 8292; + k_EMsgClientToGCCavernCrawlUseItemOnPath = 8293; + k_EMsgClientToGCCavernCrawlUseItemOnPathResponse = 8294; + k_EMsgClientToGCCavernCrawlRequestMapState = 8295; + k_EMsgClientToGCCavernCrawlRequestMapStateResponse = 8296; + k_EMsgSignOutTips = 8297; + k_EMsgClientToGCRequestEventPointLogV2 = 8298; + k_EMsgClientToGCRequestEventPointLogResponseV2 = 8299; + k_EMsgClientToGCRequestEventTipsSummary = 8300; + k_EMsgClientToGCRequestEventTipsSummaryResponse = 8301; + k_EMsgClientToGCRequestSocialFeed = 8303; + k_EMsgClientToGCRequestSocialFeedResponse = 8304; + k_EMsgClientToGCRequestSocialFeedComments = 8305; + k_EMsgClientToGCRequestSocialFeedCommentsResponse = 8306; + k_EMsgClientToGCCavernCrawlGetClaimedRoomCount = 8308; + k_EMsgClientToGCCavernCrawlGetClaimedRoomCountResponse = 8309; + k_EMsgGCToGCReconcilePlusAutoGrantItemsUnreliable = 8310; + k_EMsgServerToGCAddBroadcastTimelineEvent = 8311; + k_EMsgGCToServerUpdateSteamBroadcasting = 8312; + k_EMsgClientToGCRecordContestVote = 8313; + k_EMsgGCToClientRecordContestVoteResponse = 8314; + k_EMsgGCToGCGrantAutograph = 8315; + k_EMsgGCToGCGrantAutographResponse = 8316; + k_EMsgSignOutConsumableUsage = 8317; + k_EMsgLobbyEventGameDetails = 8318; + k_EMsgDevGrantEventPoints = 8319; + k_EMsgDevGrantEventPointsResponse = 8320; + k_EMsgDevGrantEventAction = 8321; + k_EMsgDevGrantEventActionResponse = 8322; + k_EMsgDevResetEventState = 8323; + k_EMsgDevResetEventStateResponse = 8324; + k_EMsgGCToGCReconcileEventOwnership = 8325; + k_EMsgConsumeEventSupportGrantItem = 8326; + k_EMsgConsumeEventSupportGrantItemResponse = 8327; + k_EMsgGCToClientClaimEventActionUsingItemCompleted = 8328; + k_EMsgGCToClientCavernCrawlMapUpdated = 8329; + k_EMsgServerToGCRequestPlayerRecentAccomplishments = 8330; + k_EMsgServerToGCRequestPlayerRecentAccomplishmentsResponse = 8331; + k_EMsgClientToGCRequestPlayerRecentAccomplishments = 8332; + k_EMsgClientToGCRequestPlayerRecentAccomplishmentsResponse = 8333; + k_EMsgClientToGCRequestPlayerHeroRecentAccomplishments = 8334; + k_EMsgClientToGCRequestPlayerHeroRecentAccomplishmentsResponse = 8335; + k_EMsgSignOutEventActionGrants = 8336; + k_EMsgClientToGCRequestPlayerCoachMatches = 8337; + k_EMsgClientToGCRequestPlayerCoachMatchesResponse = 8338; + k_EMsgClientToGCSubmitCoachTeammateRating = 8341; + k_EMsgClientToGCSubmitCoachTeammateRatingResponse = 8342; + k_EMsgGCToClientCoachTeammateRatingsChanged = 8343; + k_EMsgClientToGCRequestPlayerCoachMatch = 8345; + k_EMsgClientToGCRequestPlayerCoachMatchResponse = 8346; + k_EMsgClientToGCRequestContestVotes = 8347; + k_EMsgClientToGCRequestContestVotesResponse = 8348; + k_EMsgClientToGCMVPVoteTimeout = 8349; + k_EMsgClientToGCMVPVoteTimeoutResponse = 8350; + k_EMsgMatchMatchmakingStats = 8360; + k_EMsgClientToGCSubmitPlayerMatchSurvey = 8361; + k_EMsgClientToGCSubmitPlayerMatchSurveyResponse = 8362; + k_EMsgSQLGCToGCGrantAllHeroProgressAccount = 8363; + k_EMsgSQLGCToGCGrantAllHeroProgressVictory = 8364; + k_EMsgDevDeleteEventActions = 8365; + k_EMsgDevDeleteEventActionsResponse = 8366; + k_EMsgDevReloadAllEvents = 8367; + k_EMsgDevReloadAllEventsResponse = 8368; + k_EMsgGCToGCGetAllHeroCurrent = 8635; + k_EMsgGCToGCGetAllHeroCurrentResponse = 8636; + k_EMsgGCSubmitPlayerAvoidRequest = 8637; + k_EMsgGCSubmitPlayerAvoidRequestResponse = 8638; + k_EMsgGCToClientNotificationsUpdated = 8639; + k_EMsgGCtoGCAssociatedExploiterAccountInfo = 8640; + k_EMsgGCtoGCAssociatedExploiterAccountInfoResponse = 8641; + k_EMsgGCtoGCRequestRecalibrationCheck = 8642; + k_EMsgGCToClientVACReminder = 8643; + k_EMsgClientToGCUnderDraftBuy = 8644; + k_EMsgClientToGCUnderDraftBuyResponse = 8645; + k_EMsgClientToGCUnderDraftReroll = 8646; + k_EMsgClientToGCUnderDraftRerollResponse = 8647; + k_EMsgNeutralItemStats = 8648; + k_EMsgClientToGCCreateGuild = 8649; + k_EMsgClientToGCCreateGuildResponse = 8650; + k_EMsgClientToGCSetGuildInfo = 8651; + k_EMsgClientToGCSetGuildInfoResponse = 8652; + k_EMsgClientToGCAddGuildRole = 8653; + k_EMsgClientToGCAddGuildRoleResponse = 8654; + k_EMsgClientToGCModifyGuildRole = 8655; + k_EMsgClientToGCModifyGuildRoleResponse = 8656; + k_EMsgClientToGCRemoveGuildRole = 8657; + k_EMsgClientToGCRemoveGuildRoleResponse = 8658; + k_EMsgClientToGCJoinGuild = 8659; + k_EMsgClientToGCJoinGuildResponse = 8660; + k_EMsgClientToGCLeaveGuild = 8661; + k_EMsgClientToGCLeaveGuildResponse = 8662; + k_EMsgClientToGCInviteToGuild = 8663; + k_EMsgClientToGCInviteToGuildResponse = 8664; + k_EMsgClientToGCDeclineInviteToGuild = 8665; + k_EMsgClientToGCDeclineInviteToGuildResponse = 8666; + k_EMsgClientToGCCancelInviteToGuild = 8667; + k_EMsgClientToGCCancelInviteToGuildResponse = 8668; + k_EMsgClientToGCKickGuildMember = 8669; + k_EMsgClientToGCKickGuildMemberResponse = 8670; + k_EMsgClientToGCSetGuildMemberRole = 8671; + k_EMsgClientToGCSetGuildMemberRoleResponse = 8672; + k_EMsgClientToGCRequestGuildData = 8673; + k_EMsgClientToGCRequestGuildDataResponse = 8674; + k_EMsgGCToClientGuildDataUpdated = 8675; + k_EMsgClientToGCRequestGuildMembership = 8676; + k_EMsgClientToGCRequestGuildMembershipResponse = 8677; + k_EMsgGCToClientGuildMembershipUpdated = 8678; + k_EMsgClientToGCAcceptInviteToGuild = 8681; + k_EMsgClientToGCAcceptInviteToGuildResponse = 8682; + k_EMsgClientToGCSetGuildRoleOrder = 8683; + k_EMsgClientToGCSetGuildRoleOrderResponse = 8684; + k_EMsgClientToGCRequestGuildFeed = 8685; + k_EMsgClientToGCRequestGuildFeedResponse = 8686; + k_EMsgClientToGCRequestAccountGuildEventData = 8687; + k_EMsgClientToGCRequestAccountGuildEventDataResponse = 8688; + k_EMsgGCToClientAccountGuildEventDataUpdated = 8689; + k_EMsgClientToGCRequestActiveGuildContracts = 8690; + k_EMsgClientToGCRequestActiveGuildContractsResponse = 8691; + k_EMsgGCToClientActiveGuildContractsUpdated = 8692; + k_EMsgGCToClientGuildFeedUpdated = 8693; + k_EMsgClientToGCSelectGuildContract = 8694; + k_EMsgClientToGCSelectGuildContractResponse = 8695; + k_EMsgGCToGCCompleteGuildContracts = 8696; + k_EMsgClientToGCAddPlayerToGuildChat = 8698; + k_EMsgClientToGCAddPlayerToGuildChatResponse = 8699; + k_EMsgClientToGCUnderDraftSell = 8700; + k_EMsgClientToGCUnderDraftSellResponse = 8701; + k_EMsgClientToGCUnderDraftRequest = 8702; + k_EMsgClientToGCUnderDraftResponse = 8703; + k_EMsgClientToGCUnderDraftRedeemReward = 8704; + k_EMsgClientToGCUnderDraftRedeemRewardResponse = 8705; + k_EMsgGCToServerLobbyHeroBanRates = 8708; + k_EMsgSignOutGuildContractProgress = 8711; + k_EMsgSignOutMVPStats = 8712; + k_EMsgClientToGCRequestActiveGuildChallenge = 8713; + k_EMsgClientToGCRequestActiveGuildChallengeResponse = 8714; + k_EMsgGCToClientActiveGuildChallengeUpdated = 8715; + k_EMsgClientToGCRequestReporterUpdates = 8716; + k_EMsgClientToGCRequestReporterUpdatesResponse = 8717; + k_EMsgClientToGCAcknowledgeReporterUpdates = 8718; + k_EMsgSignOutGuildChallengeProgress = 8720; + k_EMsgClientToGCRequestGuildEventMembers = 8721; + k_EMsgClientToGCRequestGuildEventMembersResponse = 8722; + k_EMsgClientToGCReportGuildContent = 8725; + k_EMsgClientToGCReportGuildContentResponse = 8726; + k_EMsgClientToGCRequestAccountGuildPersonaInfo = 8727; + k_EMsgClientToGCRequestAccountGuildPersonaInfoResponse = 8728; + k_EMsgClientToGCRequestAccountGuildPersonaInfoBatch = 8729; + k_EMsgClientToGCRequestAccountGuildPersonaInfoBatchResponse = 8730; + k_EMsgGCToClientUnderDraftGoldUpdated = 8731; + k_EMsgSignOutBounties = 8733; + k_EMsgLobbyFeaturedGamemodeProgress = 8734; + k_EMsgLobbyGauntletProgress = 8735; + k_EMsgClientToGCSubmitDraftTriviaMatchAnswer = 8736; + k_EMsgClientToGCSubmitDraftTriviaMatchAnswerResponse = 8737; + k_EMsgGCToGCSignoutSpendBounty = 8738; + k_EMsgClientToGCApplyGauntletTicket = 8739; + k_EMsgClientToGCUnderDraftRollBackBench = 8740; + k_EMsgClientToGCUnderDraftRollBackBenchResponse = 8741; + k_EMsgGCToGCGetEventActionScore = 8742; + k_EMsgGCToGCGetEventActionScoreResponse = 8743; + k_EMsgServerToGCGetGuildContracts = 8744; + k_EMsgServerToGCGetGuildContractsResponse = 8745; + k_EMsgLobbyEventGameData = 8746; + k_EMsgGCToClientGuildMembersDataUpdated = 8747; + k_EMsgSignOutReportActivityMarkers = 8748; + k_EMsgSignOutDiretideCandy = 8749; + k_EMsgGCToClientPostGameItemAwardNotification = 8750; + k_EMsgClientToGCGetOWMatchDetails = 8751; + k_EMsgClientToGCGetOWMatchDetailsResponse = 8752; + k_EMsgClientToGCSubmitOWConviction = 8753; + k_EMsgClientToGCSubmitOWConvictionResponse = 8754; + k_EMsgGCToGCGetAccountSteamChina = 8755; + k_EMsgGCToGCGetAccountSteamChinaResponse = 8756; + k_EMsgClientToGCClaimLeaderboardRewards = 8757; + k_EMsgClientToGCClaimLeaderboardRewardsResponse = 8758; + k_EMsgClientToGCRecalibrateMMR = 8759; + k_EMsgClientToGCRecalibrateMMRResponse = 8760; + k_EMsgGCToGCGrantEventPointActionList = 8761; + k_EMsgClientToGCChinaSSAURLRequest = 8764; + k_EMsgClientToGCChinaSSAURLResponse = 8765; + k_EMsgClientToGCChinaSSAAcceptedRequest = 8766; + k_EMsgClientToGCChinaSSAAcceptedResponse = 8767; + k_EMsgSignOutOverwatchSuspicion = 8768; + k_EMsgServerToGCGetSuspicionConfig = 8769; + k_EMsgServerToGCGetSuspicionConfigResponse = 8770; + k_EMsgGCToGCGrantPlusHeroChallengeMatchResults = 8771; + k_EMsgGCToClientOverwatchCasesAvailable = 8772; + k_EMsgServerToGCAccountCheck = 8773; + k_EMsgClientToGCStartWatchingOverwatch = 8774; + k_EMsgClientToGCStopWatchingOverwatch = 8775; + k_EMsgSignOutPerfData = 8776; + k_EMsgClientToGCGetDPCFavorites = 8777; + k_EMsgClientToGCGetDPCFavoritesResponse = 8778; + k_EMsgClientToGCSetDPCFavoriteState = 8779; + k_EMsgClientToGCSetDPCFavoriteStateResponse = 8780; + k_EMsgClientToGCOverwatchReplayError = 8781; + k_EMsgServerToGCPlayerChallengeHistory = 8782; + k_EMsgSignOutBanData = 8783; + k_EMsgWebapiDPCSeasonResults = 8784; + k_EMsgClientToGCCoachFriend = 8785; + k_EMsgClientToGCCoachFriendResponse = 8786; + k_EMsgClientToGCRequestPrivateCoachingSession = 8787; + k_EMsgClientToGCRequestPrivateCoachingSessionResponse = 8788; + k_EMsgClientToGCAcceptPrivateCoachingSession = 8789; + k_EMsgClientToGCAcceptPrivateCoachingSessionResponse = 8790; + k_EMsgClientToGCLeavePrivateCoachingSession = 8791; + k_EMsgClientToGCLeavePrivateCoachingSessionResponse = 8792; + k_EMsgClientToGCGetCurrentPrivateCoachingSession = 8793; + k_EMsgClientToGCGetCurrentPrivateCoachingSessionResponse = 8794; + k_EMsgGCToClientPrivateCoachingSessionUpdated = 8795; + k_EMsgClientToGCSubmitPrivateCoachingSessionRating = 8796; + k_EMsgClientToGCSubmitPrivateCoachingSessionRatingResponse = 8797; + k_EMsgClientToGCGetAvailablePrivateCoachingSessions = 8798; + k_EMsgClientToGCGetAvailablePrivateCoachingSessionsResponse = 8799; + k_EMsgClientToGCGetAvailablePrivateCoachingSessionsSummary = 8800; + k_EMsgClientToGCGetAvailablePrivateCoachingSessionsSummaryResponse = 8801; + k_EMsgClientToGCJoinPrivateCoachingSessionLobby = 8802; + k_EMsgClientToGCJoinPrivateCoachingSessionLobbyResponse = 8803; + k_EMsgClientToGCRespondToCoachFriendRequest = 8804; + k_EMsgClientToGCRespondToCoachFriendRequestResponse = 8805; + k_EMsgClientToGCSetEventActiveSeasonID = 8806; + k_EMsgClientToGCSetEventActiveSeasonIDResponse = 8807; + k_EMsgServerToGCMatchPlayerNeutralItemEquipHistory = 8808; + k_EMsgServerToGCCompendiumChosenInGamePredictions = 8809; + k_EMsgClientToGCCreateTeamPlayerCardPack = 8810; + k_EMsgClientToGCCreateTeamPlayerCardPackResponse = 8811; + k_EMsgGCToServerSubmitCheerData = 8812; + k_EMsgGCToServerCheerConfig = 8813; + k_EMsgServerToGCGetCheerConfig = 8814; + k_EMsgServerToGCGetCheerConfigResponse = 8815; + k_EMsgGCToGCGrantAutographByID = 8816; + k_EMsgGCToServerCheerScalesOverride = 8817; + k_EMsgGCToServerGetCheerState = 8818; + k_EMsgServerToGCReportCheerState = 8819; + k_EMsgGCToServerScenarioSave = 8820; + k_EMsgGCToServerAbilityDraftLobbyData = 8821; + k_EMsgSignOutReportCommunications = 8822; + k_EMsgClientToGCBatchGetPlayerCardRosterRequest = 8823; + k_EMsgClientToGCBatchGetPlayerCardRosterResponse = 8824; + k_EMsgClientToGCGetStickerbookRequest = 8825; + k_EMsgClientToGCGetStickerbookResponse = 8826; + k_EMsgClientToGCCreateStickerbookPageRequest = 8827; + k_EMsgClientToGCCreateStickerbookPageResponse = 8828; + k_EMsgClientToGCDeleteStickerbookPageRequest = 8829; + k_EMsgClientToGCDeleteStickerbookPageResponse = 8830; + k_EMsgClientToGCPlaceStickersRequest = 8831; + k_EMsgClientToGCPlaceStickersResponse = 8832; + k_EMsgClientToGCPlaceCollectionStickersRequest = 8833; + k_EMsgClientToGCPlaceCollectionStickersResponse = 8834; + k_EMsgClientToGCOrderStickerbookTeamPageRequest = 8835; + k_EMsgClientToGCOrderStickerbookTeamPageResponse = 8836; + k_EMsgServerToGCGetStickerHeroes = 8837; + k_EMsgServerToGCGetStickerHeroesResponse = 8838; + k_EMsgClientToGCCandyShopGetUserData = 8840; + k_EMsgClientToGCCandyShopGetUserDataResponse = 8841; + k_EMsgGCToClientCandyShopUserDataUpdated = 8842; + k_EMsgClientToGCCandyShopPurchaseReward = 8843; + k_EMsgClientToGCCandyShopPurchaseRewardResponse = 8844; + k_EMsgClientToGCCandyShopDoExchange = 8845; + k_EMsgClientToGCCandyShopDoExchangeResponse = 8846; + k_EMsgClientToGCCandyShopDoVariableExchange = 8847; + k_EMsgClientToGCCandyShopDoVariableExchangeResponse = 8848; + k_EMsgClientToGCCandyShopRerollRewards = 8849; + k_EMsgClientToGCCandyShopRerollRewardsResponse = 8850; + k_EMsgClientToGCSetHeroSticker = 8851; + k_EMsgClientToGCSetHeroStickerResponse = 8852; + k_EMsgClientToGCGetHeroStickers = 8853; + k_EMsgClientToGCGetHeroStickersResponse = 8854; + k_EMsgClientToGCSetFavoritePage = 8855; + k_EMsgClientToGCSetFavoritePageResponse = 8856; + k_EMsgClientToGCCandyShopDevGrantCandy = 8857; + k_EMsgClientToGCCandyShopDevGrantCandyResponse = 8858; + k_EMsgClientToGCCandyShopDevClearInventory = 8859; + k_EMsgClientToGCCandyShopDevClearInventoryResponse = 8860; + k_EMsgClientToGCCandyShopOpenBags = 8861; + k_EMsgClientToGCCandyShopOpenBagsResponse = 8862; + k_EMsgClientToGCCandyShopDevGrantCandyBags = 8863; + k_EMsgClientToGCCandyShopDevGrantCandyBagsResponse = 8864; + k_EMsgClientToGCCandyShopDevShuffleExchange = 8865; + k_EMsgClientToGCCandyShopDevShuffleExchangeResponse = 8866; + k_EMsgClientToGCCandyShopDevGrantRerollCharges = 8867; + k_EMsgClientToGCCandyShopDevGrantRerollChargesResponse = 8868; + k_EMsgLobbyAdditionalAccountData = 8869; + k_EMsgServerToGCLobbyInitialized = 8870; + k_EMsgClientToGCCollectorsCacheAvailableDataRequest = 8871; + k_EMsgGCToClientCollectorsCacheAvailableDataResponse = 8872; + k_EMsgClientToGCUploadMatchClip = 8873; + k_EMsgGCToClientUploadMatchClipResponse = 8874; + k_EMsgSignOutMuertaMinigame = 8877; + k_EMsgGCToServerLobbyHeroRoleStats = 8878; + k_EMsgClientToGCRankRequest = 8879; + k_EMsgGCToClientRankResponse = 8880; + k_EMsgGCToClientRankUpdate = 8881; + k_EMsgSignOutMapStats = 8882; + k_EMsgClientToGCMapStatsRequest = 8883; + k_EMsgGCToClientMapStatsResponse = 8884; + k_EMsgClientToGCShowcaseGetUserData = 8886; + k_EMsgClientToGCShowcaseGetUserDataResponse = 8887; + k_EMsgClientToGCShowcaseSetUserData = 8888; + k_EMsgClientToGCShowcaseSetUserDataResponse = 8889; + k_EMsgClientToGCFantasyCraftingGetData = 8890; + k_EMsgClientToGCFantasyCraftingGetDataResponse = 8891; + k_EMsgClientToGCFantasyCraftingPerformOperation = 8892; + k_EMsgClientToGCFantasyCraftingPerformOperationResponse = 8893; + k_EMsgGCToClientFantasyCraftingGetDataUpdated = 8894; + k_EMsgClientToGCFantasyCraftingDevModifyTablet = 8895; + k_EMsgClientToGCFantasyCraftingDevModifyTabletResponse = 8896; + k_EMsgClientToGCRoadToTIGetQuests = 8897; + k_EMsgClientToGCRoadToTIGetQuestsResponse = 8898; + k_EMsgClientToGCRoadToTIGetActiveQuest = 8899; + k_EMsgClientToGCRoadToTIGetActiveQuestResponse = 8900; + k_EMsgClientToGCBingoGetUserData = 8901; + k_EMsgClientToGCBingoGetUserDataResponse = 8902; + k_EMsgClientToGCBingoClaimRow = 8903; + k_EMsgClientToGCBingoClaimRowResponse = 8904; + k_EMsgClientToGCBingoDevRerollCard = 8905; + k_EMsgClientToGCBingoDevRerollCardResponse = 8906; + k_EMsgClientToGCBingoGetStatsData = 8907; + k_EMsgClientToGCBingoGetStatsDataResponse = 8908; + k_EMsgGCToClientBingoUserDataUpdated = 8909; + k_EMsgGCToClientRoadToTIQuestDataUpdated = 8910; + k_EMsgClientToGCRoadToTIUseItem = 8911; + k_EMsgClientToGCRoadToTIUseItemResponse = 8912; + k_EMsgClientToGCShowcaseSubmitReport = 8913; + k_EMsgClientToGCShowcaseSubmitReportResponse = 8914; + k_EMsgClientToGCShowcaseAdminGetReportsRollupList = 8915; + k_EMsgClientToGCShowcaseAdminGetReportsRollupListResponse = 8916; + k_EMsgClientToGCShowcaseAdminGetReportsRollup = 8917; + k_EMsgClientToGCShowcaseAdminGetReportsRollupResponse = 8918; + k_EMsgClientToGCShowcaseAdminGetUserDetails = 8919; + k_EMsgClientToGCShowcaseAdminGetUserDetailsResponse = 8920; + k_EMsgClientToGCShowcaseAdminConvict = 8921; + k_EMsgClientToGCShowcaseAdminConvictResponse = 8922; + k_EMsgClientToGCShowcaseAdminExonerate = 8923; + k_EMsgClientToGCShowcaseAdminExonerateResponse = 8924; + k_EMsgClientToGCShowcaseAdminReset = 8925; + k_EMsgClientToGCShowcaseAdminResetResponse = 8926; + k_EMsgClientToGCShowcaseAdminLockAccount = 8927; + k_EMsgClientToGCShowcaseAdminLockAccountResponse = 8928; + k_EMsgClientToGCFantasyCraftingSelectPlayer = 8929; + k_EMsgClientToGCFantasyCraftingSelectPlayerResponse = 8930; + k_EMsgClientToGCFantasyCraftingGenerateTablets = 8931; + k_EMsgClientToGCFantasyCraftingGenerateTabletsResponse = 8932; + k_EMsgClientToGcFantasyCraftingUpgradeTablets = 8933; + k_EMsgClientToGcFantasyCraftingUpgradeTabletsResponse = 8934; + k_EMsgClientToGCFantasyCraftingRerollOptions = 8936; + k_EMsgClientToGCFantasyCraftingRerollOptionsResponse = 8937; + k_EMsgClientToGCRoadToTIDevForceQuest = 8935; + k_EMsgLobbyRoadToTIMatchQuestData = 8939; + k_EMsgClientToGCShowcaseModerationGetQueue = 8940; + k_EMsgClientToGCShowcaseModerationGetQueueResponse = 8941; + k_EMsgClientToGCShowcaseModerationApplyModeration = 8942; + k_EMsgClientToGCShowcaseModerationApplyModerationResponse = 8943; + k_EMsgClientToGCOverworldGetUserData = 8944; + k_EMsgClientToGCOverworldGetUserDataResponse = 8945; + k_EMsgClientToGCOverworldCompletePath = 8946; + k_EMsgClientToGCOverworldCompletePathResponse = 8947; + k_EMsgClientToGCOverworldClaimEncounterReward = 8948; + k_EMsgClientToGCOverworldClaimEncounterRewardResponse = 8949; + k_EMsgClientToGCOverworldDevResetAll = 8950; + k_EMsgClientToGCOverworldDevResetAllResponse = 8951; + k_EMsgClientToGCOverworldDevResetNode = 8952; + k_EMsgClientToGCOverworldDevResetNodeResponse = 8953; + k_EMsgClientToGCOverworldDevResetPath = 8954; + k_EMsgClientToGCOverworldDevResetPathResponse = 8955; + k_EMsgClientToGCOverworldDevGrantTokens = 8956; + k_EMsgClientToGCOverworldDevGrantTokensResponse = 8957; + k_EMsgClientToGCOverworldDevClearInventory = 8958; + k_EMsgClientToGCOverworldDevClearInventoryResponse = 8959; + k_EMsgServerToGCNewBloomGift = 8960; + k_EMsgServerToGCNewBloomGiftResponse = 8961; + k_EMsgGCToClientOverworldUserDataUpdated = 8962; + k_EMsgClientToGCOverworldMoveToNode = 8963; + k_EMsgClientToGCOverworldMoveToNodeResponse = 8964; + k_EMsgClientToGCNewBloomGift = 8965; + k_EMsgClientToGCNewBloomGiftResponse = 8966; + k_EMsgSignOutOverworld = 8967; + k_EMsgClientToGCSetBannedHeroes = 8969; + k_EMsgClientToGCOverworldTradeTokens = 8970; + k_EMsgClientToGCOverworldTradeTokensResponse = 8971; + k_EMsgOverworldEncounterTokenTreasureData = 8972; + k_EMsgOverworldEncounterTokenQuestData = 8973; + k_EMsgOverworldEncounterChooseHeroData = 8974; + k_EMsgClientToGCUpdateComicBookStats = 8975; + k_EMsgClientToGCCandyShopDevResetShop = 8976; + k_EMsgClientToGCCandyShopDevResetShopResponse = 8977; + k_EMsgOverworldEncounterProgressData = 8978; + k_EMsgClientToGCOverworldFeedback = 8979; + k_EMsgClientToGCOverworldFeedbackResponse = 8980; + k_EMsgClientToGCOverworldVisitEncounter = 8981; + k_EMsgClientToGCOverworldVisitEncounterResponse = 8982; + k_EMsgClientToGCOverworldGiftTokens = 8983; + k_EMsgClientToGCOverworldGiftTokensResponse = 8984; + k_EMsgClientToGCDotaLabsFeedback = 8985; + k_EMsgClientToGCDotaLabsFeedbackResponse = 8986; + k_EMsgOverworldEncounterPitFighterRewardData = 8987; + k_EMsgClientToGCOverworldGetDynamicImage = 8988; + k_EMsgClientToGCOverworldGetDynamicImageResponse = 8989; + k_EMsgClientToGCFightingGameChallengeFriend = 8990; + k_EMsgClientToGCFightingGameChallengeFriendResponse = 8991; + k_EMsgClientToGCFightingGameCancelChallengeFriend = 8992; + k_EMsgClientToGCFightingGameAnswerChallenge = 8993; + k_EMsgClientToGCFightingGameAnswerChallengeResponse = 8994; + k_EMsgGCToClientFightingGameChallenge = 8995; + k_EMsgGCToClientFightingGameStartMatch = 8996; + k_EMsgGCToClientFightingGameChallengeCanceled = 8997; + k_EMsgClientToGCBingoShuffleCard = 8999; + k_EMsgClientToGCBingoShuffleCardResponse = 9000; + k_EMsgClientToGCBingoModifySquare = 9001; + k_EMsgClientToGCBingoModifySquareResponse = 9002; + k_EMsgClientToGCBingoDevAddTokens = 9003; + k_EMsgClientToGCBingoDevAddTokensResponse = 9004; + k_EMsgClientToGCBingoDevClearInventory = 9005; + k_EMsgClientToGCBingoDevClearInventoryResponse = 9006; + k_EMsgGCCompendiumRemoveAllSelections = 9007; + k_EMsgGCCompendiumRemoveAllSelectionsResponse = 9008; + k_EMsgClientToGCOverworldMinigameAction = 9009; + k_EMsgClientToGCOverworldMinigameActionResponse = 9010; + k_EMsgClientToGCSurvivorsTelemetry = 9011; + k_EMsgClientToGCSurvivorsTelemetryResponse = 9012; + k_EMsgClientToGCOverworldRequestTokensNeededByFriend = 9013; + k_EMsgClientToGCOverworldRequestTokensNeededByFriendResponse = 9014; + k_EMsgClientToGCCraftworksGetUserData = 9015; + k_EMsgClientToGCCraftworksGetUserDataResponse = 9016; + k_EMsgGCToClientCraftworksUserDataUpdated = 9017; + k_EMsgClientToGCCraftworksCraftRecipe = 9018; + k_EMsgClientToGCCraftworksCraftRecipeResponse = 9019; + k_EMsgClientToGCCraftworksDevModifyComponents = 9020; + k_EMsgClientToGCCraftworksDevModifyComponentsResponse = 9021; + k_EMsgSignOutCraftworks = 9022; + k_EMsgClientToGCMonsterHunterGetUserData = 9023; + k_EMsgClientToGCMonsterHunterGetUserDataResponse = 9024; + k_EMsgClientToGCMonsterHunterClaimReward = 9025; + k_EMsgClientToGCMonsterHunterClaimRewardResponse = 9026; + k_EMsgClientToGCMonsterHunterTradeMaterials = 9027; + k_EMsgClientToGCMonsterHunterTradeMaterialsResponse = 9028; + k_EMsgClientToGCMonsterHunterGiftMaterials = 9029; + k_EMsgClientToGCMonsterHunterGiftMaterialsResponse = 9030; + k_EMsgClientToGCMonsterHunterRequestMaterialsNeededByFriend = 9031; + k_EMsgClientToGCMonsterHunterRequestMaterialsNeededByFriendResponse = 9032; + k_EMsgClientToGCMonsterHunterDevResetAll = 9033; + k_EMsgClientToGCMonsterHunterDevResetAllResponse = 9034; + k_EMsgClientToGCMonsterHunterDevGrantMaterials = 9035; + k_EMsgClientToGCMonsterHunterDevGrantMaterialsResponse = 9036; + k_EMsgClientToGCMonsterHunterDevClearInventory = 9037; + k_EMsgClientToGCMonsterHunterDevClearInventoryResponse = 9038; + k_EMsgClientToGCMonsterHunterDevClaimInvestigationRewards = 9039; + k_EMsgClientToGCMonsterHunterDevClaimInvestigationRewardsResponse = 9040; + k_EMsgGCToClientMonsterHunterUserDataUpdated = 9041; + k_EMsgSignOutMonsterHunter = 9042; + k_EMsgClientToGCClaimGatedEvent = 9043; + k_EMsgClientToGCClaimGatedEventResponse = 9044; + k_EMsgClientToGCMonsterHunterDevModifyHeroCodex = 9045; + k_EMsgClientToGCMonsterHunterDevModifyHeroCodexResponse = 9046; + k_EMsgClientToGCMonsterHunterClaimCodexReward = 9047; + k_EMsgClientToGCMonsterHunterClaimCodexRewardResponse = 9048; + k_EMsgClientToGCMonsterHunterClaimSetReward = 9049; + k_EMsgClientToGCMonsterHunterClaimSetRewardResponse = 9050; + k_EMsgClientToGCGetEventRanking = 9107; + k_EMsgClientToGCGetEventRankingResponse = 9108; + k_EMsgClientToGCGetEventCoupon = 9109; + k_EMsgClientToGCGetEventCouponResponse = 9110; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_server.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_server.proto new file mode 100644 index 00000000..49ad5d68 --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_server.proto @@ -0,0 +1,1527 @@ +import "in/dragonbra/javasteam/protobufs/dota2/steammessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/valveextensions.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_shared_enums.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/econ_gcmessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/base_gcmessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/network_connection.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_lobby.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_match_management.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_overworld.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_craftworks.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_monster_hunter.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/gcsdk_gcmessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/steammessages_steamlearn.steamworkssdk.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum EPoorNetworkConditionsType { + k_EPoorNetworkConditions_None = 0; + k_EPoorNetworkConditions_Unknown = 1; + k_EPoorNetworkConditions_MassDisconnect = 2; + k_EPoorNetworkConditions_ExcessBadQosIntervals = 3; +} + +message CMsgPoorNetworkConditions { + message Player { + optional uint32 account_id = 1; + optional .ENetworkDisconnectionReason disconnect_reason = 2 [default = NETWORK_DISCONNECT_INVALID]; + optional uint32 num_bad_intervals = 3; + optional uint32 peak_loss_pct = 4; + } + + optional .EPoorNetworkConditionsType detection_type = 1 [default = k_EPoorNetworkConditions_None]; + repeated .CMsgPoorNetworkConditions.Player players = 2; +} + +message CMsgGameserverCrash { + optional uint64 match_id = 1; + optional fixed64 lobby_id = 2; + optional .DOTA_GameState game_state = 3 [default = DOTA_GAMERULES_STATE_INIT]; + optional fixed32 sentinel_save_time = 4; + optional fixed64 custom_game_id = 11; + optional uint32 tournament_id = 12; + optional fixed64 server_steam_id = 5; + optional fixed32 server_public_ip_addr = 6; + optional uint32 server_port = 7; + optional uint32 server_cluster = 8; + optional uint32 pid = 9; + optional uint32 engine = 10; +} + +message CMsgConnectedPlayers { + message Player { + optional fixed64 steam_id = 1; + optional int32 hero_id = 2; + optional .CMsgLeaverState leaver_state = 3; + optional .ENetworkDisconnectionReason disconnect_reason = 4 [default = NETWORK_DISCONNECT_INVALID]; + } + + message PlayerDraft { + optional fixed64 steam_id = 1; + optional .DOTA_GC_TEAM team = 2 [default = DOTA_GC_TEAM_GOOD_GUYS]; + optional int32 team_slot = 3; + } + + enum SendReason { + INVALID = 0; + HEARTBEAT = 1; + GAME_STATE = 2; + FIRST_BLOOD = 3; + PLAYER_CONNECTED = 4; + PLAYER_HERO = 5; + PLAYER_DISCONNECTED_CONSEQUENCES = 6; + PLAYER_DISCONNECTED_NOCONSEQUENCES = 7; + GAMESTATE_TIMEOUT = 10; + MASS_DISCONNECT = 11; + KILLS = 13; + BUILDING_STATE = 14; + } + + repeated .CMsgConnectedPlayers.Player connected_players = 1; + repeated .CMsgConnectedPlayers.Player disconnected_players = 7; + optional .DOTA_GameState game_state = 2 [default = DOTA_GAMERULES_STATE_INIT]; + optional bool first_blood_happened = 6; + optional .CMsgPoorNetworkConditions poor_network_conditions = 10; + optional .CMsgConnectedPlayers.SendReason send_reason = 8 [default = INVALID]; + optional uint32 radiant_kills = 11; + optional uint32 dire_kills = 12; + optional int32 radiant_lead = 14; + optional uint32 building_state = 15; + repeated .CMsgConnectedPlayers.PlayerDraft player_draft = 16; +} + +message CMsgGameServerInfo { + enum ServerType { + UNSPECIFIED = 0; + GAME = 1; + PROXY = 2; + DOTA_ONLY = 4; + CUSTOM_GAME_ONLY = 5; + EVENT_GAME_ONLY = 6; + } + + enum CustomGames { + BOTH = 0; + NONE = 1; + ONLY = 2; + EVENT = 3; + } + + optional fixed32 server_public_ip_addr = 1; + optional fixed32 server_private_ip_addr = 2; + optional uint32 server_port = 3; + optional uint32 server_tv_port = 4; + optional uint32 assigned_server_tv_port = 22; + optional bytes legacy_server_steamdatagram_address = 27; + optional string server_key = 5; + optional bool server_hibernation = 6; + optional .CMsgGameServerInfo.ServerType server_type = 7 [default = UNSPECIFIED]; + optional uint32 server_region = 8; + optional float server_loadavg = 9; + optional float server_tv_broadcast_time = 10; + optional float server_game_time = 11; + optional fixed64 server_relay_connected_steam_id = 12; + optional uint32 relay_slots_max = 13; + optional int32 relays_connected = 14; + optional int32 relay_clients_connected = 15; + optional fixed64 relayed_game_server_steam_id = 16; + optional uint32 parent_relay_count = 17; + optional fixed64 tv_secret_code = 18; + optional uint32 server_version = 19; + optional uint32 server_cluster = 20; + optional .CMsgGameServerInfo.CustomGames allow_custom_games = 23 [default = BOTH]; + optional uint32 build_version = 24; + optional uint32 srcds_instance = 26; + optional bool dev_force_server_type = 28; +} + +message CMsgLeaverDetected { + optional fixed64 steam_id = 1; + optional .DOTALeaverStatus_t leaver_status = 2 [default = DOTA_LEAVER_NONE]; + optional .CMsgLeaverState leaver_state = 4; + optional uint32 server_cluster = 5; + optional .ENetworkDisconnectionReason disconnect_reason = 6 [default = NETWORK_DISCONNECT_INVALID]; + optional .CMsgPoorNetworkConditions poor_network_conditions = 7; +} + +message CMsgLeaverDetectedResponse { + optional uint32 result = 1; +} + +message CMsgDOTAFantasyFinalPlayerStats { + repeated .CMsgDOTAFantasyPlayerStats stats = 2; +} + +message CMsgDOTAFantasyLivePlayerStats { + repeated .CMsgDOTAFantasyPlayerStats stats = 2; +} + +message CMsgServerToGCRealtimeStats { + optional .CMsgDOTARealtimeGameStatsTerse delayed = 1; +} + +message CMsgGCToServerRealtimeStatsStartStop { + optional bool delayed = 1; +} + +message CMsgGCToServerUpdateSteamBroadcasting { + optional bool active = 1; +} + +message CMsgSignOutGameplayStats { + message CPlayer { + optional fixed64 steam_id = 1; + optional uint32 player_slot = 2; + optional int32 hero_id = 3; + repeated .CMatchPlayerTimedStats timed_player_stats = 4; + } + + message CTeam { + optional bool is_winning_team = 1; + optional bool is_radiant_team = 2; + repeated .CMatchTeamTimedStats timed_team_stats = 3; + repeated .CMsgSignOutGameplayStats.CPlayer players = 4; + } + + repeated .CMsgSignOutGameplayStats.CTeam teams = 1; +} + +message CMsgGameMatchSignOut { + message CTeam { + message CPlayer { + message CCustomGameData { + optional uint32 dota_team = 1; + optional bool winner = 2; + } + + message HeroDamageReceived { + optional uint32 pre_reduction = 1; + optional uint32 post_reduction = 2; + optional .CMsgGameMatchSignOut.CTeam.CPlayer.HeroDamageType damage_type = 3 [default = HERO_DAMAGE_PHYSICAL]; + } + + enum HeroDamageType { + HERO_DAMAGE_PHYSICAL = 0; + HERO_DAMAGE_MAGICAL = 1; + HERO_DAMAGE_PURE = 2; + } + + optional fixed64 steam_id = 1; + optional int32 hero_id = 3; + repeated int32 items = 4; + repeated uint32 item_purchase_times = 63; + optional uint32 gold = 5; + optional uint32 kills = 6; + optional uint32 deaths = 7; + optional uint32 assists = 8; + optional uint32 leaver_status = 9; + optional uint32 last_hits = 10; + optional uint32 denies = 11; + optional uint32 gold_per_min = 12; + optional uint32 xp_per_minute = 13; + optional uint32 gold_spent = 14; + optional uint32 level = 15; + optional uint32 scaled_hero_damage = 16; + optional uint32 scaled_tower_damage = 17; + optional uint32 scaled_hero_healing = 18; + optional uint32 time_last_seen = 19; + optional uint32 support_ability_value = 20; + optional uint64 party_id = 21; + optional uint32 claimed_farm_gold = 27; + optional uint32 support_gold = 28; + optional uint32 claimed_denies = 29; + optional uint32 claimed_misses = 30; + optional uint32 misses = 31; + optional uint32 net_worth = 34; + optional uint32 hero_damage = 37; + optional uint32 tower_damage = 38; + optional uint32 hero_healing = 39; + repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 32; + repeated .CMatchAdditionalUnitInventory additional_units_inventory = 33; + repeated .CMatchPlayerPermanentBuff permanent_buffs = 40; + optional .CMsgGameMatchSignOut.CTeam.CPlayer.CCustomGameData custom_game_data = 35; + optional uint32 match_player_flags = 36; + repeated int32 talent_ability_ids = 41; + optional uint32 hero_pick_order = 42; + optional bool hero_was_randomed = 43; + optional bool hero_was_dota_plus_suggestion = 50; + optional uint32 lane = 45; + optional bool is_using_plus_guide = 47; + repeated .CMsgGameMatchSignOut.CTeam.CPlayer.HeroDamageReceived hero_damage_received = 48; + repeated .CMsgGameMatchSignOut.CTeam.CPlayer.HeroDamageReceived hero_damage_dealt = 64; + optional uint32 seconds_dead = 51; + optional uint32 gold_lost_to_death = 52; + optional uint32 command_count = 53; + optional uint32 mouse_click_cast_command_count = 54; + optional uint32 teleports_used = 55; + optional uint32 cavern_crawl_preferred_map_variant = 56 [default = 255]; + optional uint32 bounty_runes = 57; + optional uint32 outposts_captured = 58; + optional uint32 dewards = 59; + optional uint32 wards_placed = 60; + optional uint32 camps_stacked = 61; + optional uint32 player_slot = 62; + optional uint32 predicted_position = 66; + optional uint32 lane_outcomes = 67 [default = 255]; + optional uint32 friendly_t1_destroyed_time = 68; + optional uint32 enemy_t1_destroyed_time = 69; + optional uint32 friendly_roshan_kills = 70; + optional uint32 enemy_roshan_kills = 71; + optional uint32 power_runes = 72; + optional uint32 water_runes = 73; + optional float stun_duration = 74; + optional .DOTA_GC_TEAM team_number = 75 [default = DOTA_GC_TEAM_GOOD_GUYS]; + optional uint32 team_slot = 76; + optional uint32 time_purchased_shard = 77; + optional uint32 time_purchased_aghs = 78; + repeated int32 ability_draft_abilities = 79; + repeated .CMsgTrackedStat player_tracked_stats = 80; + optional uint32 predicted_rank = 81; + optional uint32 selected_facet = 82; + optional uint32 enhancement_level = 83; + } + + repeated .CMsgGameMatchSignOut.CTeam.CPlayer players = 1; + repeated .CMsgTrackedStat team_tracked_stats = 2; + } + + message CAdditionalSignoutMsg { + optional uint32 id = 1; + optional bytes contents = 2; + } + + message CSocialFeedMatchEvent { + optional uint32 account_id = 1; + optional uint32 timestamp = 2; + optional uint32 event_type = 3; + optional int32 game_time = 4; + optional uint32 replay_time = 5; + } + + message CCustomGameData { + optional uint32 publish_timestamp = 1; + } + + message EventGameLeaderboardEntry { + optional string name_suffix = 1; + optional int32 score = 2; + optional uint32 extra_data_1 = 3; + optional uint32 extra_data_2 = 4; + optional uint32 extra_data_3 = 5; + optional uint32 extra_data_4 = 6; + optional uint32 extra_data_5 = 7; + } + + message WardPlacement { + optional int32 player_id = 1 [default = -1]; + optional uint32 team_id = 2; + optional uint32 placed_time = 3; + optional uint32 building_state = 4; + optional uint32 creep_state = 5; + optional bool roshan_alive = 6; + optional uint32 position_x = 7; + optional uint32 position_y = 8; + } + + optional uint64 match_id = 1 [(key_field) = true]; + optional uint32 duration = 2; + optional bool good_guys_win = 3; + optional fixed32 date = 4; + repeated .CMsgGameMatchSignOut.CTeam teams = 6; + repeated uint32 tower_status = 8; + repeated uint32 barracks_status = 9; + optional uint32 cluster = 10; + optional string server_addr = 11; + optional uint32 first_blood_time = 12; + optional uint32 event_score = 14; + repeated .CMsgDOTAFantasyPlayerStats fantasy_stats = 41; + repeated .CMsgEconPlayerStrangeCountAdjustment player_strange_count_adjustments = 17; + optional bool automatic_surrender = 18; + optional uint32 server_version = 19; + optional .CMsgPoorNetworkConditions poor_network_conditions = 35; + repeated .CMsgGameMatchSignOut.CAdditionalSignoutMsg additional_msgs = 20; + repeated .CMsgGameMatchSignOut.CSocialFeedMatchEvent social_feed_events = 36; + optional sint32 average_networth_delta = 22; + optional .CMsgGameMatchSignOut.CCustomGameData custom_game_data = 37; + optional uint32 match_flags = 38; + repeated uint32 team_scores = 39; + optional uint32 pre_game_duration = 40; + repeated .CMsgGameMatchSignOut.EventGameLeaderboardEntry event_game_leaderboard_entries = 42; + repeated .CMsgGameMatchSignOut.WardPlacement ward_placements = 43; + optional .CMsgSignOutGameplayStats gameplay_stats = 44; + repeated .CExtraMsgBlock extra_messages = 54; + optional .DOTA_GC_TEAM winning_team = 56 [default = DOTA_GC_TEAM_GOOD_GUYS]; + optional float normalized_win_probability_diff = 57; + repeated .CMsgTrackedStat match_tracked_stats = 58; +} + +message CMsgSignOutDraftInfo { + optional uint32 radiant_captain_account_id = 1; + optional uint32 dire_captain_account_id = 2; + repeated .CMatchHeroSelectEvent picks_bans = 3; +} + +message CMsgSignOutBotInfo { + optional bool allow_cheats = 1; + optional .DOTABotDifficulty bot_difficulty_radiant = 2 [default = BOT_DIFFICULTY_PASSIVE]; + optional bool created_lobby = 3; + optional .DOTABotDifficulty bot_difficulty_dire = 5 [default = BOT_DIFFICULTY_PASSIVE]; +} + +message CMsgSignOutTextMuteInfo { + message TextMuteMessage { + optional uint32 region = 1; + optional bool caused_text_mute = 2; + optional string chat_message = 3; + } + + repeated .CMsgSignOutTextMuteInfo.TextMuteMessage text_mute_messages = 1; +} + +message CMsgSignOutPlayerStats { + optional int32 account_id = 1; + optional uint64 match_id = 2; + optional uint32 rank = 3; + optional int32 hero_id = 4; + optional uint32 rampages = 5; + optional uint32 triple_kills = 6; + optional uint32 first_blood_claimed = 7; + optional uint32 first_blood_given = 8; + optional uint32 couriers_killed = 9; + optional uint32 aegises_snatched = 10; + optional uint32 cheeses_eaten = 11; + optional uint32 creeps_stacked = 12; + optional float fight_score = 13; + optional float farm_score = 14; + optional float support_score = 15; + optional float push_score = 16; + optional uint32 kills = 17; + optional uint32 deaths = 18; + optional uint32 assists = 19; + optional uint32 last_hits = 20; + optional uint32 denies = 21; + optional float gpm = 22; + optional float xppm = 23; + optional float net_worth = 24; + optional float damage = 25; + optional float heals = 26; + optional uint32 rapiers_purchased = 27; + optional uint32 observer_wards_placed = 28; + optional uint32 wards_destroyed = 29; + optional uint32 lobby_type = 30; +} + +message CMsgSignOutCommunicationSummary { + message PlayerCommunication { + message PingDetail { + optional uint32 type = 1 [default = 4294967295]; + optional uint32 count = 2; + } + + optional uint32 account_id = 1; + optional uint32 pings = 2; + optional uint32 max_pings_per_interval = 3; + optional uint32 teammate_pings = 4; + optional uint32 max_teammate_pings_per_interval = 5; + optional uint32 team_chat_messages = 6; + optional uint32 all_chat_messages = 7; + optional uint32 chat_wheel_messages = 8; + optional uint32 pauses = 9; + optional uint32 unpauses = 10; + optional uint32 lines_drawn = 11; + optional uint32 voice_chat_seconds = 12; + optional uint32 chat_mutes = 13; + optional uint32 voice_mutes = 14; + repeated .CMsgSignOutCommunicationSummary.PlayerCommunication.PingDetail ping_details = 15; + optional uint32 comms_blocks_solo = 16; + optional uint32 comms_blocks_mass = 17; + repeated string chat_log = 18; + } + + repeated .CMsgSignOutCommunicationSummary.PlayerCommunication players = 1; +} + +message CMsgGameMatchSignoutResponse { + message PlayerMetadata { + optional int32 hero_id = 1; + optional uint32 avg_kills_x16 = 2; + optional uint32 avg_deaths_x16 = 3; + optional uint32 avg_assists_x16 = 4; + optional uint32 avg_gpm_x16 = 5; + optional uint32 avg_xpm_x16 = 6; + optional uint32 best_kills_x16 = 7; + optional uint32 best_assists_x16 = 8; + optional uint32 best_gpm_x16 = 9; + optional uint32 best_xpm_x16 = 10; + optional uint32 win_streak = 11; + optional uint32 best_win_streak = 12; + optional uint32 games_played = 13; + } + + optional uint64 match_id = 1; + optional fixed32 replay_salt = 2; + optional uint32 leagueid = 5; + optional fixed32 metadata_private_key = 7; + optional .CMsgDOTAMatch match_details = 8; + repeated .CMsgGameMatchSignoutResponse.PlayerMetadata players_metadata = 9; + optional .CMvpData mvp_data = 10; + optional fixed64 ow_private_key = 11; + optional fixed32 ow_salt = 12; + optional uint64 ow_replay_id = 13; + optional .CMsgOverworldMatchRewards overworld_rewards = 14; + optional .CMsgMonsterHunterMatchRewards monster_hunter_rewards = 15; +} + +message CMsgGameMatchSignOutPermissionRequest { + optional uint32 server_version = 1; + optional uint32 local_attempt = 2; + optional uint32 total_attempt = 3; + optional uint32 seconds_waited = 4; +} + +message CMsgGameMatchSignOutPermissionResponse { + optional bool permission_granted = 1 [default = false]; + optional bool abandon_signout = 2 [default = false]; + optional uint32 retry_delay_seconds = 3 [default = 0]; +} + +message CMsgGameMatchSignOutEventGameData { + optional .EEvent event_id = 1 [default = EVENT_ID_NONE]; + optional string game_name = 2; + optional string map_name = 3; + optional bytes event_game_data = 4; + optional uint32 start_time = 5; +} + +message CMsgGameMatchSignOutPerfData { + repeated float average_frame_time = 1; + repeated float max_frame_time = 2; + optional float server_average_frame_time = 3; + optional float server_max_frame_time = 4; + repeated float average_compute_time = 5; + repeated float max_compute_time = 6; + repeated float average_client_tick_time = 7; + repeated float max_client_tick_time = 8; + repeated float average_client_simulate_time = 9; + repeated float max_client_simulate_time = 10; + repeated float average_output_time = 11; + repeated float max_output_time = 12; + repeated float average_wait_for_rendering_to_complete_time = 13; + repeated float max_wait_for_rendering_to_complete_time = 14; + repeated float average_swap_time = 15; + repeated float max_swap_time = 16; + repeated float average_frame_update_time = 17; + repeated float max_frame_update_time = 18; + repeated float average_idle_time = 19; + repeated float max_idle_time = 20; + repeated float average_input_processing_time = 21; + repeated float max_input_processing_time = 22; +} + +message CMsgGameMatchSignOutBanData { + repeated int32 hero_bans = 1; + repeated int32 hero_ban_votes = 2; +} + +message CMsgDOTALiveScoreboardUpdate { + message Team { + message Player { + message HeroAbility { + optional int32 ability_id = 1 [default = -1]; + optional uint32 ability_level = 2; + } + + enum DOTAUltimateState { + k_EDOTAUltimateStateNotLearned = 0; + k_EDOTAUltimateStateCooldown = 1; + k_EDOTAUltimateStateNeedsMana = 2; + k_EDOTAUltimateStateReady = 3; + } + + optional uint32 player_slot = 1; + optional string player_name = 2; + optional string hero_name = 3; + optional int32 hero_id = 4; + optional uint32 kills = 5; + optional uint32 deaths = 6; + optional uint32 assists = 7; + optional uint32 last_hits = 8; + optional uint32 denies = 9; + optional uint32 gold = 10; + optional uint32 level = 11; + optional float gold_per_min = 12; + optional float xp_per_min = 13; + optional .CMsgDOTALiveScoreboardUpdate.Team.Player.DOTAUltimateState ultimate_state = 14 [default = k_EDOTAUltimateStateNotLearned]; + optional float ultimate_cooldown = 15; + optional int32 item0 = 16 [default = -1]; + optional int32 item1 = 17 [default = -1]; + optional int32 item2 = 18 [default = -1]; + optional int32 item3 = 19 [default = -1]; + optional int32 item4 = 20 [default = -1]; + optional int32 item5 = 21 [default = -1]; + optional uint32 respawn_timer = 22; + optional uint32 account_id = 23; + optional float position_x = 24; + optional float position_y = 25; + optional uint32 net_worth = 26; + repeated .CMsgDOTALiveScoreboardUpdate.Team.Player.HeroAbility abilities = 27; + } + + repeated .CMsgDOTALiveScoreboardUpdate.Team.Player players = 1; + optional uint32 score = 2; + optional uint32 tower_state = 3; + optional uint32 barracks_state = 4; + repeated int32 hero_picks = 5; + repeated int32 hero_bans = 6; + } + + optional uint32 tournament_id = 1; + optional uint32 tournament_game_id = 2; + optional float duration = 3; + optional int32 hltv_delay = 4; + optional .CMsgDOTALiveScoreboardUpdate.Team team_good = 5; + optional .CMsgDOTALiveScoreboardUpdate.Team team_bad = 6; + optional uint32 roshan_respawn_timer = 7; + optional uint32 league_id = 8; + optional uint64 match_id = 9; +} + +message CMsgServerToGCRequestBatchPlayerResources { + repeated uint32 account_ids = 1 [packed = true]; + repeated uint32 rank_types = 4 [packed = true]; + optional int32 lobby_type = 5; +} + +message CMsgServerToGCRequestBatchPlayerResourcesResponse { + message Result { + optional uint32 account_id = 1; + optional uint32 rank = 4; + optional bool rank_calibrated = 5; + optional bool low_priority = 6; + optional bool is_new_player = 7; + optional bool is_guide_player = 8; + optional int32 comm_level = 9; + optional int32 behavior_level = 10; + optional int32 wins = 11; + optional int32 losses = 12; + optional int32 smurf_category = 13; + optional int32 comm_score = 14; + optional int32 behavior_score = 15; + optional int32 rank_uncertainty = 16; + } + + repeated .CMsgServerToGCRequestBatchPlayerResourcesResponse.Result results = 6; +} + +message CMsgDOTAPlayerFailedToConnect { + repeated fixed64 failed_loaders = 1; + repeated fixed64 abandoned_loaders = 2; +} + +message CMsgGCToRelayConnect { + optional uint32 source_tv_public_addr = 1; + optional uint32 source_tv_private_addr = 2; + optional uint32 source_tv_port = 3; + optional uint64 game_server_steam_id = 4; + optional uint32 parent_count = 5; + optional fixed64 tv_unique_secret_code = 6; + optional fixed64 source_tv_steamid = 7; +} + +message CMsgGCGCToLANServerRelayConnect { + optional fixed64 relay_steamid = 1; +} + +message CMsgGCBanStatusRequest { + optional uint32 account_id = 1; +} + +message CMsgGCBanStatusResponse { + optional uint32 result = 1; + optional bool low_priority = 2; + optional bool text_chat_banned = 3; + optional bool voice_chat_banned = 4; +} + +message CMsgTournamentItemEvent { + optional fixed32 killer_account_id = 1; + optional fixed32 victim_account_id = 2; + optional .DOTA_TournamentEvents event_type = 3 [default = TE_FIRST_BLOOD]; + optional int32 tv_delay = 4; + optional int32 dota_time = 5; + optional float replay_time = 6; + optional string loot_list = 7; + optional uint32 event_team = 8; + optional uint32 multi_kill_count = 9; + optional uint32 winner_score = 10; + optional uint32 loser_score = 11; + repeated .CProtoItemHeroStatue hero_statues = 12; +} + +message CMsgTournamentItemEventResponse { + optional .DOTA_TournamentEvents event_type = 1 [default = TE_FIRST_BLOOD]; + optional uint32 viewers_granted = 6; +} + +message CMsgTeamFanfare { + optional uint64 match_id = 1; +} + +message CMsgResponseTeamFanfare { + optional uint32 fanfare_goodguys = 1; + optional uint32 fanfare_badguys = 2; +} + +message CMsgDOTAAwardEventPoints { + message AwardPoints { + optional uint32 account_id = 1; + optional int32 points = 2; + optional int32 premium_points = 3; + optional uint32 trade_ban_time = 5; + optional bool eligible_for_periodic_adjustment = 6 [default = false]; + optional uint32 point_cap_periodic_resource_id = 7; + } + + repeated .CMsgDOTAAwardEventPoints.AwardPoints award_points = 1; + optional uint64 match_id = 2; + optional .EEvent event_id = 4 [default = EVENT_ID_NONE]; + optional uint32 timestamp = 5; + optional uint32 audit_action = 6; +} + +message CMsgGCToServerPingRequest { + optional fixed64 request_id = 1; + optional uint64 request_time = 2; +} + +message CMsgGCToServerPingResponse { + optional fixed64 request_id = 1; + optional uint64 request_time = 2; + optional uint32 cluster = 3; +} + +message CMsgServerToGCMatchConnectionStats { + message Player { + optional uint32 account_id = 1; + optional fixed32 ip = 2; + optional uint32 avg_ping_ms = 3; + optional float packet_loss = 5; + optional float ping_deviation = 6; + optional uint32 full_resends = 7; + } + + optional uint64 match_id = 1; + optional uint32 region_id = 2; + optional uint32 league_id = 3; + repeated .CMsgServerToGCMatchConnectionStats.Player players = 4; + optional uint32 cluster_id = 5; +} + +message CMsgServerGCUpdateSpectatorCount { + optional uint32 spectator_count = 1; +} + +message CSerializedCombatLog { + message Dictionary { + message DictString { + required uint32 id = 1; + required string value = 2; + } + + repeated .CSerializedCombatLog.Dictionary.DictString strings = 1; + } + + optional uint32 version = 1; + optional .CSerializedCombatLog.Dictionary dictionary = 2; + repeated .CMsgDOTACombatLogEntry entries = 3; +} + +message CMsgServerToGCVictoryPredictions { + message PredictionItem { + optional uint64 item_id = 1; + optional uint32 item_def = 2; + } + + message Record { + optional uint32 account_id = 1; + repeated uint64 item_ids = 5; + repeated .CMsgServerToGCVictoryPredictions.PredictionItem prediction_items = 6; + } + + repeated .CMsgServerToGCVictoryPredictions.Record records = 1; +} + +message CMsgServerToGCRequestStatus { +} + +message CMsgServerToGCRequestStatus_Response { + optional uint32 response = 1; +} + +message CMsgGCToServerEvaluateToxicChat { + optional uint32 target_account_id = 1; + optional uint32 reporter_account_id = 2; +} + +message CMsgServerToGCEvaluateToxicChat { + optional uint32 target_account_id = 1; + optional uint32 reporter_account_id = 2; + optional fixed64 match_id = 3; + repeated uint32 timestamp = 4; + repeated string line = 5; +} + +message CMsgServerToGCEvaluateToxicChatResponse { + optional uint32 target_account_id = 1; + optional uint32 reporter_account_id = 2; + optional uint32 ban_reason = 3; + optional uint32 ban_duration = 4; + optional float toxicity_score = 5; +} + +message CMsgSignOutAssassinMiniGameInfo { + repeated fixed64 winning_players = 1; + repeated fixed64 losing_players = 2; + repeated fixed64 arcana_owners = 3; + optional bool assassin_won = 4; + optional int32 target_hero_id = 5; + optional bool contract_completed = 6; + optional float contract_complete_time = 7; + optional bool pa_is_radiant = 8; +} + +message CMsgServerToGCKillSummaries { + message KillSummary { + optional uint32 killer_hero_id = 1; + optional uint32 victim_hero_id = 2; + optional uint32 kill_count = 3; + } + + optional uint32 ingameevent_id = 1; + repeated .CMsgServerToGCKillSummaries.KillSummary summaries = 2; +} + +message CMsgServerToGCLockCharmTrading { + optional uint32 account_id = 1; + optional uint64 item_id = 2; +} + +message CMsgSignOutUpdatePlayerChallenge { + message Challenge { + optional .EEvent event_id = 1 [default = EVENT_ID_NONE]; + optional uint32 slot_id = 2; + optional uint32 sequence_id = 3; + optional uint32 progress = 4; + optional uint32 challenge_rank = 5; + } + + optional uint32 account_id = 1; + repeated .CMsgSignOutUpdatePlayerChallenge.Challenge completed = 2; + repeated .CMsgSignOutUpdatePlayerChallenge.Challenge rerolled = 3; + optional uint64 match_id = 4; + optional int32 hero_id = 5; +} + +message CMsgServerToGCRerollPlayerChallenge { + optional uint32 account_id = 1; + optional .CMsgClientToGCRerollPlayerChallenge reroll_msg = 2; +} + +message CMsgSpendWager { + message Player { + optional uint32 account_id = 1; + optional uint32 wager = 2; + optional uint64 wager_token_item_id = 3; + } + + repeated .CMsgSpendWager.Player players = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; + optional uint32 timestamp = 3; + optional uint64 match_id = 4; + optional uint64 server_steam_id = 5; +} + +message CMsgSignOutXPCoins { + message Player { + optional uint32 account_id = 1; + optional uint32 xp_gained = 2; + optional uint32 coins_spent = 3; + optional uint64 wager_token_item_id = 4; + optional uint32 rank_wager = 5; + optional uint32 wager_streak = 6; + } + + repeated .CMsgSignOutXPCoins.Player players = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; + optional uint64 match_id = 3; + optional uint32 timestamp = 4; +} + +message CMsgSignOutBounties { + message Bounty { + optional uint32 issuer_account_id = 1; + optional uint32 completer_account_id = 2; + optional uint32 target_account_id = 3; + } + + repeated .CMsgSignOutBounties.Bounty bounties = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; + optional uint64 match_id = 3; + optional uint32 timestamp = 4; +} + +message CMsgSignOutCommunityGoalProgress { + message EventGoalIncrement { + optional uint32 event_goal_id = 1; + optional uint32 increment_amount = 2; + } + + optional .EEvent event_id = 1 [default = EVENT_ID_NONE]; + repeated .CMsgSignOutCommunityGoalProgress.EventGoalIncrement event_increments = 2; +} + +message CMsgServerToGCCloseCompendiumInGamePredictionVoting { + optional uint64 match_id = 1; + optional uint32 hltv_delay = 2; + optional uint32 league_id = 3; +} + +message CMsgServerToGCCloseCompendiumInGamePredictionVotingResponse { + optional bool result = 1; +} + +message CMsgServerToGCCompendiumInGamePredictionResults { + message PredictionResult { + optional uint32 prediction_id = 1; + optional uint32 prediction_value = 2; + optional bool prediction_value_is_mask = 3; + } + + optional uint64 match_id = 1; + repeated .CMsgServerToGCCompendiumInGamePredictionResults.PredictionResult results = 2; + optional uint32 league_id = 3; + optional uint32 league_node_id = 4; +} + +message CMsgServerToGCCompendiumChosenInGamePredictions { + message Prediction { + optional uint32 prediction_id = 1; + } + + optional uint64 match_id = 1; + repeated .CMsgServerToGCCompendiumChosenInGamePredictions.Prediction predictions_chosen = 2; + optional uint32 league_id = 3; +} + +message CMsgGCToGCCompendiumInGamePredictionResults { + optional .CMsgServerToGCCompendiumInGamePredictionResults results = 1; +} + +message CMsgServerToGCMatchPlayerItemPurchaseHistory { + message ItemPurchase { + optional int32 item = 1 [default = -1]; + optional uint32 gold = 2; + optional uint32 net_worth = 3; + optional uint32 game_time = 4; + repeated int32 inventory_items = 5; + repeated bool talents_skilled = 7; + } + + message Player { + optional uint32 player_slot = 1; + optional uint32 account_id = 2; + optional int32 hero_id = 3; + repeated int32 allied_hero_ids = 4; + repeated int32 enemy_hero_ids = 5; + repeated .CMsgServerToGCMatchPlayerItemPurchaseHistory.ItemPurchase item_purchases = 6; + optional uint32 lane = 7; + optional bool is_winner = 8; + } + + optional uint64 match_id = 1; + optional uint32 mmr = 2; + repeated .CMsgServerToGCMatchPlayerItemPurchaseHistory.Player players = 3; +} + +message CMsgServerToGCMatchPlayerNeutralItemEquipHistory { + message ItemEquip { + optional int32 item = 1 [default = -1]; + optional uint32 game_time = 2; + repeated int32 inventory_items = 3; + repeated bool talents_skilled = 4; + repeated int32 available_neutral_items = 5; + } + + message Player { + optional uint32 account_id = 1; + repeated int32 allied_hero_ids = 2; + repeated int32 enemy_hero_ids = 3; + repeated .CMsgServerToGCMatchPlayerNeutralItemEquipHistory.ItemEquip item_equips = 4; + optional bool is_winner = 5; + } + + optional uint64 match_id = 1; + repeated .CMsgServerToGCMatchPlayerNeutralItemEquipHistory.Player players = 2; +} + +message CMsgServerToGCMatchStateHistory { + message PlayerState { + optional int32 hero_id = 1; + optional uint32 net_worth = 2; + optional uint32 level = 3; + optional uint32 deaths = 4; + optional uint32 respawn_time = 5; + optional bool has_buyback = 6; + optional bool has_aegis = 7; + optional bool has_rapier = 8; + optional uint32 distance = 9; + } + + message TeamState { + optional uint32 team = 1; + repeated .CMsgServerToGCMatchStateHistory.PlayerState player_states = 2 [(steamml_max_entries) = 5]; + repeated uint32 tower_health_pct = 3 [(steamml_max_entries) = 11]; + repeated uint32 barracks_health_pct = 4 [(steamml_max_entries) = 3]; + optional uint32 ancient_health_pct = 5; + optional uint32 glyph_cooldown = 6; + optional uint32 kills = 7; + optional uint32 creep_distance_safe = 8; + optional uint32 creep_distance_mid = 9; + optional uint32 creep_distance_off = 10; + } + + message MatchState { + optional uint32 game_time = 1; + optional .CMsgServerToGCMatchStateHistory.TeamState radiant_state = 2; + optional .CMsgServerToGCMatchStateHistory.TeamState dire_state = 3; + } + + optional uint64 match_id = 1; + optional bool radiant_won = 2; + optional uint32 mmr = 3; + repeated .CMsgServerToGCMatchStateHistory.MatchState match_states = 4; +} + +message CMsgMatchStateSteamMLEntry { + optional .CMsgServerToGCMatchStateHistory.MatchState match_state = 1; + optional uint32 mmr = 2; + optional bool radiant_won = 3; +} + +message CMsgLaneSelectionSteamMLEntry { + repeated int32 hero_ids = 1 [(steamml_max_entries) = 10]; + repeated uint32 lanes = 2 [(steamml_max_entries) = 6]; +} + +message CMsgAbilitySelectionSteamMLEntry { + optional uint32 mmr = 1; + optional int32 hero_id = 2; + repeated int32 enemy_hero_ids = 3 [(steamml_max_entries) = 4]; + optional uint32 lane = 4; + repeated int32 abilities = 5 [(steamml_max_entries) = 25]; + optional int32 selected_ability = 6 [default = -1]; +} + +message CMsgItemPurchasePregameSteamMLEntry { + optional uint32 mmr = 1; + optional uint32 lane = 2; + optional float balance = 3; + optional int32 hero_id = 4; + repeated int32 allied_hero_ids = 5 [(steamml_max_entries) = 4]; + repeated int32 enemy_hero_ids = 6 [(steamml_max_entries) = 5]; + repeated int32 items = 7 [(steamml_max_entries) = 9]; +} + +message CMsgItemPurchaseSteamMLEntry { + optional uint32 mmr = 1; + optional uint32 lane = 2; + optional int32 hero_id = 3; + repeated int32 allied_hero_ids = 4 [(steamml_max_entries) = 4]; + repeated int32 enemy_hero_ids = 5 [(steamml_max_entries) = 5]; + repeated int32 items = 6 [(steamml_max_entries) = 20]; + repeated int32 items_to_be_purchased = 7 [(steamml_max_entries) = 20]; +} + +message CMsgItemPurchaseSequenceSteamMLEntry { + optional uint32 mmr = 1; + optional uint32 lane = 2; + optional int32 hero_id = 3; + repeated int32 allied_hero_ids = 4 [(steamml_max_entries) = 4]; + repeated int32 enemy_hero_ids = 5 [(steamml_max_entries) = 5]; + repeated int32 items = 6 [(steamml_max_entries) = 20]; + optional int32 item_to_be_purchased = 7 [default = -1]; +} + +message CMsgServerToGCCavernCrawlIsHeroActive { + optional uint32 event_id = 1; + optional uint32 account_id = 2; + optional uint32 preferred_map_variant = 3 [default = 255]; + optional int32 hero_id = 4; + optional bool turbo_mode = 5; +} + +message CMsgServerToGCPlayerChallengeHistory { + message PlayerChallenge { + optional uint32 account_id = 1; + optional .EPlayerChallengeHistoryType challenge_type = 2 [default = k_EPlayerChallengeHistoryType_Invalid]; + optional uint32 challenge_id1 = 3; + optional uint32 challenge_id2 = 4; + optional uint32 progress_value_start = 5; + optional uint32 progress_value_end = 6; + optional bool team_won = 7; + optional uint64 audit_data = 8; + optional int32 hero_id = 9; + optional uint32 rank_completed = 10; + } + + optional uint64 match_id = 1; + optional uint32 average_rank = 2; + repeated .CMsgServerToGCPlayerChallengeHistory.PlayerChallenge challenge_records = 3; +} + +message CMsgServerToGCCavernCrawlIsHeroActiveResponse { + message MapResults { + optional uint32 path_id_completed = 1 [default = 255]; + optional uint32 room_id_claimed = 2 [default = 255]; + } + + optional bool result = 1; + optional uint32 map_variant = 5 [default = 255]; + optional uint32 potential_winnings = 2; + repeated .CMsgServerToGCCavernCrawlIsHeroActiveResponse.MapResults map_results = 3; + optional uint32 potential_plus_shard_winnings = 4; +} + +message CMsgNeutralItemStats { + message NeutralItem { + optional int32 item_id = 1 [default = -1]; + optional uint32 time_dropped = 2; + optional uint32 team = 3; + optional uint32 time_last_equipped = 4; + optional uint32 time_last_unequipped = 5; + optional uint32 duration_equipped = 6; + } + + repeated .CMsgNeutralItemStats.NeutralItem neutral_items = 1; +} + +message CMsgGCToServerLobbyHeroBanRates { + message HeroBanEntry { + optional int32 hero_id = 1; + optional uint32 ban_count = 2; + optional uint32 pick_count = 3; + } + + repeated .CMsgGCToServerLobbyHeroBanRates.HeroBanEntry ban_data = 1; +} + +message CMsgSignOutGuildContractProgress { + message CompletedGuildEventContracts { + optional uint32 guild_id = 1; + optional uint32 event_id = 2; + repeated uint64 contracts = 3; + } + + message PlayerContract { + optional uint32 account_id = 1; + repeated .CMsgSignOutGuildContractProgress.CompletedGuildEventContracts completed_contracts = 2; + } + + repeated .CMsgSignOutGuildContractProgress.PlayerContract player_contracts = 1; +} + +message CMsgSignOutGuildChallengeProgress { + message ChallengeProgress { + optional uint32 guild_id = 1; + optional uint32 event_id = 2; + optional uint32 challenge_instance_id = 3; + optional uint32 challenge_instance_timestamp = 4; + optional uint32 challenge_period_serial = 5; + optional uint32 progress = 6; + optional uint32 challenge_parameter = 7; + } + + repeated .CMsgSignOutGuildChallengeProgress.ChallengeProgress guild_challenges_progresses = 1; +} + +message CMsgSignOutMVPStats { + message Player { + message KillEaterEvent { + required uint32 event_type = 1; + required uint32 amount = 2; + } + + optional uint32 team_id = 1; + optional uint32 team_networth_rank = 2; + optional uint32 account_id = 3; + optional uint32 player_slot = 32; + optional uint32 rank = 33; + optional int32 hero_id = 4; + optional uint32 role = 5; + optional int32 kills = 6; + optional int32 deaths = 7; + optional int32 assists = 8; + optional int32 xp = 9; + optional int32 net_worth = 10; + optional int32 support_gold_spent = 12; + optional int32 wards_placed = 13; + optional int32 wards_spotted_for_dewarding = 14; + optional int32 camps_stacked = 15; + optional int32 last_hits = 16; + optional int32 denies = 17; + optional int32 building_damage = 19; + optional int32 other_damage = 20; + optional int32 triple_kills = 26; + optional int32 rampages = 28; + optional int32 first_blood = 31; + repeated .CMsgSignOutMVPStats.Player.KillEaterEvent kill_eater_events = 34; + optional uint32 highest_killstreak = 35; + } + + optional uint64 match_id = 1; + optional uint32 game_mode = 2; + optional uint32 winning_team = 3; + optional float game_time = 4; + repeated .CMsgSignOutMVPStats.Player players = 5; +} + +message CMsgServerToGCGetGuildContracts { + repeated uint32 account_ids = 1; +} + +message CMsgServerToGCGetGuildContractsResponse { + message ContractDetails { + optional uint64 contract_id = 1; + optional uint32 challenge_instance_id = 2; + optional uint32 challenge_parameter = 3; + optional uint32 contract_stars = 4; + optional uint32 contract_slot = 5; + } + + message Player { + optional uint32 account_id = 1; + optional uint32 guild_id = 2; + optional .EEvent event_id = 3 [default = EVENT_ID_NONE]; + repeated .CMsgServerToGCGetGuildContractsResponse.ContractDetails contracts = 4; + } + + repeated .CMsgServerToGCGetGuildContractsResponse.Player player_contracts = 1; +} + +message CMsgMatchDiretideCandy { + message CandyDetails { + optional uint32 amount = 1; + optional uint32 audit = 2; + } + + message PlayerCandy { + optional uint32 account_id = 1; + optional uint32 candy_amount = 3; + optional bool consumes_periodic_resource = 4; + repeated .CMsgMatchDiretideCandy.CandyDetails candy_breakdown = 5; + } + + repeated .CMsgMatchDiretideCandy.PlayerCandy player_candy_data = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; +} + +message CMsgGCToServerCheerData { + message CheerTypeCount { + optional uint32 cheer_type = 1; + optional uint32 cheer_count = 2; + } + + repeated .CMsgGCToServerCheerData.CheerTypeCount cheer_types = 1; +} + +message CMsgCheerConfig { + optional bool cheers_enabled = 1; + optional bool is_valid_league_id = 2; + optional float window_duration = 3; + optional uint32 window_bucket_count = 4; + optional float crowd_level_push_time = 6; + optional uint32 crowd_level_low = 10; + optional uint32 crowd_level_medium = 11; + optional uint32 crowd_level_high = 12; + optional float cheer_scale_start = 13; + optional float cheer_scale_speed = 14; + optional uint32 cheer_scale_push_mark = 15; + optional uint32 cheer_scale_pull_mark = 16; + optional float cheer_scale_pct_of_max_cps_clamp = 17; + optional float cheer_scale_dampener_value = 21; + optional uint32 cheer_scale_dampener_lerp_time = 22; + optional float cheer_factor_bronze = 18; + optional float cheer_factor_silver = 19; + optional float cheer_factor_gold = 20; +} + +message CMsgGCToServerCheerConfig { + optional .CMsgCheerConfig cheer_config = 1; +} + +message CMsgServerToGCGetCheerConfig { + optional uint32 league_id = 1; +} + +message CMsgServerToGCGetCheerConfigResponse { + optional .CMsgCheerConfig cheer_config = 2; +} + +message CMsgGCToServerCheerScalesOverride { + repeated float scales = 1; +} + +message CMsgGCToServerGetCheerState { +} + +message CMsgCheerTypeState { + repeated uint32 cheer_counts = 1; + optional float max_per_second = 2; + optional float cheer_scale = 3; + optional float override_scale = 4; +} + +message CMsgCheerState { + repeated .CMsgCheerTypeState cheer_types = 1; + optional uint32 radiant_crowd_level = 2; + optional uint32 dire_crowd_level = 3; +} + +message CMsgServerToGCReportCheerState { + optional .CMsgCheerConfig cheer_config = 1; + optional .CMsgCheerState cheer_state = 2; +} + +message CMsgServerToGCGetStickerHeroes { + repeated uint32 account_ids = 1; +} + +message CMsgServerToGCGetStickerHeroesResponse { + message Player { + optional uint32 account_id = 1; + optional .CMsgStickerHeroes stickers = 2; + } + + repeated .CMsgServerToGCGetStickerHeroesResponse.Player players = 1; +} + +message CMsgSteamLearnMatchInfo { + optional uint32 average_mmr = 1; + optional bool radiant_won = 2; + optional uint32 duration = 3; + optional uint32 game_mode = 4; + optional uint32 lobby_type = 5; +} + +message CMsgSteamLearnMatchInfoPlayer { + optional uint32 average_mmr = 1; + optional bool team_won = 2; + optional uint32 duration = 3; + optional uint32 game_mode = 4; + optional uint32 lobby_type = 5; + optional uint32 player_mmr = 6; +} + +message CMsgSteamLearnMatchInfoTeam { + message Player { + optional uint32 prematch_mmr = 1; + optional uint32 prematch_rank_uncertainty = 2; + optional uint32 prematch_behavior_score = 3; + optional uint32 prematch_comm_score = 4; + optional uint32 num_players_in_party = 5; + } + + repeated .CMsgSteamLearnMatchInfoTeam.Player radiant_players = 1 [(steamlearn_count) = 5]; + repeated .CMsgSteamLearnMatchInfoTeam.Player dire_players = 2 [(steamlearn_count) = 5]; + optional bool radiant_team_won = 3; +} + +message CMsgSteamLearnMatchHeroesV3 { + repeated int32 radiant_hero_ids = 1 [(steamlearn_count) = 5]; + repeated int32 dire_hero_ids = 2 [(steamlearn_count) = 5]; + repeated uint32 radiant_lanes = 3 [(steamlearn_count) = 5]; + repeated uint32 dire_lanes = 4 [(steamlearn_count) = 5]; + repeated uint32 radiant_hero_facets = 5 [(steamlearn_count) = 5]; + repeated uint32 dire_hero_facets = 6 [(steamlearn_count) = 5]; + repeated uint32 radiant_positions = 7 [(steamlearn_count) = 5]; + repeated uint32 dire_positions = 8 [(steamlearn_count) = 5]; +} + +message CMsgSteamLearnMatchHeroV6 { + optional int32 hero_id = 1; + optional uint32 facet = 2; + optional uint32 hero_and_facet = 3; + optional uint32 lane = 4; + optional uint32 position = 5; + repeated uint32 allied_hero_and_facet = 6 [(steamlearn_count) = 4]; + repeated uint32 enemy_hero_and_facet = 7 [(steamlearn_count) = 5]; +} + +message CMsgSteamLearnPlayerTimedStats { + message StatBucket { + optional float game_time = 1; + optional uint32 kills = 2; + optional uint32 deaths = 3; + optional uint32 assists = 4; + optional uint32 experience = 5; + optional uint32 last_hits = 6; + optional uint32 denies = 7; + optional uint32 net_worth = 8; + optional float idle_time = 9; + optional uint32 commands_issued = 10; + optional uint32 sentry_wards_placed = 11; + optional uint32 observer_wards_placed = 12; + } + + repeated .CMsgSteamLearnPlayerTimedStats.StatBucket stat_buckets = 1 [(steamlearn_count) = 90]; +} + +message CMsgSteamLearnMatchStateV5 { + message PlayerState { + optional int32 hero_id = 1; + optional uint32 net_worth = 2; + optional uint32 level = 3; + optional uint32 deaths = 4; + optional uint32 respawn_time = 5; + optional bool has_buyback = 6; + optional bool has_aegis = 7; + optional bool has_rapier = 8; + optional uint32 distance = 9; + optional uint32 hero_facet = 10; + } + + message TeamState { + optional uint32 team = 1; + repeated .CMsgSteamLearnMatchStateV5.PlayerState player_states = 2 [(steamlearn_count) = 5]; + repeated uint32 tower_health_pct = 3 [(steamlearn_count) = 11]; + repeated uint32 barracks_health_pct = 4 [(steamlearn_count) = 6]; + optional uint32 ancient_health_pct = 5; + optional uint32 glyph_cooldown = 6; + optional uint32 kills = 7; + optional uint32 creep_distance_safe = 8; + optional uint32 creep_distance_mid = 9; + optional uint32 creep_distance_off = 10; + } + + optional float game_time = 1; + optional .CMsgSteamLearnMatchStateV5.TeamState radiant_state = 2; + optional .CMsgSteamLearnMatchStateV5.TeamState dire_state = 3; +} + +message CMsgSteamLearnItemPurchaseV7 { + optional int32 item_id = 1 [default = -1]; + repeated int32 purchase_history = 2 [(steamlearn_count) = 50]; +} + +message CMsgSteamLearnPreGameItemPurchases { + repeated int32 item_ids = 1 [(steamlearn_count) = 10]; + optional uint32 is_radiant_team = 2; + optional bool is_using_dota_plus = 3; +} + +message CMsgSteamLearnPreGameItemPurchase { + repeated int32 purchase_history = 1 [(steamlearn_count) = 10]; + optional int32 item_id = 2 [default = -1, (steamlearn_count) = 10]; +} + +message CMsgSteamLearnNeutralItemPurchaseV4 { + optional uint32 tier = 1; + repeated int32 trinket_options = 2 [(steamlearn_count) = 4]; + repeated int32 enhancement_options = 3 [(steamlearn_count) = 4]; + optional int32 trinket_id = 4 [default = -1]; + optional int32 enhancement_id = 5 [default = -1]; +} + +message CMsgSteamLearnAbilitySkill { + optional int32 ability_id = 1 [default = -1]; + repeated int32 skilled_abilities = 2 [(steamlearn_count) = 30]; + optional float game_time = 3; + optional bool is_using_dota_plus = 4; +} + +message CMsgSteamLearnWardPlacement { + message Location { + optional float x = 1; + optional float y = 2; + } + + optional .CMsgSteamLearnWardPlacement.Location ward_loc = 1; + repeated .CMsgSteamLearnWardPlacement.Location existing_ward_locs = 2 [(steamlearn_count) = 6]; + optional uint32 team = 3; +} + +message CMsgSteamLearnPlayerMatchState { + optional uint32 net_worth = 1; + optional uint32 level = 2; + optional uint32 deaths = 3; + optional uint32 respawn_time = 4; + optional bool has_buyback = 5; + optional bool has_aegis = 6; + optional bool has_rapier = 7; + optional uint32 team_net_worth = 8; + optional uint32 enemy_team_net_worth = 9; + optional uint32 team_kills = 10; + optional uint32 enemy_team_kills = 11; + optional float game_time = 12; +} + +message CMsgSignOutMuertaMinigame { + optional bytes event_game_data = 1; +} + +message CMsgSignOutMapStats { + message Player { + optional uint32 account_id = 1; + optional .CMsgMapStatsSnapshot personal_stats = 2; + } + + repeated .CMsgSignOutMapStats.Player players = 1; + optional .CMsgMapStatsSnapshot global_stats = 2; +} + +message CMsgServerToGCNewBloomGift { + optional uint32 defindex = 1; + optional uint32 gifter_account_id = 2; + repeated uint32 target_account_ids = 3; +} + +message CMsgServerToGCNewBloomGiftResponse { + optional .ENewBloomGiftingResponse result = 1 [default = kENewBloomGifting_UnknownFailure]; + repeated uint32 received_account_ids = 2; +} + +message CMsgSignOutOverworld { + message Player { + optional uint32 account_id = 1; + optional uint32 overworld_id = 2; + repeated uint32 desired_token_rewards = 3; + } + + repeated .CMsgSignOutOverworld.Player players = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; +} + +message CMsgSignOutCraftworks { + message Player { + optional uint32 account_id = 1; + optional .CMsgCraftworksComponents components = 2; + } + + repeated .CMsgSignOutCraftworks.Player players = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; +} + +message CMsgSignOutMonsterHunter { + message Player { + optional uint32 account_id = 1; + optional .CMsgMonsterHunterInvestigationGameState investigation_game_state = 2; + optional .CMsgMonsterHunterCodexUpdateData codex_update_data = 3; + } + + repeated .CMsgSignOutMonsterHunter.Player players = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_webapi.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_webapi.proto new file mode 100644 index 00000000..589d93cf --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_webapi.proto @@ -0,0 +1,438 @@ +import "in/dragonbra/javasteam/protobufs/dota2/steammessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/gcsdk_gcmessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_shared_enums.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_match_metadata.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum ETeamFanContentStatus { + TEAM_FAN_CONTENT_STATUS_INVALID = 0; + TEAM_FAN_CONTENT_STATUS_PENDING = 1; + TEAM_FAN_CONTENT_STATUS_EVALUATED = 2; +} + +enum ETeamFanContentAssetType { + k_eFanContentAssetType_LogoPNG = 1; + k_eFanContentAssetType_LogoSVG = 2; + k_eFanContentAssetType_Logo3D = 3; + k_eFanContentAssetType_Players = 4; + k_eFanContentAssetType_Sprays = 5; + k_eFanContentAssetType_Wallpapers = 6; + k_eFanContentAssetType_Emoticons = 7; + k_eFanContentAssetType_VoiceLines = 8; + k_eFanContentAssetType_Localization = 9; + k_eFanContentAssetType_Banner = 10; + k_eFanContentAssetType_BaseLogo = 11; +} + +enum ETeamFanContentAssetStatus { + k_eFanContentAssetStatus_None = 0; + k_eFanContentAssetStatus_Approved = 1; + k_eFanContentAssetStatus_Rejected = 2; +} + +enum ETalentContentStatus { + TALENT_CONTENT_STATUS_INVALID = 0; + TALENT_CONTENT_STATUS_PENDING = 1; + TALENT_CONTENT_STATUS_EVALUATED = 2; + TALENT_CONTENT_STATUS_REJECTED = 3; + TALENT_CONTENT_STATUS_APPROVED = 4; +} + +enum ETalentContentAssetType { + k_eTalentContentAssetType_Photo = 1; + k_eTalentContentAssetType_Autograph = 2; + k_eTalentContentAssetType_Voicelines = 3; +} + +enum ETalentContentAssetStatus { + k_eTalentContentAssetStatus_None = 0; + k_eTalentContentAssetStatus_Approved = 1; + k_eTalentContentAssetStatus_Rejected = 2; +} + +message CMsgArcanaVotes { + message Match { + optional uint32 match_id = 1; + optional int32 hero_id_0 = 2; + optional int32 hero_id_1 = 3; + optional uint32 hero_seeding_0 = 4; + optional uint32 hero_seeding_1 = 5; + optional uint32 vote_count_0 = 6; + optional uint32 vote_count_1 = 7; + optional uint32 voting_state = 8; + optional uint32 round_number = 9; + optional bool is_votes_hidden = 10; + optional uint32 calibration_time_remaining = 11; + } + + enum VotingState { + FINISHED = 0; + IN_PROGRESS = 1; + IN_FUTURE = 2; + } + + repeated .CMsgArcanaVotes.Match matches = 1; + optional uint32 round_time_remaining = 2; + optional uint32 round_number = 3; + optional uint32 voting_state = 4; + optional bool is_current_round_calibrating = 5; + optional uint32 closest_active_match_id = 6; + optional uint32 event_id = 7; + optional uint32 voting_start_time = 8; +} + +message CMsgDOTADPCFeed { + message Element { + optional .CMsgDOTADPCFeed.EFeedElementType type = 1 [default = FEED_SERIES_RESULT]; + optional uint32 timestamp = 2; + optional uint32 series_id = 3; + optional uint64 match_id = 4; + optional uint32 team_id = 5; + optional uint32 account_id = 6; + optional uint32 league_id = 7; + optional uint32 node_id = 8; + optional uint64 server_steam_id = 13; + optional uint32 data_1 = 9; + optional uint32 data_2 = 10; + optional uint32 data_3 = 11; + optional uint32 data_4 = 12; + } + + enum EFeedElementType { + FEED_SERIES_RESULT = 1; + FEED_MATCH_POPULAR = 2; + FEED_TEAM_UPCOMING_MATCH = 3; + FEED_TEAM_LEAGUE_RESULT = 4; + FEED_TEAM_ADD_PLAYER = 5; + FEED_TEAM_REMOVE_PLAYER = 6; + FEED_TEAM_DISBAND = 7; + FEED_LEAGUE_UPCOMING = 8; + FEED_LEAGUE_CONCLUDED = 9; + FEED_DPC_STANDINGS = 10; + FEED_ALERT_PREDICTIONS = 11; + FEED_ALERT_FANTASY = 12; + FEED_LEAGUE_LIVE_MATCH = 13; + FEED_LEAGUE_INPROGRESS_SERIES = 14; + } + + repeated .CMsgDOTADPCFeed.Element elements = 1; +} + +message CMsgDOTADPCUserInfo { + optional bool is_plus_subscriber = 1; +} + +message CMsgDraftTrivia { + message DraftTriviaHeroInfo { + optional int32 hero_id = 1; + optional uint32 role = 2; + } + + message DraftTriviaMatchInfo { + repeated .CMsgDraftTrivia.DraftTriviaHeroInfo radiant_heroes = 1; + repeated .CMsgDraftTrivia.DraftTriviaHeroInfo dire_heroes = 2; + } + + message PreviousResult { + optional bool voted_correctly = 1; + optional bool voted_radiant = 2; + optional .CMsgDraftTrivia.DraftTriviaMatchInfo match_hero_info = 3; + optional uint32 match_rank_tier = 4; + optional uint32 end_time = 5; + optional uint64 match_id = 6; + } + + optional bool has_valid_match = 1; + optional .CMsgDraftTrivia.DraftTriviaMatchInfo match_hero_info = 2; + optional uint32 match_rank_tier = 3; + optional uint32 end_time = 4; + optional uint32 event_id = 5; + optional bool current_match_voted_radiant = 6; + optional .CMsgDraftTrivia.PreviousResult previous_result = 7; + optional uint32 current_streak = 8; +} + +message CMsgTeamFanContentAssetStatus { + optional .ETeamFanContentAssetType asset_type = 1 [default = k_eFanContentAssetType_LogoPNG]; + optional uint32 asset_index = 2; + optional .ETeamFanContentAssetStatus asset_status = 3 [default = k_eFanContentAssetStatus_None]; + optional uint32 crc = 4; +} + +message CMsgTeamFanContentAssetStatusResponse { + enum EResult { + k_eSuccess = 0; + k_eInternalError = 1; + } + + optional .CMsgTeamFanContentAssetStatusResponse.EResult result = 1 [default = k_eSuccess]; +} + +message CMsgTeamFanContentStatus { + message TeamStatus { + optional string name = 1; + optional uint32 team_id = 2; + optional string logo_url = 3; + optional .ETeamFanContentStatus status = 4 [default = TEAM_FAN_CONTENT_STATUS_INVALID]; + optional uint32 timestamp = 5; + optional uint64 ugc_logo = 7; + optional uint32 workshop_account_id = 8; + optional string abbreviation = 9; + optional uint32 voiceline_count = 10; + optional uint32 spray_count = 11; + optional uint32 emoticon_count = 12; + optional uint32 wallpaper_count = 13; + optional string comment = 14; + optional uint32 comment_timestamp = 15; + repeated .CMsgTeamFanContentAssetStatus asset_status = 16; + optional uint32 email_timestamp = 17; + optional uint32 email_tier = 18; + optional string languages = 19; + } + + repeated .CMsgTeamFanContentStatus.TeamStatus team_status_list = 1; +} + +message CMsgTeamFanContentAutographStatus { + message AutographStatus { + optional string pro_name = 1; + optional uint32 account_id = 2; + optional uint32 timestamp = 3; + optional string file = 4; + } + + message TeamStatus { + optional string name = 1; + optional uint32 team_id = 2; + repeated .CMsgTeamFanContentAutographStatus.AutographStatus autographs = 3; + optional uint32 workshop_account_id = 4; + } + + repeated .CMsgTeamFanContentAutographStatus.TeamStatus team_autographs = 1; +} + +message CMsgTalentContentAssetStatus { + optional .ETalentContentAssetType asset_type = 1 [default = k_eTalentContentAssetType_Photo]; + optional uint32 asset_index = 2; + optional .ETalentContentAssetStatus asset_status = 3 [default = k_eTalentContentAssetStatus_None]; +} + +message CMsgTalentContentStatus { + message TalentDetails { + optional uint32 account_id = 1; + optional string full_name = 2; + optional string nickname = 3; + optional uint32 workshop_item_id = 4; + optional string zip_file = 5; + optional .ETalentContentStatus status = 6 [default = TALENT_CONTENT_STATUS_INVALID]; + repeated .CMsgTalentContentAssetStatus asset_status = 7; + optional uint32 broadcast_language = 8; + optional uint32 submission_timestamp = 9; + } + + repeated .CMsgTalentContentStatus.TalentDetails talent_status = 1; +} + +message CMsgSetTalentContentResponse { + enum EResult { + k_eSuccess = 0; + k_eInternalError = 1; + k_eOutOfDate = 2; + } + + optional .CMsgSetTalentContentResponse.EResult result = 1 [default = k_eSuccess]; +} + +message CMsgDPCEvent { + message PhaseInfo { + optional .CMsgDPCEvent.ELeagueEventPhase phase = 1 [default = PHASE_INVALID]; + optional uint32 node_group_id = 2; + } + + message League { + optional .ELeagueRegion region = 1 [default = LEAGUE_REGION_UNSET]; + optional .ELeagueDivision division = 2 [default = LEAGUE_DIVISION_UNSET]; + optional uint32 league_id = 3; + repeated .CMsgDPCEvent.PhaseInfo phases = 4; + } + + enum ELeagueEvent { + EVENT_INVALID = 0; + SPRING_2021_LEAGUE = 1; + SPRING_2021_MAJOR = 2; + INTERNATIONAL_2021_QUALIFIERS = 3; + INTERNATIONAL_2021 = 4; + WINTER_2021_LEAGUE = 5; + WINTER_2021_LEAGUE_FINALS = 6; + SPRING_2022_LEAGUE = 7; + SPRING_2022_MAJOR = 8; + SUMMER_2022_LEAGUE = 9; + SUMMER_2022_MAJOR = 10; + INTERNATIONAL_2022 = 11; + CHINA_REGIONAL_FINALS = 12; + INTERNATIONAL_2022_REGIONAL_QUALIFIERS = 13; + INTERNATIONAL_2022_LAST_CHANCE_QUALIFIERS = 14; + WINTER_2023_LEAGUE = 15; + WINTER_2023_MAJOR = 16; + SPRING_2023_LEAGUE = 17; + SPRING_2023_MAJOR = 18; + SUMMER_2023_LEAGUE = 19; + SUMMER_2023_MAJOR = 20; + INTERNATIONAL_2023 = 21; + INTERNATIONAL_2024 = 23; + INTERNATIONAL_2025 = 24; + } + + enum ELeagueEventPhase { + PHASE_INVALID = 0; + WILD_CARD = 1; + GROUP_STAGE = 2; + GROUP_A = 3; + GROUP_B = 4; + OVERALL = 5; + PLAYOFF = 6; + RESULTS = 7; + DPC_POINT_STANDINGS = 8; + GROUP_C = 9; + GROUP_D = 10; + PLACEMENT = 11; + } + + enum ELeagueEventType { + UNKNOWN = 0; + LEAGUE = 1; + MAJOR = 2; + INTERNATIONAL_QUALIFIERS = 3; + INTERNATIONAL = 4; + LEAGUE_FINALS = 5; + EXTERNAL = 6; + } + + enum ETour { + TOUR_NONE = 0; + TOUR_1 = 1; + TOUR_2 = 2; + TOUR_3 = 3; + } + + optional .CMsgDPCEvent.ELeagueEvent event = 1 [default = EVENT_INVALID]; + optional .CMsgDPCEvent.ELeagueEventType event_type = 2 [default = UNKNOWN]; + repeated .CMsgDPCEvent.League leagues = 3; + optional uint32 registration_period = 4; + optional bool is_event_upcoming = 5; + optional bool is_event_completed = 6; + optional string event_name = 7; + optional uint32 multicast_league_id = 8; + repeated uint32 multicast_streams = 9; + optional .CMsgDPCEvent.ETour tour = 10 [default = TOUR_NONE]; + optional uint32 timestamp_drop_lock = 12; + optional uint32 timestamp_add_lock = 13; + optional uint32 timestamp_content_deadline = 14; + optional bool is_fantasy_enabled = 15; + optional uint32 timestamp_content_review_deadline = 16; +} + +message CMsgDPCEventList { + repeated .CMsgDPCEvent events = 1; +} + +message CMsgDOTAFantasyCardLineup { + message CardBonus { + optional uint32 bonus_stat = 1; + optional uint32 bonus_value = 2; + } + + message Card { + optional uint32 player_account_id = 1; + optional string player_name = 2; + optional uint32 team_id = 3; + optional string team_name = 4; + optional uint32 role = 5; + repeated .CMsgDOTAFantasyCardLineup.CardBonus bonuses = 6; + optional float score = 7; + optional bool finalized = 8; + optional uint64 item_id = 9; + } + + message League { + optional uint32 league_id = 1; + repeated .CMsgDOTAFantasyCardLineup.Card cards = 2; + optional float score = 3; + } + + message Period { + optional uint32 fantasy_period = 1 [default = 4294967295]; + optional uint32 timestamp_start = 2; + optional uint32 timestamp_end = 3; + repeated .CMsgDOTAFantasyCardLineup.League leagues = 4; + } + + repeated .CMsgDOTAFantasyCardLineup.Period periods = 1; +} + +message CMsgDOTAFantasyCardList { + message CardBonus { + optional uint32 bonus_stat = 1; + optional uint32 bonus_value = 2; + } + + message Card { + optional uint32 player_account_id = 1; + optional string player_name = 2; + optional uint32 team_id = 3; + optional string team_name = 4; + optional uint32 role = 5; + repeated .CMsgDOTAFantasyCardList.CardBonus bonuses = 6; + optional uint64 item_id = 8; + } + + repeated .CMsgDOTAFantasyCardList.Card cards = 1; +} + +message CMsgChatToxicityToxicPlayerMatchesReport { + message IndividualRow { + optional uint32 player_account_id = 1; + optional uint32 num_matches_seen = 2; + optional uint32 num_messages = 3; + optional uint32 num_messages_toxic = 4; + optional uint64 first_match_seen = 5; + optional uint64 last_match_seen = 6; + } + + repeated .CMsgChatToxicityToxicPlayerMatchesReport.IndividualRow rows = 1; +} + +message CMsgChatToxicityReport { + optional uint32 num_matches_seen = 1; + optional uint32 num_messages = 2; + optional uint32 num_messages_ml_thinks_toxic = 4; + optional string status = 5; + optional uint32 result = 6; + optional string message = 7; +} + +message CMsgGetTeamAuditInformation { + message Action { + optional uint32 registration_period = 1; + optional uint32 account_id = 2; + optional uint32 action = 3; + optional uint32 timestamp = 4; + optional string player_name = 5; + optional string player_real_name = 6; + } + + optional uint32 team_id = 1; + optional string team_name = 2; + repeated .CMsgGetTeamAuditInformation.Action actions = 3; + optional uint32 last_updated = 4; +} + +message CMsgDOTADPCMatch { + optional .CMsgDOTAMatch match = 1; + optional .CDOTAMatchMetadata metadata = 2; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_match_metadata.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_match_metadata.proto new file mode 100644 index 00000000..1cedf26a --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_match_metadata.proto @@ -0,0 +1,393 @@ +import "in/dragonbra/javasteam/protobufs/dota2/base_gcmessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_match_management.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_lobby.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_overworld.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_craftworks.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common_monster_hunter.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_gcmessages_common.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/dota_shared_enums.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/gcsdk_gcmessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/networkbasetypes.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum EPlayerInventorySnapshotFlags { + EPlayerInventorySnapshotFlags_HasScepter = 1; + EPlayerInventorySnapshotFlags_HasShard = 2; +} + +message CDOTAMatchMetadataFile { + option (maximum_size_bytes) = 1000000; + + required int32 version = 1; + required uint64 match_id = 2; + optional .CDOTAMatchMetadata metadata = 3; + optional bytes private_metadata = 5; +} + +message CDOTAMatchMetadata { + message EconItem { + optional uint32 def_index = 1; + optional uint32 quality = 2 [default = 4]; + repeated .CSOEconItemAttribute attribute = 3; + optional uint32 style = 4 [default = 0]; + repeated .CSOEconItemEquipped equipped_state = 5; + } + + message Team { + message PlayerKill { + optional uint32 victim_slot = 1; + optional uint32 count = 2; + } + + message ItemPurchase { + optional int32 item_id = 1 [default = -1]; + optional int32 purchase_time = 2; + } + + message InventorySnapshot { + repeated int32 item_id = 1; + optional int32 game_time = 2; + optional uint32 kills = 3; + optional uint32 deaths = 4; + optional uint32 assists = 5; + optional uint32 level = 6; + repeated int32 backpack_item_id = 7; + optional int32 neutral_item_id = 8 [default = -1]; + optional int32 neutral_enhancement_id = 9 [default = -1]; + optional uint32 last_hits = 10; + optional uint32 denies = 11; + optional uint32 flags = 12; + } + + message AutoStyleCriteria { + optional uint32 name_token = 1; + optional float value = 2; + } + + message StrangeGemProgress { + optional uint32 kill_eater_type = 1; + optional uint32 gem_item_def_index = 2; + optional int32 required_hero_id = 3; + optional uint32 starting_value = 4; + optional uint32 ending_value = 5; + optional uint32 owner_item_def_index = 6; + optional uint64 owner_item_id = 7; + } + + message VictoryPrediction { + optional uint64 item_id = 1; + optional uint32 item_def_index = 2; + optional uint32 starting_value = 3; + optional bool is_victory = 4; + } + + message SubChallenge { + optional uint32 slot_id = 1; + optional uint32 start_value = 2; + optional uint32 end_value = 3; + optional bool completed = 4; + } + + message CavernChallengeResult { + optional uint32 completed_path_id = 1 [default = 255]; + optional uint32 claimed_room_id = 2 [default = 255]; + } + + message ActionGrant { + optional uint32 action_id = 1; + optional uint32 quantity = 2; + optional uint32 audit = 3; + optional uint64 audit_data = 5; + } + + message CandyGrant { + optional uint32 points = 1; + optional uint32 reason = 2; + } + + message PeriodicResourceData { + optional uint32 periodic_resource_id = 1; + optional uint32 remaining = 2; + optional uint32 max = 3; + } + + message EventData { + optional uint32 event_id = 1; + optional uint32 event_points = 2; + optional uint32 challenge_instance_id = 3; + optional uint32 challenge_quest_id = 4; + optional uint32 challenge_quest_challenge_id = 5; + optional bool challenge_completed = 6; + optional uint32 challenge_rank_completed = 7; + optional uint32 challenge_rank_previously_completed = 8; + optional bool event_owned = 9; + repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10; + optional uint32 wager_winnings = 11; + optional bool cavern_challenge_active = 12; + optional uint32 cavern_challenge_winnings = 13; + optional uint32 amount_wagered = 14; + optional uint32 periodic_point_adjustments = 16; + repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17; + optional uint32 cavern_challenge_plus_shard_winnings = 18; + repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19; + optional uint32 cavern_crawl_map_variant = 20 [default = 255]; + optional uint32 team_wager_bonus_pct = 21; + optional uint32 wager_streak_pct = 22; + repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23; + optional uint32 active_season_id = 24; + optional bool cavern_crawl_half_credit = 25; + repeated .CDOTAMatchMetadata.Team.PeriodicResourceData periodic_resources = 26; + repeated .CExtraMsgBlock extra_event_messages = 27; + } + + message FeaturedGamemodeProgress { + optional uint32 start_value = 1; + optional uint32 end_value = 2; + optional uint32 max_value = 3; + } + + message KillInfo { + enum KillType { + KILL_TYPE_PLAYER = 0; + KILL_TYPE_TOWER = 1; + KILL_TYPE_BARRACKS = 2; + KILL_TYPE_ROSHAN = 3; + KILL_TYPE_MINIBOSS = 4; + } + + optional .CDOTAMatchMetadata.Team.KillInfo.KillType kill_type = 1 [default = KILL_TYPE_PLAYER]; + optional uint32 victim_player_slot = 2; + repeated uint32 killer_player_slot = 3; + optional int32 time = 4; + optional int32 bounty = 5; + } + + message Player { + message ContractProgress { + optional uint32 guild_id = 1; + optional uint32 event_id = 2; + optional uint32 challenge_instance_id = 3; + optional uint32 challenge_parameter = 4; + optional uint32 contract_stars = 5; + optional uint32 contract_slot = 6; + optional bool completed = 7; + } + + message OverworldRewards { + optional uint32 overworld_id = 1; + optional .CMsgOverworldTokenQuantity tokens = 2; + } + + repeated int32 ability_upgrades = 2; + optional uint32 player_slot = 3; + repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5; + repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6; + optional uint32 avg_kills_x16 = 7; + optional uint32 avg_deaths_x16 = 8; + optional uint32 avg_assists_x16 = 9; + optional uint32 avg_gpm_x16 = 10; + optional uint32 avg_xpm_x16 = 11; + optional uint32 best_kills_x16 = 12; + optional uint32 best_assists_x16 = 13; + optional uint32 best_gpm_x16 = 14; + optional uint32 best_xpm_x16 = 15; + optional uint32 win_streak = 16; + optional uint32 best_win_streak = 17; + optional float fight_score = 18; + optional float farm_score = 19; + optional float support_score = 20; + optional float push_score = 21; + repeated uint32 level_up_times = 22; + repeated float graph_net_worth = 23; + repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24; + optional bool avg_stats_calibrated = 25; + repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26; + repeated .CDOTAMatchMetadata.Team.EventData event_data = 29; + repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30; + optional uint32 hero_xp = 31; + optional uint32 camps_stacked = 32; + repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33; + optional uint32 lane_selection_flags = 34; + optional uint32 rampages = 35; + optional uint32 triple_kills = 36; + optional uint32 aegis_snatched = 37; + optional uint32 rapiers_purchased = 38; + optional uint32 couriers_killed = 39; + optional uint32 net_worth_rank = 40; + optional uint32 support_gold_spent = 41; + optional uint32 observer_wards_placed = 42; + optional uint32 sentry_wards_placed = 43; + optional uint32 wards_dewarded = 44; + optional float stun_duration = 45; + optional .EDOTAMMRBoostType rank_mmr_boost_type = 46 [default = k_EDOTAMMRBoostType_None]; + repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48; + repeated uint32 guild_ids = 49; + repeated float graph_hero_damage = 50; + optional .DOTA_GC_TEAM team_number = 51 [default = DOTA_GC_TEAM_GOOD_GUYS]; + optional uint32 team_slot = 52; + optional .CDOTAMatchMetadata.Team.FeaturedGamemodeProgress featured_gamemode_progress = 53; + optional uint32 featured_hero_sticker_index = 54; + optional uint32 featured_hero_sticker_quality = 55; + repeated .CDOTAMatchMetadata.EconItem equipped_econ_items = 56; + optional int32 game_player_id = 57 [default = -1]; + repeated .CMsgTrackedStat player_tracked_stats = 58; + optional .CDOTAMatchMetadata.Team.Player.OverworldRewards overworld_rewards = 59; + repeated .CMsgCraftworksQuestReward craftworks_quest_rewards = 60; + optional int32 ad_facet_hero_id = 61; + optional .CMsgMonsterHunterMatchRewards.Player monster_hunter_rewards = 62; + } + + optional uint32 dota_team = 1; + repeated .CDOTAMatchMetadata.Team.Player players = 2; + repeated float graph_experience = 3; + repeated float graph_gold_earned = 4; + repeated float graph_net_worth = 5; + optional bool cm_first_pick = 6; + optional int32 cm_captain_player_id = 7 [default = -1]; + optional uint32 cm_penalty = 10; + repeated .CMsgTrackedStat team_tracked_stats = 11; + repeated .CDOTAMatchMetadata.Team.KillInfo kills = 12; + } + + message GuildChallengeProgress { + message IndividualProgress { + optional uint32 progress = 2; + optional uint32 player_slot = 3; + } + + optional uint32 guild_id = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; + optional uint32 challenge_instance_id = 3; + optional uint32 challenge_parameter = 4; + optional uint32 challenge_timestamp = 5; + optional uint32 challenge_progress_at_start = 6; + optional uint32 challenge_progress_accumulated = 7; + repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8; + } + + message Tip { + optional uint32 source_player_slot = 1; + optional uint32 target_player_slot = 2; + optional uint32 tip_amount = 3; + optional .EEvent event_id = 4 [default = EVENT_ID_NONE]; + } + + repeated .CDOTAMatchMetadata.Team teams = 1; + optional fixed64 lobby_id = 3; + optional fixed64 report_until_time = 4; + optional bytes event_game_custom_table = 5; + optional uint32 primary_event_id = 6; + optional .CMsgMatchMatchmakingStats matchmaking_stats = 8; + optional .CMvpData mvp_data = 9; + repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10; + optional bytes custom_post_game_table = 11; + repeated .CDOTAMatchMetadata.Tip match_tips = 12; + repeated .CMsgTrackedStat match_tracked_stats = 13; + optional uint32 primary_event_id_for_display = 14; +} + +message CDOTAMatchPrivateMetadata { + message StringName { + optional uint32 id = 1; + optional string name = 2; + } + + message Team { + message Player { + message CombatSegment { + message DamageByAbility { + message ByHeroTarget { + optional int32 hero_id = 1; + optional uint32 damage = 2; + } + + optional uint32 source_unit_index = 3; + optional int32 ability_id = 1 [default = -1]; + repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2; + } + + message HealingByAbility { + message ByHeroTarget { + optional int32 hero_id = 1; + optional uint32 healing = 2; + } + + optional uint32 source_unit_index = 3; + optional int32 ability_id = 1 [default = -1]; + repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2; + } + + optional int32 game_time = 1; + repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2; + repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3; + } + + message BuffRecord { + message ByHeroTarget { + optional int32 hero_id = 1; + optional float elapsed_duration = 2; + optional bool is_hidden = 3; + } + + optional int32 buff_ability_id = 1 [default = -1]; + optional string buff_modifier_name = 3; + repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2; + } + + message GoldReceived { + optional uint32 creep = 1; + optional uint32 heroes = 2; + optional uint32 bounty_runes = 3; + optional uint32 passive = 4; + optional uint32 buildings = 5; + optional uint32 abilities = 6; + optional uint32 wards = 7; + optional uint32 other = 8; + } + + message XPReceived { + optional uint32 creep = 1; + optional uint32 heroes = 2; + optional uint32 roshan = 3; + optional uint32 tome_of_knowledge = 4; + optional uint32 outpost = 5; + optional uint32 other = 6; + optional uint32 abilities = 7; + } + + optional uint32 player_slot = 2; + optional bytes position_stream = 3; + repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4; + repeated string damage_unit_names = 5; + repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6; + repeated float graph_kills = 7; + repeated float graph_deaths = 8; + repeated float graph_assists = 9; + repeated float graph_lasthits = 10; + repeated float graph_denies = 11; + optional .CDOTAMatchPrivateMetadata.Team.Player.GoldReceived gold_received = 12; + optional .CDOTAMatchPrivateMetadata.Team.Player.XPReceived xp_received = 13; + optional .DOTA_GC_TEAM team_number = 14 [default = DOTA_GC_TEAM_GOOD_GUYS]; + optional uint32 team_slot = 15; + } + + message Building { + optional string unit_name = 1; + optional uint32 position_quant_x = 2; + optional uint32 position_quant_y = 3; + optional float death_time = 4; + } + + optional uint32 dota_team = 1; + repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2; + repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3; + } + + repeated .CDOTAMatchPrivateMetadata.Team teams = 1; + repeated float graph_win_probability = 2; + repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_shared_enums.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_shared_enums.proto new file mode 100644 index 00000000..02817c82 --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/dota_shared_enums.proto @@ -0,0 +1,909 @@ +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum DOTA_GameMode { + DOTA_GAMEMODE_NONE = 0; + DOTA_GAMEMODE_AP = 1; + DOTA_GAMEMODE_CM = 2; + DOTA_GAMEMODE_RD = 3; + DOTA_GAMEMODE_SD = 4; + DOTA_GAMEMODE_AR = 5; + DOTA_GAMEMODE_INTRO = 6; + DOTA_GAMEMODE_HW = 7; + DOTA_GAMEMODE_REVERSE_CM = 8; + DOTA_GAMEMODE_XMAS = 9; + DOTA_GAMEMODE_TUTORIAL = 10; + DOTA_GAMEMODE_MO = 11; + DOTA_GAMEMODE_LP = 12; + DOTA_GAMEMODE_POOL1 = 13; + DOTA_GAMEMODE_FH = 14; + DOTA_GAMEMODE_CUSTOM = 15; + DOTA_GAMEMODE_CD = 16; + DOTA_GAMEMODE_BD = 17; + DOTA_GAMEMODE_ABILITY_DRAFT = 18; + DOTA_GAMEMODE_EVENT = 19; + DOTA_GAMEMODE_ARDM = 20; + DOTA_GAMEMODE_1V1MID = 21; + DOTA_GAMEMODE_ALL_DRAFT = 22; + DOTA_GAMEMODE_TURBO = 23; + DOTA_GAMEMODE_MUTATION = 24; + DOTA_GAMEMODE_COACHES_CHALLENGE = 25; + DOTA_GAMEMODE_BOT_CHALLENGE = 26; +} + +enum DOTA_GameState { + DOTA_GAMERULES_STATE_INIT = 0; + DOTA_GAMERULES_STATE_WAIT_FOR_PLAYERS_TO_LOAD = 1; + DOTA_GAMERULES_STATE_HERO_SELECTION = 2; + DOTA_GAMERULES_STATE_STRATEGY_TIME = 3; + DOTA_GAMERULES_STATE_PRE_GAME = 4; + DOTA_GAMERULES_STATE_GAME_IN_PROGRESS = 5; + DOTA_GAMERULES_STATE_POST_GAME = 6; + DOTA_GAMERULES_STATE_DISCONNECT = 7; + DOTA_GAMERULES_STATE_TEAM_SHOWCASE = 8; + DOTA_GAMERULES_STATE_CUSTOM_GAME_SETUP = 9; + DOTA_GAMERULES_STATE_WAIT_FOR_MAP_TO_LOAD = 10; + DOTA_GAMERULES_STATE_SCENARIO_SETUP = 11; + DOTA_GAMERULES_STATE_PLAYER_DRAFT = 12; + DOTA_GAMERULES_STATE_LAST = 13; +} + +enum DOTA_GC_TEAM { + DOTA_GC_TEAM_GOOD_GUYS = 0; + DOTA_GC_TEAM_BAD_GUYS = 1; + DOTA_GC_TEAM_BROADCASTER = 2; + DOTA_GC_TEAM_SPECTATOR = 3; + DOTA_GC_TEAM_PLAYER_POOL = 4; + DOTA_GC_TEAM_NOTEAM = 5; + DOTA_GC_TEAM_CUSTOM_1 = 6; + DOTA_GC_TEAM_CUSTOM_2 = 7; + DOTA_GC_TEAM_CUSTOM_3 = 8; + DOTA_GC_TEAM_CUSTOM_4 = 9; + DOTA_GC_TEAM_CUSTOM_5 = 10; + DOTA_GC_TEAM_CUSTOM_6 = 11; + DOTA_GC_TEAM_CUSTOM_7 = 12; + DOTA_GC_TEAM_CUSTOM_8 = 13; + DOTA_GC_TEAM_NEUTRALS = 14; +} + +enum EEvent { + EVENT_ID_NONE = 0; + EVENT_ID_DIRETIDE = 1; + EVENT_ID_SPRING_FESTIVAL = 2; + EVENT_ID_FROSTIVUS_2013 = 3; + EVENT_ID_COMPENDIUM_2014 = 4; + EVENT_ID_NEXON_PC_BANG = 5; + EVENT_ID_PWRD_DAC_2015 = 6; + EVENT_ID_NEW_BLOOM_2015 = 7; + EVENT_ID_INTERNATIONAL_2015 = 8; + EVENT_ID_FALL_MAJOR_2015 = 9; + EVENT_ID_ORACLE_PA = 10; + EVENT_ID_NEW_BLOOM_2015_PREBEAST = 11; + EVENT_ID_FROSTIVUS = 12; + EVENT_ID_WINTER_MAJOR_2016 = 13; + EVENT_ID_INTERNATIONAL_2016 = 14; + EVENT_ID_FALL_MAJOR_2016 = 15; + EVENT_ID_WINTER_MAJOR_2017 = 16; + EVENT_ID_NEW_BLOOM_2017 = 17; + EVENT_ID_INTERNATIONAL_2017 = 18; + EVENT_ID_PLUS_SUBSCRIPTION = 19; + EVENT_ID_SINGLES_DAY_2017 = 20; + EVENT_ID_FROSTIVUS_2017 = 21; + EVENT_ID_INTERNATIONAL_2018 = 22; + EVENT_ID_FROSTIVUS_2018 = 23; + EVENT_ID_NEW_BLOOM_2019 = 24; + EVENT_ID_INTERNATIONAL_2019 = 25; + EVENT_ID_NEW_PLAYER_EXPERIENCE = 26; + EVENT_ID_FROSTIVUS_2019 = 27; + EVENT_ID_NEW_BLOOM_2020 = 28; + EVENT_ID_INTERNATIONAL_2020 = 29; + EVENT_ID_TEAM_FANDOM = 30; + EVENT_ID_DIRETIDE_2020 = 31; + EVENT_ID_SPRING_2021 = 32; + EVENT_ID_FALL_2021 = 33; + EVENT_ID_TEAM_FANDOM_FALL_2021 = 34; + EVENT_ID_TEAM_2021_2022_TOUR2 = 35; + EVENT_ID_INTERNATIONAL_2022 = 36; + EVENT_ID_TEAM_2021_2022_TOUR3 = 37; + EVENT_ID_TEAM_INTERNATIONAL_2022 = 38; + EVENT_ID_PERMANENT_GRANTS = 39; + EVENT_ID_MUERTA_RELEASE_SPRING2023 = 40; + EVENT_ID_TEAM_2023_TOUR1 = 41; + EVENT_ID_TEAM_2023_TOUR2 = 42; + EVENT_ID_TEAM_2023_TOUR3 = 43; + EVENT_ID_INTERNATIONAL_2023 = 45; + EVENT_ID_10TH_ANNIVERSARY = 46; + EVENT_ID_CROWNFALL = 47; + EVENT_ID_FROSTIVUS_2023 = 48; + EVENT_ID_INTERNATIONAL_2024 = 49; + EVENT_ID_FROSTIVUS_2024 = 50; + EVENT_ID_MONSTER_HUNTER = 51; + EVENT_ID_INTERNATIONAL_2025 = 52; + EVENT_ID_FALL_2025 = 53; + EVENT_ID_WINTER_2025 = 55; +} + +enum ERankType { + k_ERankType_Invalid = 0; + k_ERankType_Casual = 1; + k_ERankType_Ranked = 2; + k_ERankType_CasualLegacy = 3; + k_ERankType_RankedLegacy = 4; + k_ERankType_CasualGlicko = 5; + k_ERankType_RankedGlicko = 6; + k_ERankType_RankMax = 7; + k_ERankType_BehaviorPrivate = 100; + k_ERankType_BehaviorPublic = 101; + k_ERankType_Max = 102; +} + +enum DOTALeaverStatus_t { + DOTA_LEAVER_NONE = 0; + DOTA_LEAVER_DISCONNECTED = 1; + DOTA_LEAVER_DISCONNECTED_TOO_LONG = 2; + DOTA_LEAVER_ABANDONED = 3; + DOTA_LEAVER_AFK = 4; + DOTA_LEAVER_NEVER_CONNECTED = 5; + DOTA_LEAVER_NEVER_CONNECTED_TOO_LONG = 6; + DOTA_LEAVER_FAILED_TO_READY_UP = 7; + DOTA_LEAVER_DECLINED = 8; + DOTA_LEAVER_DECLINED_REQUEUE = 9; +} + +enum DOTAConnectionState_t { + DOTA_CONNECTION_STATE_UNKNOWN = 0; + DOTA_CONNECTION_STATE_NOT_YET_CONNECTED = 1; + DOTA_CONNECTION_STATE_CONNECTED = 2; + DOTA_CONNECTION_STATE_DISCONNECTED = 3; + DOTA_CONNECTION_STATE_ABANDONED = 4; + DOTA_CONNECTION_STATE_LOADING = 5; + DOTA_CONNECTION_STATE_FAILED = 6; +} + +enum Fantasy_Roles { + FANTASY_ROLE_UNDEFINED = 0; + FANTASY_ROLE_CORE = 1; + FANTASY_ROLE_SUPPORT = 2; + FANTASY_ROLE_OFFLANE = 3; + FANTASY_ROLE_MID = 4; +} + +enum Fantasy_Scoring { + FANTASY_SCORING_KILLS = 0; + FANTASY_SCORING_DEATHS = 1; + FANTASY_SCORING_CS = 2; + FANTASY_SCORING_GPM = 3; + FANTASY_SCORING_TOWER_KILLS = 4; + FANTASY_SCORING_ROSHAN_KILLS = 5; + FANTASY_SCORING_TEAMFIGHT_PARTICIPATION = 6; + FANTASY_SCORING_WARDS_PLANTED = 7; + FANTASY_SCORING_CAMPS_STACKED = 8; + FANTASY_SCORING_RUNES_GRABBED = 9; + FANTASY_SCORING_FIRST_BLOOD = 10; + FANTASY_SCORING_STUNS = 11; + FANTASY_SCORING_SMOKES_USED = 12; + FANTASY_SCORING_MADSTONE = 13; + FANTASY_SCORING_WATCHERS_TAKEN = 14; + FANTASY_SCORING_LOTUSES_GAINED = 15; + FANTASY_SCORING_TORMENTOR_KILLS = 16; + FANTASY_SCORING_COURIER_KILLS = 17; + FANTASY_SCORING_TYPES = 18; + FANTASY_SCORING_INVALID = 19; +} + +enum Fantasy_Team_Slots { + FANTASY_SLOT_NONE = 0; + FANTASY_SLOT_CORE = 1; + FANTASY_SLOT_SUPPORT = 2; + FANTASY_SLOT_ANY = 3; + FANTASY_SLOT_BENCH = 4; +} + +enum Fantasy_Selection_Mode { + FANTASY_SELECTION_INVALID = 0; + FANTASY_SELECTION_LOCKED = 1; + FANTASY_SELECTION_SHUFFLE = 2; + FANTASY_SELECTION_FREE_PICK = 3; + FANTASY_SELECTION_ENDED = 4; + FANTASY_SELECTION_PRE_SEASON = 5; + FANTASY_SELECTION_PRE_DRAFT = 6; + FANTASY_SELECTION_DRAFTING = 7; + FANTASY_SELECTION_REGULAR_SEASON = 8; + FANTASY_SELECTION_CARD_BASED = 9; +} + +enum Fantasy_Gem_Type { + FANTASY_GEM_TYPE_RUBY = 0; + FANTASY_GEM_TYPE_SAPPHIRE = 1; + FANTASY_GEM_TYPE_EMERALD = 2; +} + +enum DOTAChatChannelType_t { + DOTAChannelType_Regional = 0; + DOTAChannelType_Custom = 1; + DOTAChannelType_Party = 2; + DOTAChannelType_Lobby = 3; + DOTAChannelType_Team = 4; + DOTAChannelType_Guild = 5; + DOTAChannelType_Fantasy = 6; + DOTAChannelType_Whisper = 7; + DOTAChannelType_Console = 8; + DOTAChannelType_Tab = 9; + DOTAChannelType_Invalid = 10; + DOTAChannelType_GameAll = 11; + DOTAChannelType_GameAllies = 12; + DOTAChannelType_GameSpectator = 13; + DOTAChannelType_GameCoaching = 14; + DOTAChannelType_Cafe = 15; + DOTAChannelType_CustomGame = 16; + DOTAChannelType_Private = 17; + DOTAChannelType_PostGame = 18; + DOTAChannelType_BattleCup = 19; + DOTAChannelType_HLTVSpectator = 20; + DOTAChannelType_GameEvents = 21; + DOTAChannelType_Trivia = 22; + DOTAChannelType_NewPlayer = 23; + DOTAChannelType_PrivateCoaching = 24; +} + +enum EChatSpecialPrivileges { + k_EChatSpecialPrivileges_None = 0; + k_EChatSpecialPrivileges_Moderator = 1; + k_EChatSpecialPrivileges_SuperModerator = 2; +} + +enum DOTACommType_t { + DOTA_COMM_TYPE_NONE = 0; + DOTA_COMM_TYPE_PING = 1; + DOTA_COMM_TYPE_CHATWHEEL = 2; + DOTA_COMM_TYPE_TIP = 3; + DOTA_COMM_TYPE_TEXT = 4; + DOTA_COMM_TYPE_SHOWCASE = 5; + DOTA_COMM_TYPE_VOICE = 6; + DOTA_COMM_TYPE_ALLY_ABILITY = 7; + DOTA_COMM_TYPE_PAUSE = 8; + DOTA_COMM_TYPE_COACHING = 9; + DOTA_COMM_TYPE_NOCOOLDOWN = 10; + DOTA_COMM_TYPE_RANKEDMATCHMAKE = 11; + DOTA_COMM_TYPE_DROPS = 12; + DOTA_COMM_TYPE_NEWPLAYER_EXPERT = 13; + DOTA_COMM_TYPE_COACHED = 14; + DOTA_COMM_TYPE_MAPDRAWING = 15; +} + +enum DOTACommLevel_t { + DOTA_COMM_LEVEL_NONE = 0; + DOTA_COMM_LEVEL_COOLDOWN = 1; + DOTA_COMM_LEVEL_PINGS = 2; + DOTA_COMM_LEVEL_MAPDRAWING = 3; + DOTA_COMM_LEVEL_CHAT = 4; + DOTA_COMM_LEVEL_TIPPING = 5; + DOTA_COMM_LEVEL_VOICE = 6; + DOTA_COMM_LEVEL_ALLIED_ABILITY = 7; +} + +enum DOTABehaviorLevel_t { + DOTA_BEHAVIOR_LEVEL_NONE = 0; + DOTA_BEHAVIOR_LEVEL_RANKED_ALLOWED = 1; + DOTA_BEHAVIOR_LEVEL_PAUSING = 2; + DOTA_BEHAVIOR_LEVEL_DROPS = 3; + DOTA_BEHAVIOR_LEVEL_COACHING = 4; +} + +enum EProfileCardSlotType { + k_EProfileCardSlotType_Empty = 0; + k_EProfileCardSlotType_Stat = 1; + k_EProfileCardSlotType_Trophy = 2; + k_EProfileCardSlotType_Item = 3; + k_EProfileCardSlotType_Hero = 4; + k_EProfileCardSlotType_Emoticon = 5; + k_EProfileCardSlotType_Team = 6; +} + +enum EMatchGroupServerStatus { + k_EMatchGroupServerStatus_OK = 0; + k_EMatchGroupServerStatus_LimitedAvailability = 1; + k_EMatchGroupServerStatus_Offline = 2; +} + +enum DOTA_CM_PICK { + DOTA_CM_RANDOM = 0; + DOTA_CM_GOOD_GUYS = 1; + DOTA_CM_BAD_GUYS = 2; +} + +enum DOTALowPriorityBanType { + DOTA_LOW_PRIORITY_BAN_ABANDON = 0; + DOTA_LOW_PRIORITY_BAN_REPORTS = 1; + DOTA_LOW_PRIORITY_BAN_SECONDARY_ABANDON = 2; + DOTA_LOW_PRIORITY_BAN_PRE_GAME_ROLE = 3; +} + +enum DOTALobbyReadyState { + DOTALobbyReadyState_UNDECLARED = 0; + DOTALobbyReadyState_ACCEPTED = 1; + DOTALobbyReadyState_DECLINED = 2; + DOTALobbyReadyState_DECLINED_REQUEUE = 3; +} + +enum DOTAJoinLobbyResult { + DOTA_JOIN_RESULT_SUCCESS = 0; + DOTA_JOIN_RESULT_ALREADY_IN_GAME = 1; + DOTA_JOIN_RESULT_INVALID_LOBBY = 2; + DOTA_JOIN_RESULT_INCORRECT_PASSWORD = 3; + DOTA_JOIN_RESULT_ACCESS_DENIED = 4; + DOTA_JOIN_RESULT_GENERIC_ERROR = 5; + DOTA_JOIN_RESULT_INCORRECT_VERSION = 6; + DOTA_JOIN_RESULT_IN_TEAM_PARTY = 7; + DOTA_JOIN_RESULT_NO_LOBBY_FOUND = 8; + DOTA_JOIN_RESULT_LOBBY_FULL = 9; + DOTA_JOIN_RESULT_CUSTOM_GAME_INCORRECT_VERSION = 10; + DOTA_JOIN_RESULT_TIMEOUT = 11; + DOTA_JOIN_RESULT_CUSTOM_GAME_COOLDOWN = 12; + DOTA_JOIN_RESULT_BUSY = 13; + DOTA_JOIN_RESULT_NO_PLAYTIME = 14; +} + +enum DOTASelectionPriorityRules { + k_DOTASelectionPriorityRules_Manual = 0; + k_DOTASelectionPriorityRules_Automatic = 1; +} + +enum DOTASelectionPriorityChoice { + k_DOTASelectionPriorityChoice_Invalid = 0; + k_DOTASelectionPriorityChoice_FirstPick = 1; + k_DOTASelectionPriorityChoice_SecondPick = 2; + k_DOTASelectionPriorityChoice_Radiant = 3; + k_DOTASelectionPriorityChoice_Dire = 4; +} + +enum DOTAMatchVote { + DOTAMatchVote_INVALID = 0; + DOTAMatchVote_POSITIVE = 1; + DOTAMatchVote_NEGATIVE = 2; +} + +enum DOTALobbyVisibility { + DOTALobbyVisibility_Public = 0; + DOTALobbyVisibility_Friends = 1; + DOTALobbyVisibility_Unlisted = 2; +} + +enum EDOTAPlayerMMRType { + k_EDOTAPlayerMMRType_Invalid = 0; + k_EDOTAPlayerMMRType_GeneralHidden = 1; + k_EDOTAPlayerMMRType_GeneralCompetitive = 3; +} + +enum EDOTAMMRBoostType { + k_EDOTAMMRBoostType_None = 0; + k_EDOTAMMRBoostType_Leader = 1; + k_EDOTAMMRBoostType_Follower = 2; +} + +enum MatchType { + MATCH_TYPE_CASUAL = 0; + MATCH_TYPE_COOP_BOTS = 1; + MATCH_TYPE_COMPETITIVE = 4; + MATCH_TYPE_WEEKEND_TOURNEY = 5; + MATCH_TYPE_EVENT = 7; + MATCH_TYPE_COACHES_CHALLENGE = 12; + MATCH_TYPE_NEW_PLAYER_POOL = 14; +} + +enum DOTABotDifficulty { + BOT_DIFFICULTY_PASSIVE = 0; + BOT_DIFFICULTY_EASY = 1; + BOT_DIFFICULTY_MEDIUM = 2; + BOT_DIFFICULTY_HARD = 3; + BOT_DIFFICULTY_UNFAIR = 4; + BOT_DIFFICULTY_INVALID = 5; + BOT_DIFFICULTY_EXTRA1 = 6; + BOT_DIFFICULTY_EXTRA2 = 7; + BOT_DIFFICULTY_EXTRA3 = 8; + BOT_DIFFICULTY_NPX = 9; +} + +enum DOTA_BOT_MODE { + DOTA_BOT_MODE_NONE = 0; + DOTA_BOT_MODE_LANING = 1; + DOTA_BOT_MODE_ATTACK = 2; + DOTA_BOT_MODE_ROAM = 3; + DOTA_BOT_MODE_RETREAT = 4; + DOTA_BOT_MODE_SECRET_SHOP = 5; + DOTA_BOT_MODE_SIDE_SHOP = 6; + DOTA_BOT_MODE_RUNE = 7; + DOTA_BOT_MODE_PUSH_TOWER_TOP = 8; + DOTA_BOT_MODE_PUSH_TOWER_MID = 9; + DOTA_BOT_MODE_PUSH_TOWER_BOT = 10; + DOTA_BOT_MODE_DEFEND_TOWER_TOP = 11; + DOTA_BOT_MODE_DEFEND_TOWER_MID = 12; + DOTA_BOT_MODE_DEFEND_TOWER_BOT = 13; + DOTA_BOT_MODE_ASSEMBLE = 14; + DOTA_BOT_MODE_ASSEMBLE_WITH_HUMANS = 15; + DOTA_BOT_MODE_TEAM_ROAM = 16; + DOTA_BOT_MODE_FARM = 17; + DOTA_BOT_MODE_DEFEND_ALLY = 18; + DOTA_BOT_MODE_EVASIVE_MANEUVERS = 19; + DOTA_BOT_MODE_ROSHAN = 20; + DOTA_BOT_MODE_ITEM = 21; + DOTA_BOT_MODE_WARD = 22; + DOTA_BOT_MODE_COMPANION = 23; + DOTA_BOT_MODE_TUTORIAL_BOSS = 24; + DOTA_BOT_MODE_MINION = 25; + DOTA_BOT_MODE_OUTPOST = 26; + DOTA_BOT_MODE_BOT_CHALLENGE_ENDGAME = 27; +} + +enum MatchLanguages { + MATCH_LANGUAGE_INVALID = 0; + MATCH_LANGUAGE_ENGLISH = 1; + MATCH_LANGUAGE_RUSSIAN = 2; + MATCH_LANGUAGE_CHINESE = 3; + MATCH_LANGUAGE_KOREAN = 4; + MATCH_LANGUAGE_SPANISH = 5; + MATCH_LANGUAGE_PORTUGUESE = 6; + MATCH_LANGUAGE_ENGLISH2 = 7; +} + +enum ETourneyQueueDeadlineState { + k_ETourneyQueueDeadlineState_Normal = 0; + k_ETourneyQueueDeadlineState_Missed = 1; + k_ETourneyQueueDeadlineState_ExpiredOK = 2; + k_ETourneyQueueDeadlineState_SeekingBye = 3; + k_ETourneyQueueDeadlineState_EligibleForRefund = 4; + k_ETourneyQueueDeadlineState_NA = -1; + k_ETourneyQueueDeadlineState_ExpiringSoon = 101; +} + +enum EMatchOutcome { + k_EMatchOutcome_Unknown = 0; + k_EMatchOutcome_RadVictory = 2; + k_EMatchOutcome_DireVictory = 3; + k_EMatchOutcome_NeutralVictory = 4; + k_EMatchOutcome_NoTeamWinner = 5; + k_EMatchOutcome_Custom1Victory = 6; + k_EMatchOutcome_Custom2Victory = 7; + k_EMatchOutcome_Custom3Victory = 8; + k_EMatchOutcome_Custom4Victory = 9; + k_EMatchOutcome_Custom5Victory = 10; + k_EMatchOutcome_Custom6Victory = 11; + k_EMatchOutcome_Custom7Victory = 12; + k_EMatchOutcome_Custom8Victory = 13; + k_EMatchOutcome_NotScored_PoorNetworkConditions = 64; + k_EMatchOutcome_NotScored_Leaver = 65; + k_EMatchOutcome_NotScored_ServerCrash = 66; + k_EMatchOutcome_NotScored_NeverStarted = 67; + k_EMatchOutcome_NotScored_Canceled = 68; + k_EMatchOutcome_NotScored_Suspicious = 69; +} + +enum ELaneType { + LANE_TYPE_UNKNOWN = 0; + LANE_TYPE_SAFE = 1; + LANE_TYPE_OFF = 2; + LANE_TYPE_MID = 3; + LANE_TYPE_JUNGLE = 4; + LANE_TYPE_ROAM = 5; +} + +enum EBadgeType { + k_EBadgeType_Invalid = 0; + k_EBadgeType_TI7_Midweek = 1; + k_EBadgeType_TI7_Finals = 2; + k_EBadgeType_TI7_AllEvent = 3; + k_EBadgeType_TI8_Midweek = 4; + k_EBadgeType_TI8_Finals = 5; + k_EBadgeType_TI8_AllEvent = 6; + k_EBadgeType_TI10 = 7; + k_EBadgeType_TI11_PlayoffsDay1 = 8; + k_EBadgeType_TI11_PlayoffsDay2 = 9; + k_EBadgeType_TI11_PlayoffsDay3 = 10; + k_EBadgeType_TI11_PlayoffsDay4 = 11; + k_EBadgeType_TI11_FinalsWeekend = 12; + k_EBadgeType_TI12_PlayoffsDay1 = 13; + k_EBadgeType_TI12_PlayoffsDay2 = 14; + k_EBadgeType_TI12_PlayoffsDay3 = 15; + k_EBadgeType_TI12_FinalsWeekend = 16; + k_EBadgeType_TI12_Special = 17; + k_EBadgeType_TI13_FinalsDay1 = 18; + k_EBadgeType_TI13_FinalsDay2 = 19; + k_EBadgeType_TI13_FinalsDay3 = 20; + k_EBadgeType_TI13_Special = 21; + k_EBadgeType_TI14_FinalsDay1 = 22; + k_EBadgeType_TI14_FinalsDay2 = 23; + k_EBadgeType_TI14_FinalsDay3 = 24; + k_EBadgeType_TI14_FinalsDay4 = 25; + k_EBadgeType_TI14_Special = 26; +} + +enum ELeagueStatus { + LEAGUE_STATUS_UNSET = 0; + LEAGUE_STATUS_UNSUBMITTED = 1; + LEAGUE_STATUS_SUBMITTED = 2; + LEAGUE_STATUS_ACCEPTED = 3; + LEAGUE_STATUS_REJECTED = 4; + LEAGUE_STATUS_CONCLUDED = 5; + LEAGUE_STATUS_DELETED = 6; +} + +enum ELeagueRegion { + LEAGUE_REGION_UNSET = 0; + LEAGUE_REGION_NA = 1; + LEAGUE_REGION_SA = 2; + LEAGUE_REGION_WEU = 3; + LEAGUE_REGION_EEU = 4; + LEAGUE_REGION_CHINA = 5; + LEAGUE_REGION_SEA = 6; +} + +enum ELeagueTier { + LEAGUE_TIER_UNSET = 0; + LEAGUE_TIER_AMATEUR = 1; + LEAGUE_TIER_PROFESSIONAL = 2; + LEAGUE_TIER_MINOR = 3; + LEAGUE_TIER_MAJOR = 4; + LEAGUE_TIER_INTERNATIONAL = 5; + LEAGUE_TIER_DPC_QUALIFIER = 6; + LEAGUE_TIER_DPC_LEAGUE_QUALIFIER = 7; + LEAGUE_TIER_DPC_LEAGUE = 8; + LEAGUE_TIER_DPC_LEAGUE_FINALS = 9; +} + +enum ELeagueTierCategory { + LEAGUE_TIER_CATEGORY_AMATEUR = 1; + LEAGUE_TIER_CATEGORY_PROFESSIONAL = 2; + LEAGUE_TIER_CATEGORY_DPC = 3; +} + +enum ELeagueDivision { + LEAGUE_DIVISION_UNSET = 0; + LEAGUE_DIVISION_I = 1; + LEAGUE_DIVISION_II = 2; +} + +enum ELeagueBroadcastProvider { + LEAGUE_BROADCAST_UNKNOWN = 0; + LEAGUE_BROADCAST_STEAM = 1; + LEAGUE_BROADCAST_TWITCH = 2; + LEAGUE_BROADCAST_YOUTUBE = 3; + LEAGUE_BROADCAST_OTHER = 100; +} + +enum ELeaguePhase { + LEAGUE_PHASE_UNSET = 0; + LEAGUE_PHASE_REGIONAL_QUALIFIER = 1; + LEAGUE_PHASE_GROUP_STAGE = 2; + LEAGUE_PHASE_MAIN_EVENT = 3; +} + +enum ELeagueAuditAction { + LEAGUE_AUDIT_ACTION_INVALID = 0; + LEAGUE_AUDIT_ACTION_LEAGUE_CREATE = 1; + LEAGUE_AUDIT_ACTION_LEAGUE_EDIT = 2; + LEAGUE_AUDIT_ACTION_LEAGUE_DELETE = 3; + LEAGUE_AUDIT_ACTION_LEAGUE_ADMIN_ADD = 4; + LEAGUE_AUDIT_ACTION_LEAGUE_ADMIN_REVOKE = 5; + LEAGUE_AUDIT_ACTION_LEAGUE_ADMIN_PROMOTE = 6; + LEAGUE_AUDIT_ACTION_LEAGUE_STREAM_ADD = 7; + LEAGUE_AUDIT_ACTION_LEAGUE_STREAM_REMOVE = 8; + LEAGUE_AUDIT_ACTION_LEAGUE_IMAGE_UPDATED = 9; + LEAGUE_AUDIT_ACTION_LEAGUE_MESSAGE_ADDED = 10; + LEAGUE_AUDIT_ACTION_LEAGUE_SUBMITTED = 11; + LEAGUE_AUDIT_ACTION_LEAGUE_SET_PRIZE_POOL = 12; + LEAGUE_AUDIT_ACTION_LEAGUE_ADD_PRIZE_POOL_ITEM = 13; + LEAGUE_AUDIT_ACTION_LEAGUE_REMOVE_PRIZE_POOL_ITEM = 14; + LEAGUE_AUDIT_ACTION_LEAGUE_MATCH_START = 15; + LEAGUE_AUDIT_ACTION_LEAGUE_MATCH_END = 16; + LEAGUE_AUDIT_ACTION_LEAGUE_ADD_INVITED_TEAM = 17; + LEAGUE_AUDIT_ACTION_LEAGUE_REMOVE_INVITED_TEAM = 18; + LEAGUE_AUDIT_ACTION_LEAGUE_STATUS_CHANGED = 19; + LEAGUE_AUDIT_ACTION_LEAGUE_STREAM_EDIT = 20; + LEAGUE_AUDIT_ACTION_LEAGUE_TEAM_SWAP = 21; + LEAGUE_AUDIT_ACTION_NODEGROUP_CREATE = 100; + LEAGUE_AUDIT_ACTION_NODEGROUP_DESTROY = 101; + LEAGUE_AUDIT_ACTION_NODEGROUP_ADD_TEAM = 102; + LEAGUE_AUDIT_ACTION_NODEGROUP_REMOVE_TEAM = 103; + LEAGUE_AUDIT_ACTION_NODEGROUP_SET_ADVANCING = 104; + LEAGUE_AUDIT_ACTION_NODEGROUP_EDIT = 105; + LEAGUE_AUDIT_ACTION_NODEGROUP_POPULATE = 106; + LEAGUE_AUDIT_ACTION_NODEGROUP_COMPLETED = 107; + LEAGUE_AUDIT_ACTION_NODEGROUP_SET_SECONDARY_ADVANCING = 108; + LEAGUE_AUDIT_ACTION_NODEGROUP_SET_TERTIARY_ADVANCING = 109; + LEAGUE_AUDIT_ACTION_NODE_CREATE = 200; + LEAGUE_AUDIT_ACTION_NODE_DESTROY = 201; + LEAGUE_AUDIT_ACTION_NODE_AUTOCREATE = 202; + LEAGUE_AUDIT_ACTION_NODE_SET_TEAM = 203; + LEAGUE_AUDIT_ACTION_NODE_SET_SERIES_ID = 204; + LEAGUE_AUDIT_ACTION_NODE_SET_ADVANCING = 205; + LEAGUE_AUDIT_ACTION_NODE_SET_TIME = 206; + LEAGUE_AUDIT_ACTION_NODE_MATCH_COMPLETED = 207; + LEAGUE_AUDIT_ACTION_NODE_COMPLETED = 208; + LEAGUE_AUDIT_ACTION_NODE_EDIT = 209; +} + +enum DOTA_COMBATLOG_TYPES { + DOTA_COMBATLOG_INVALID = -1; + DOTA_COMBATLOG_DAMAGE = 0; + DOTA_COMBATLOG_HEAL = 1; + DOTA_COMBATLOG_MODIFIER_ADD = 2; + DOTA_COMBATLOG_MODIFIER_REMOVE = 3; + DOTA_COMBATLOG_DEATH = 4; + DOTA_COMBATLOG_ABILITY = 5; + DOTA_COMBATLOG_ITEM = 6; + DOTA_COMBATLOG_LOCATION = 7; + DOTA_COMBATLOG_GOLD = 8; + DOTA_COMBATLOG_GAME_STATE = 9; + DOTA_COMBATLOG_XP = 10; + DOTA_COMBATLOG_PURCHASE = 11; + DOTA_COMBATLOG_BUYBACK = 12; + DOTA_COMBATLOG_ABILITY_TRIGGER = 13; + DOTA_COMBATLOG_PLAYERSTATS = 14; + DOTA_COMBATLOG_MULTIKILL = 15; + DOTA_COMBATLOG_KILLSTREAK = 16; + DOTA_COMBATLOG_TEAM_BUILDING_KILL = 17; + DOTA_COMBATLOG_FIRST_BLOOD = 18; + DOTA_COMBATLOG_MODIFIER_STACK_EVENT = 19; + DOTA_COMBATLOG_NEUTRAL_CAMP_STACK = 20; + DOTA_COMBATLOG_PICKUP_RUNE = 21; + DOTA_COMBATLOG_REVEALED_INVISIBLE = 22; + DOTA_COMBATLOG_HERO_SAVED = 23; + DOTA_COMBATLOG_MANA_RESTORED = 24; + DOTA_COMBATLOG_HERO_LEVELUP = 25; + DOTA_COMBATLOG_BOTTLE_HEAL_ALLY = 26; + DOTA_COMBATLOG_ENDGAME_STATS = 27; + DOTA_COMBATLOG_INTERRUPT_CHANNEL = 28; + DOTA_COMBATLOG_ALLIED_GOLD = 29; + DOTA_COMBATLOG_AEGIS_TAKEN = 30; + DOTA_COMBATLOG_MANA_DAMAGE = 31; + DOTA_COMBATLOG_PHYSICAL_DAMAGE_PREVENTED = 32; + DOTA_COMBATLOG_UNIT_SUMMONED = 33; + DOTA_COMBATLOG_ATTACK_EVADE = 34; + DOTA_COMBATLOG_TREE_CUT = 35; + DOTA_COMBATLOG_SUCCESSFUL_SCAN = 36; + DOTA_COMBATLOG_END_KILLSTREAK = 37; + DOTA_COMBATLOG_BLOODSTONE_CHARGE = 38; + DOTA_COMBATLOG_CRITICAL_DAMAGE = 39; + DOTA_COMBATLOG_SPELL_ABSORB = 40; + DOTA_COMBATLOG_UNIT_TELEPORTED = 41; + DOTA_COMBATLOG_KILL_EATER_EVENT = 42; + DOTA_COMBATLOG_NEUTRAL_ITEM_EARNED = 43; + DOTA_COMBATLOG_STAT_TRACKER_PLAYER = 44; +} + +enum EDPCFavoriteType { + FAVORITE_TYPE_ALL = 0; + FAVORITE_TYPE_PLAYER = 1; + FAVORITE_TYPE_TEAM = 2; + FAVORITE_TYPE_LEAGUE = 3; +} + +enum EDPCPushNotification { + DPC_PUSH_NOTIFICATION_MATCH_STARTING = 1; + DPC_PUSH_NOTIFICATION_PLAYER_LEFT_TEAM = 10; + DPC_PUSH_NOTIFICATION_PLAYER_JOINED_TEAM = 11; + DPC_PUSH_NOTIFICATION_PLAYER_JOINED_TEAM_AS_COACH = 12; + DPC_PUSH_NOTIFICATION_PLAYER_LEFT_TEAM_AS_COACH = 13; + DPC_PUSH_NOTIFICATION_LEAGUE_RESULT = 20; + DPC_PUSH_NOTIFICATION_PREDICTION_MATCHES_AVAILABLE = 30; + DPC_PUSH_NOTIFICATION_PREDICTION_RESULT = 31; + DPC_PUSH_NOTIFICATION_FANTASY_PLAYER_CLEARED = 40; + DPC_PUSH_NOTIFICATION_FANTASY_DAILY_SUMMARY = 41; + DPC_PUSH_NOTIFICATION_FANTASY_FINAL_RESULTS = 42; +} + +enum EEventActionScoreMode { + k_eEventActionScoreMode_Add = 0; + k_eEventActionScoreMode_Min = 1; +} + +enum EPlayerChallengeHistoryType { + k_EPlayerChallengeHistoryType_Invalid = 0; + k_EPlayerChallengeHistoryType_KillEater = 1; + k_EPlayerChallengeHistoryType_DotaPlusRelic = 2; + k_EPlayerChallengeHistoryType_DotaPlusHeroPlayerChallenge = 3; + k_EPlayerChallengeHistoryType_InGameEventChallenge = 4; + k_EPlayerChallengeHistoryType_GuildContract = 5; +} + +enum EOverwatchReportReason { + k_EOverwatchReportReason_Unknown = 0; + k_EOverwatchReportReason_Cheating = 1; + k_EOverwatchReportReason_Feeding = 2; + k_EOverwatchReportReason_Griefing = 3; + k_EOverwatchReportReason_Suspicious = 4; + k_EOverwatchReportReason_AbilityAbuse = 5; +} + +enum ECandyShopUpgrade { + k_ECandyShopUpgradeInvalid = -1; + k_ECandyShopUpgrade_InventorySize = 0; + k_ECandyShopUpgrade_RewardShelf = 1; + k_ECandyShopUpgrade_ExtraExchangeRecipe = 2; +} + +enum EItemSuggestPreference { + k_EItemSuggestPreference_None = 0; + k_EItemSuggestPreference_Liked = 1; + k_EItemSuggestPreference_Disliked = 2; +} + +enum ETimerAlertType { + k_TimerAlertType_PowerRune = 1; + k_TimerAlertType_BountyRune = 2; + k_TimerAlertType_WisdomShrine = 3; + k_TimerAlertType_JungleCamps = 4; + k_TimerAlertType_LotusPool = 5; +} + +message CDOTAClientHardwareSpecs { + optional uint32 logical_processors = 1; + optional fixed64 cpu_cycles_per_second = 2; + optional fixed64 total_physical_memory = 3; + optional bool is_64_bit_os = 4; + optional uint64 upload_measurement = 5; + optional bool prefer_not_host = 6; + repeated uint32 crc = 7; +} + +message CDOTASaveGame { + message Player { + optional .DOTA_GC_TEAM team = 1 [default = DOTA_GC_TEAM_GOOD_GUYS]; + optional string name = 2; + optional string hero = 3; + } + + message SaveInstance { + message PlayerPositions { + optional float x = 1; + optional float y = 2; + } + + optional uint32 game_time = 2; + optional uint32 team1_score = 3; + optional uint32 team2_score = 4; + repeated .CDOTASaveGame.SaveInstance.PlayerPositions player_positions = 5; + optional uint32 save_id = 6; + optional uint32 save_time = 7; + } + + optional uint64 match_id = 5; + optional uint32 save_time = 2; + repeated .CDOTASaveGame.Player players = 3; + repeated .CDOTASaveGame.SaveInstance save_instances = 4; +} + +message CMsgDOTACombatLogEntry { + optional .DOTA_COMBATLOG_TYPES type = 1 [default = DOTA_COMBATLOG_INVALID]; + optional uint32 target_name = 2; + optional uint32 target_source_name = 3; + optional uint32 attacker_name = 4; + optional uint32 damage_source_name = 5; + optional uint32 inflictor_name = 6; + optional bool is_attacker_illusion = 7; + optional bool is_attacker_hero = 8; + optional bool is_target_illusion = 9; + optional bool is_target_hero = 10; + optional bool is_visible_radiant = 11; + optional bool is_visible_dire = 12; + optional uint32 value = 13; + optional int32 health = 14; + optional float timestamp = 15; + optional float stun_duration = 16; + optional float slow_duration = 17; + optional bool is_ability_toggle_on = 18; + optional bool is_ability_toggle_off = 19; + optional uint32 ability_level = 20; + optional float location_x = 21; + optional float location_y = 22; + optional uint32 gold_reason = 23; + optional float timestamp_raw = 24; + optional float modifier_duration = 25; + optional uint32 xp_reason = 26; + optional uint32 last_hits = 27; + optional uint32 attacker_team = 28; + optional uint32 target_team = 29; + optional uint32 obs_wards_placed = 30; + optional uint32 assist_player0 = 31; + optional uint32 assist_player1 = 32; + optional uint32 assist_player2 = 33; + optional uint32 assist_player3 = 34; + optional uint32 stack_count = 35; + optional bool hidden_modifier = 36; + optional bool is_target_building = 37; + optional uint32 neutral_camp_type = 38; + optional uint32 rune_type = 39; + repeated int32 assist_players = 40; + optional bool is_heal_save = 41; + optional bool is_ultimate_ability = 42; + optional uint32 attacker_hero_level = 43; + optional uint32 target_hero_level = 44; + optional uint32 xpm = 45; + optional uint32 gpm = 46; + optional uint32 event_location = 47; + optional bool target_is_self = 48; + optional uint32 damage_type = 49; + optional bool invisibility_modifier = 50; + optional uint32 damage_category = 51; + optional uint32 networth = 52; + optional uint32 building_type = 53; + optional float modifier_elapsed_duration = 54; + optional bool silence_modifier = 55; + optional bool heal_from_lifesteal = 56; + optional bool modifier_purged = 57; + optional bool spell_evaded = 58; + optional bool motion_controller_modifier = 59; + optional bool long_range_kill = 60; + optional uint32 modifier_purge_ability = 61; + optional uint32 modifier_purge_npc = 62; + optional bool root_modifier = 63; + optional uint32 total_unit_death_count = 64; + optional bool aura_modifier = 65; + optional bool armor_debuff_modifier = 66; + optional bool no_physical_damage_modifier = 67; + optional uint32 modifier_ability = 68; + optional bool modifier_hidden = 69; + optional bool inflictor_is_stolen_ability = 70; + optional uint32 kill_eater_event = 71; + optional uint32 unit_status_label = 72; + optional bool spell_generated_attack = 73; + optional bool at_night_time = 74; + optional bool attacker_has_scepter = 75; + optional uint32 neutral_camp_team = 76; + optional float regenerated_health = 77; + optional bool will_reincarnate = 78; + optional bool uses_charges = 79; + optional uint32 tracked_stat_id = 80; +} + +message CMsgPendingEventAward { + optional .EEvent event_id = 1 [default = EVENT_ID_NONE]; + optional uint32 action_id = 2; + optional uint32 num_to_grant = 3; + optional .EEventActionScoreMode score_mode = 4 [default = k_eEventActionScoreMode_Add]; + optional uint32 audit_action = 5; + optional uint64 audit_data = 6; +} + +message CMsgMonsterHunterMaterialQuantity { + message MaterialCountsEntry { + optional uint32 key = 1; + optional int32 value = 2; + } + + repeated .CMsgMonsterHunterMaterialQuantity.MaterialCountsEntry material_counts = 1; +} + +message CMsgMonsterHunterInvestigation { + optional int32 hero_id = 1; + optional int32 persona_id = 2; + optional .CMsgMonsterHunterMaterialQuantity match_rewards = 3; + optional .CMsgMonsterHunterMaterialQuantity hunt_rewards = 4; + optional bool success_state = 5; +} + +message CMsgMonsterHunterInvestigationGameState { + message HuntedBy { + optional int32 hero_id = 1; + optional int32 persona_id = 2; + optional .CMsgMonsterHunterMaterialQuantity hunt_rewards = 3; + optional bool success_state = 4; + } + + optional .CMsgMonsterHunterInvestigation selected_investigation = 1; + repeated .CMsgMonsterHunterInvestigationGameState.HuntedBy hunted_by = 2; +} + +message CMsgMonsterHunterCodexUpdateData { + message KillInfo { + optional int32 hero_id = 1; + optional int32 kill_count = 2; + } + + optional int32 player_hero = 1; + repeated int32 allies = 2; + repeated int32 enemies = 3; + repeated .CMsgMonsterHunterCodexUpdateData.KillInfo player_kills = 4; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/econ_gcmessages.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/econ_gcmessages.proto new file mode 100644 index 00000000..2c9f18cd --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/econ_gcmessages.proto @@ -0,0 +1,1089 @@ +import "in/dragonbra/javasteam/protobufs/dota2/steammessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/econ_shared_enums.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/gcsdk_gcmessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/base_gcmessages.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum EGCItemMsg { + k_EMsgGCBase = 1000; + k_EMsgGCSetItemPosition = 1001; + k_EMsgClientToGCPackBundle = 1002; + k_EMsgClientToGCPackBundleResponse = 1003; + k_EMsgGCDelete = 1004; + k_EMsgGCVerifyCacheSubscription = 1005; + k_EMsgClientToGCNameItem = 1006; + k_EMsgGCPaintItem = 1009; + k_EMsgGCPaintItemResponse = 1010; + k_EMsgGCNameBaseItem = 1019; + k_EMsgGCNameBaseItemResponse = 1020; + k_EMsgGCUseItemRequest = 1025; + k_EMsgGCUseItemResponse = 1026; + k_EMsgGCGiftedItems = 1027; + k_EMsgGCUnwrapGiftRequest = 1037; + k_EMsgGCUnwrapGiftResponse = 1038; + k_EMsgGCSortItems = 1041; + k_EMsgGCBackpackSortFinished = 1058; + k_EMsgGCAdjustItemEquippedState = 1059; + k_EMsgGCItemAcknowledged = 1062; + k_EMsgClientToGCNameItemResponse = 1068; + k_EMsgGCApplyStrangePart = 1073; + k_EMsgGCApplyPennantUpgrade = 1076; + k_EMsgGCSetItemPositions = 1077; + k_EMsgGCApplyEggEssence = 1078; + k_EMsgGCNameEggEssenceResponse = 1079; + k_EMsgGCExtractGems = 1086; + k_EMsgGCAddSocket = 1087; + k_EMsgGCAddItemToSocket = 1088; + k_EMsgGCAddItemToSocketResponse = 1089; + k_EMsgGCAddSocketResponse = 1090; + k_EMsgGCResetStrangeGemCount = 1091; + k_EMsgGCRequestCrateItems = 1092; + k_EMsgGCRequestCrateItemsResponse = 1093; + k_EMsgGCExtractGemsResponse = 1094; + k_EMsgGCResetStrangeGemCountResponse = 1095; + k_EMsgGCServerUseItemRequest = 1103; + k_EMsgGCAddGiftItem = 1104; + k_EMsgSQLGCToGCRevokeUntrustedGift = 1105; + k_EMsgClientToGCRemoveItemGifterAttributes = 1109; + k_EMsgClientToGCRemoveItemName = 1110; + k_EMsgClientToGCRemoveItemDescription = 1111; + k_EMsgClientToGCRemoveItemAttributeResponse = 1112; + k_EMsgGCDev_NewItemRequest = 2001; + k_EMsgGCDev_NewItemRequestResponse = 2002; + k_EMsgGCDev_UnlockAllItemStylesRequest = 2003; + k_EMsgGCDev_UnlockAllItemStylesResponse = 2004; + k_EMsgGCStorePurchaseFinalize = 2504; + k_EMsgGCStorePurchaseFinalizeResponse = 2505; + k_EMsgGCStorePurchaseCancel = 2506; + k_EMsgGCStorePurchaseCancelResponse = 2507; + k_EMsgGCStorePurchaseInit = 2510; + k_EMsgGCStorePurchaseInitResponse = 2511; + k_EMsgGCToGCBannedWordListUpdated = 2515; + k_EMsgGCToGCDirtySDOCache = 2516; + k_EMsgGCToGCUpdateSQLKeyValue = 2518; + k_EMsgGCToGCBroadcastConsoleCommand = 2521; + k_EMsgGCServerVersionUpdated = 2522; + k_EMsgGCApplyAutograph = 2523; + k_EMsgGCToGCWebAPIAccountChanged = 2524; + k_EMsgGCClientVersionUpdated = 2528; + k_EMsgGCToGCUpdateWelcomeMsg = 2529; + k_EMsgGCToGCPlayerStrangeCountAdjustments = 2535; + k_EMsgGCRequestStoreSalesData = 2536; + k_EMsgGCRequestStoreSalesDataResponse = 2537; + k_EMsgGCRequestStoreSalesDataUpToDateResponse = 2538; + k_EMsgGCToGCPingRequest = 2539; + k_EMsgGCToGCPingResponse = 2540; + k_EMsgGCToGCGetUserSessionServer = 2541; + k_EMsgGCToGCGetUserSessionServerResponse = 2542; + k_EMsgGCToGCGetUserServerMembers = 2543; + k_EMsgGCToGCGetUserServerMembersResponse = 2544; + k_EMsgGCToGCCanUseDropRateBonus = 2547; + k_EMsgSQLAddDropRateBonus = 2548; + k_EMsgGCToGCRefreshSOCache = 2549; + k_EMsgGCToGCGrantAccountRolledItems = 2554; + k_EMsgGCToGCGrantSelfMadeItemToAccount = 2555; + k_EMsgGCToGCUnlockCrate = 2556; + k_EMsgGCStatueCraft = 2561; + k_EMsgGCRedeemCode = 2562; + k_EMsgGCRedeemCodeResponse = 2563; + k_EMsgGCToGCItemConsumptionRollback = 2564; + k_EMsgClientToGCWrapAndDeliverGift = 2565; + k_EMsgClientToGCWrapAndDeliverGiftResponse = 2566; + k_EMsgClientToGCUnpackBundleResponse = 2567; + k_EMsgGCToClientStoreTransactionCompleted = 2568; + k_EMsgClientToGCEquipItems = 2569; + k_EMsgClientToGCEquipItemsResponse = 2570; + k_EMsgClientToGCUnlockItemStyle = 2571; + k_EMsgClientToGCUnlockItemStyleResponse = 2572; + k_EMsgClientToGCSetItemInventoryCategory = 2573; + k_EMsgClientToGCUnlockCrate = 2574; + k_EMsgClientToGCUnlockCrateResponse = 2575; + k_EMsgClientToGCUnpackBundle = 2576; + k_EMsgClientToGCSetItemStyle = 2577; + k_EMsgClientToGCSetItemStyleResponse = 2578; + k_EMsgSQLGCToGCGrantBackpackSlots = 2580; + k_EMsgClientToGCLookupAccountName = 2581; + k_EMsgClientToGCLookupAccountNameResponse = 2582; + k_EMsgClientToGCCreateStaticRecipe = 2584; + k_EMsgClientToGCCreateStaticRecipeResponse = 2585; + k_EMsgGCToGCStoreProcessCDKeyTransaction = 2586; + k_EMsgGCToGCStoreProcessCDKeyTransactionResponse = 2587; + k_EMsgGCToGCStoreProcessSettlement = 2588; + k_EMsgGCToGCStoreProcessSettlementResponse = 2589; + k_EMsgGCToGCConsoleOutput = 2590; + k_EMsgGCToClientItemAges = 2591; + k_EMsgGCToGCInternalTestMsg = 2592; + k_EMsgGCToGCClientServerVersionsUpdated = 2593; + k_EMsgGCUseMultipleItemsRequest = 2594; + k_EMsgGCGetAccountSubscriptionItem = 2595; + k_EMsgGCGetAccountSubscriptionItemResponse = 2596; + k_EMsgGCToGCBroadcastMessageFromSub = 2598; + k_EMsgGCToClientCurrencyPricePoints = 2599; + k_EMsgGCToGCAddSubscriptionTime = 2600; + k_EMsgGCToGCFlushSteamInventoryCache = 2601; + k_EMsgGCRequestCrateEscalationLevel = 2602; + k_EMsgGCRequestCrateEscalationLevelResponse = 2603; + k_EMsgGCToGCUpdateSubscriptionItems = 2604; + k_EMsgGCToGCSelfPing = 2605; + k_EMsgGCToGCGetInfuxIntervalStats = 2606; + k_EMsgGCToGCGetInfuxIntervalStatsResponse = 2607; + k_EMsgGCToGCPurchaseSucceeded = 2608; + k_EMsgClientToGCGetLimitedItemPurchaseQuantity = 2609; + k_EMsgClientToGCGetLimitedItemPurchaseQuantityResponse = 2610; + k_EMsgGCToGCBetaDeleteItems = 2611; + k_EMsgClientToGCGetInFlightItemCharges = 2612; + k_EMsgClientToGCGetInFlightItemChargesResponse = 2613; + k_EMsgGCToClientInFlightChargesUpdated = 2614; + k_EMsgClientToGCPurchaseChargeCostItems = 2615; + k_EMsgClientToGCPurchaseChargeCostItemsResponse = 2616; + k_EMsgClientToGCCancelUnfinalizedTransactions = 2617; + k_EMsgClientToGCCancelUnfinalizedTransactionsResponse = 2618; +} + +enum EGCMsgInitiateTradeResponse { + k_EGCMsgInitiateTradeResponse_Accepted = 0; + k_EGCMsgInitiateTradeResponse_Declined = 1; + k_EGCMsgInitiateTradeResponse_VAC_Banned_Initiator = 2; + k_EGCMsgInitiateTradeResponse_VAC_Banned_Target = 3; + k_EGCMsgInitiateTradeResponse_Target_Already_Trading = 4; + k_EGCMsgInitiateTradeResponse_Disabled = 5; + k_EGCMsgInitiateTradeResponse_NotLoggedIn = 6; + k_EGCMsgInitiateTradeResponse_Cancel = 7; + k_EGCMsgInitiateTradeResponse_TooSoon = 8; + k_EGCMsgInitiateTradeResponse_TooSoonPenalty = 9; + k_EGCMsgInitiateTradeResponse_Trade_Banned_Initiator = 10; + k_EGCMsgInitiateTradeResponse_Trade_Banned_Target = 11; + k_EGCMsgInitiateTradeResponse_Free_Account_Initiator_DEPRECATED = 12; + k_EGCMsgInitiateTradeResponse_Shared_Account_Initiator = 13; + k_EGCMsgInitiateTradeResponse_Service_Unavailable = 14; + k_EGCMsgInitiateTradeResponse_Target_Blocked = 15; + k_EGCMsgInitiateTradeResponse_NeedVerifiedEmail = 16; + k_EGCMsgInitiateTradeResponse_NeedSteamGuard = 17; + k_EGCMsgInitiateTradeResponse_SteamGuardDuration = 18; + k_EGCMsgInitiateTradeResponse_TheyCannotTrade = 19; + k_EGCMsgInitiateTradeResponse_Recent_Password_Reset = 20; + k_EGCMsgInitiateTradeResponse_Using_New_Device = 21; + k_EGCMsgInitiateTradeResponse_Sent_Invalid_Cookie = 22; + k_EGCMsgInitiateTradeResponse_TooRecentFriend = 23; + k_EGCMsgInitiateTradeResponse_WalledFundsNotTrusted = 24; +} + +message CMsgApplyAutograph { + optional uint64 autograph_item_id = 1; + optional uint64 item_item_id = 2; +} + +message CMsgAdjustItemEquippedState { + optional uint64 item_id = 1; + optional uint32 new_class = 2; + optional uint32 new_slot = 3; + optional uint32 style_index = 4 [default = 255]; +} + +message CMsgEconPlayerStrangeCountAdjustment { + message CStrangeCountAdjustment { + optional uint32 event_type = 1; + optional uint64 item_id = 2; + optional uint32 adjustment = 3; + } + + optional uint32 account_id = 1; + repeated .CMsgEconPlayerStrangeCountAdjustment.CStrangeCountAdjustment strange_count_adjustments = 2; + optional bool turbo_mode = 3; +} + +message CMsgCraftingResponse { + repeated uint64 item_ids = 1; +} + +message CMsgGCRequestStoreSalesData { + optional uint32 version = 1; + optional uint32 currency = 2; +} + +message CMsgGCRequestStoreSalesDataResponse { + message Price { + optional uint32 item_def = 1; + optional uint32 price = 2; + } + + repeated .CMsgGCRequestStoreSalesDataResponse.Price sale_price = 1; + optional uint32 version = 2; + optional uint32 expiration_time = 3; +} + +message CMsgGCRequestStoreSalesDataUpToDateResponse { + optional uint32 version = 1; + optional uint32 expiration_time = 2; +} + +message CMsgGCToGCPingRequest { +} + +message CMsgGCToGCPingResponse { +} + +message CMsgGCToGCGetUserSessionServer { + optional uint32 account_id = 1; +} + +message CMsgGCToGCGetUserSessionServerResponse { + optional fixed64 server_steam_id = 1; + optional bool is_online = 2; +} + +message CMsgGCToGCGetUserServerMembers { + optional uint32 account_id = 1; + optional uint32 max_spectators = 2; +} + +message CMsgGCToGCGetUserServerMembersResponse { + repeated uint32 member_account_id = 1; +} + +message CMsgLookupMultipleAccountNames { + repeated uint32 accountids = 1 [packed = true]; +} + +message CMsgLookupMultipleAccountNamesResponse { + message Account { + optional uint32 accountid = 1; + optional string persona = 2; + } + + repeated .CMsgLookupMultipleAccountNamesResponse.Account accounts = 1; +} + +message CMsgRequestCrateItems { + optional uint32 crate_item_def = 1; +} + +message CMsgRequestCrateItemsResponse { + enum EResult { + k_Succeeded = 0; + k_Failed = 1; + } + + optional uint32 response = 1; + repeated uint32 item_defs = 2; + repeated uint32 peek_item_defs = 3; + repeated .CSOEconItem peek_items = 4; +} + +message CMsgRequestCrateEscalationLevel { + optional uint32 crate_item_def = 1; +} + +message CMsgRequestCrateEscalationLevelResponse { + enum EResult { + k_Succeeded = 0; + k_Failed = 1; + } + + optional uint32 response = 1; + optional uint32 escalation_level0 = 2; + optional uint32 escalation_level1 = 3; + optional uint32 escalation_level2 = 4; + optional uint32 escalation_level3 = 5; +} + +message CMsgGCToGCCanUseDropRateBonus { + optional uint32 account_id = 1; + optional float drop_rate_bonus = 2; + optional uint32 booster_type = 3; + optional uint32 exclusive_item_def = 4; + optional bool allow_equal_rate = 5; +} + +message CMsgSQLAddDropRateBonus { + optional uint32 account_id = 1; + optional uint64 item_id = 2; + optional uint32 item_def = 3; + optional float drop_rate_bonus = 4; + optional uint32 booster_type = 5; + optional uint32 seconds_duration = 6; + optional uint32 end_time_stamp = 7; +} + +message CMsgSQLUpgradeBattleBooster { + optional uint32 account_id = 1; + optional uint32 item_def = 2; + optional float bonus_to_add = 3; + optional uint32 booster_type = 4; +} + +message CMsgGCToGCRefreshSOCache { + optional uint32 account_id = 1; + optional bool reload = 2; +} + +message CMsgGCToGCAddSubscriptionTime { + optional uint32 account_id = 1; + repeated uint32 matching_subscription_def_indexes = 2; + optional uint32 additional_seconds = 3; +} + +message CMsgGCToGCGrantAccountRolledItems { + message Item { + message DynamicAttribute { + optional string name = 1; + optional uint32 value_uint32 = 2; + optional float value_float = 3; + optional string value_string = 4; + } + + message AdditionalAuditEntry { + optional uint32 owner_account_id = 1; + optional uint32 audit_action = 2; + optional uint64 audit_data = 3; + } + + optional uint32 item_def = 1; + repeated string loot_lists = 2; + optional bool ignore_limit = 3; + optional uint32 origin = 4; + repeated .CMsgGCToGCGrantAccountRolledItems.Item.DynamicAttribute dynamic_attributes = 5; + repeated .CMsgGCToGCGrantAccountRolledItems.Item.AdditionalAuditEntry additional_audit_entries = 6; + optional uint32 inventory_token = 7; + optional int32 quality = 8 [default = -1]; + } + + optional uint32 account_id = 1; + repeated .CMsgGCToGCGrantAccountRolledItems.Item items = 2; + optional uint32 audit_action = 3; + optional uint64 audit_data = 4; +} + +message CMsgGCToGCBetaDeleteItems { + optional uint32 account_id = 1; + repeated uint64 item_ids = 2; + repeated uint32 item_defs = 3; +} + +message CMsgGCToGCGrantSelfMadeItemToAccount { + optional uint32 item_def_index = 1; + optional uint32 accountid = 2; +} + +message CMsgGCToGCUnlockCrate { + optional uint32 account_id = 1; + optional uint64 crate_item_id = 2; + optional uint64 key_item_id = 3; +} + +message CMsgUseItem { + optional uint64 item_id = 1; + optional fixed64 target_steam_id = 2; + repeated uint32 gift__potential_targets = 3; + optional uint32 duel__class_lock = 4; + optional uint64 initiator_steam_id = 5; + optional bool itempack__ack_immediately = 6; +} + +message CMsgServerUseItem { + optional uint32 initiator_account_id = 1; + optional .CMsgUseItem use_item_msg = 2; +} + +message CMsgUseMultipleItems { + repeated uint64 item_ids = 1; +} + +message CGCStoreRechargeRedirect_LineItem { + optional uint32 item_def_id = 1; + optional uint32 quantity = 2; +} + +message CMsgGCEconSQLWorkItemEmbeddedRollbackData { + optional uint32 account_id = 1; + optional uint64 deleted_item_id = 2; + optional uint32 old_audit_action = 3; + optional uint32 new_audit_action = 4; + optional uint32 expected_audit_action = 5; +} + +message CMsgCraftStatue { + optional uint32 heroid = 1; + optional string sequencename = 2; + optional float cycle = 3; + optional string description = 4; + optional uint32 pedestal_itemdef = 5; + optional uint64 toolid = 6; +} + +message CMsgRedeemCode { + optional string code = 1; +} + +message CMsgRedeemCodeResponse { + enum EResultCode { + k_Succeeded = 0; + k_Failed_CodeNotFound = 1; + k_Failed_CodeAlreadyUsed = 2; + k_Failed_OtherError = 3; + } + + optional uint32 response = 1; + optional uint64 item_id = 2; +} + +message CMsgDevNewItemRequest { + optional string item_def_name = 3; + optional string loot_list_name = 4; + repeated string attr_def_name = 5; + repeated string attr_value = 6; + optional uint32 item_quality = 7; +} + +message CMsgDevNewItemRequestResponse { + optional bool success = 1; +} + +message CMsgDevUnlockAllItemStyles { + optional uint64 item_id = 1; +} + +message CMsgDevUnlockAllItemStylesResponse { + optional bool success = 1; +} + +message CMsgGCGetAccountSubscriptionItem { + optional uint32 account_id = 1; +} + +message CMsgGCGetAccountSubscriptionItemResponse { + optional uint32 def_index = 1; +} + +message CMsgGCAddGiftItem { + optional uint32 gifter_account_id = 1; + optional uint32 receiver_account_id = 2; + optional .CSOEconItem wrapped_item = 3; + optional string gift_message = 4; + optional bool is_wallet_cash_trusted = 5; +} + +message CMsgClientToGCWrapAndDeliverGift { + optional uint64 item_id = 1; + optional uint32 give_to_account_id = 2; + optional string gift_message = 3; +} + +message CMsgSQLGCToGCRevokeUntrustedGift { + optional uint32 account_id = 1; + optional uint64 sent_item_id = 4; +} + +message CMsgClientToGCWrapAndDeliverGiftResponse { + optional .EGCMsgResponse response = 1 [default = k_EGCMsgResponseOK]; + optional uint32 gifting_charge_uses = 2; + optional int32 gifting_charge_max = 3; + optional uint32 gifting_uses = 4; + optional int32 gifting_max = 5; + optional uint32 gifting_window_hours = 6; + optional .EGCMsgInitiateTradeResponse trade_restriction = 7 [default = k_EGCMsgInitiateTradeResponse_Accepted]; +} + +message CMsgClientToGCUnwrapGift { + optional uint64 item_id = 1; +} + +message CMsgClientToGCGetGiftPermissions { +} + +message CMsgClientToGCGetGiftPermissionsResponse { + message FriendPermission { + optional uint32 account_id = 1; + optional .EGCMsgInitiateTradeResponse permission = 2 [default = k_EGCMsgInitiateTradeResponse_Accepted]; + } + + optional bool is_unlimited = 1; + optional bool has_two_factor = 3; + optional .EGCMsgInitiateTradeResponse sender_permission = 6 [default = k_EGCMsgInitiateTradeResponse_Accepted]; + optional uint32 friendship_age_requirement = 7; + optional uint32 friendship_age_requirement_two_factor = 8; + repeated .CMsgClientToGCGetGiftPermissionsResponse.FriendPermission friend_permissions = 9; +} + +message CMsgClientToGCUnpackBundle { + optional uint64 item_id = 1; +} + +message CMsgClientToGCUnpackBundleResponse { + enum EUnpackBundle { + k_UnpackBundle_Succeeded = 0; + k_UnpackBundle_Failed_ItemIsNotBundle = 1; + k_UnpackBundle_Failed_UnableToCreateContainedItem = 2; + k_UnpackBundle_Failed_SOCacheError = 3; + k_UnpackBundle_Failed_ItemIsInvalid = 4; + k_UnpackBundle_Failed_BadItemQuantity = 5; + k_UnpackBundle_Failed_UnableToDeleteItem = 6; + } + + repeated uint64 unpacked_item_ids = 1; + optional .CMsgClientToGCUnpackBundleResponse.EUnpackBundle response = 2 [default = k_UnpackBundle_Succeeded]; + repeated uint32 unpacked_item_def_indexes = 3; +} + +message CMsgClientToGCPackBundle { + repeated uint64 item_ids = 1; + optional uint32 bundle_item_def_index = 2; +} + +message CMsgClientToGCPackBundleResponse { + enum EPackBundle { + k_PackBundle_Succeeded = 0; + k_PackBundle_Failed_InternalError = 1; + k_PackBundle_Failed_ItemIsNotBundle = 2; + k_PackBundle_Failed_SOCacheError = 3; + k_PackBundle_Failed_ItemIsInvalid = 4; + k_PackBundle_Failed_BadItemQuantity = 5; + k_PackBundle_Failed_UnableToDeleteItem = 6; + k_PackBundle_Failed_BundleCannotBePacked = 7; + k_PackBundle_Failed_ItemIsUntradeable = 8; + k_PackBundle_Failed_ItemIsEquipped = 9; + k_PackBundle_Failed_ItemHasGems = 10; + k_PackBundle_Failed_ItemMixedQuality = 11; + k_PackBundle_Failed_ItemInvalidQuality = 12; + k_PackBundle_Failed_ItemIsNonEconomy = 13; + k_PackBundle_Failed_Disabled = 14; + } + + optional uint64 item_id = 1; + optional .CMsgClientToGCPackBundleResponse.EPackBundle response = 2 [default = k_PackBundle_Succeeded]; +} + +message CMsgGCToClientStoreTransactionCompleted { + optional uint64 txn_id = 1; + repeated uint64 item_ids = 2; +} + +message CMsgClientToGCEquipItems { + repeated .CMsgAdjustItemEquippedState equips = 1; +} + +message CMsgClientToGCEquipItemsResponse { + optional fixed64 so_cache_version_id = 1; +} + +message CMsgClientToGCSetItemStyle { + optional uint64 item_id = 1; + optional uint32 style_index = 2 [default = 255]; +} + +message CMsgClientToGCSetItemStyleResponse { + enum ESetStyle { + k_SetStyle_Succeeded = 0; + k_SetStyle_Failed = 1; + k_SetStyle_Failed_StyleIsLocked = 2; + } + + optional .CMsgClientToGCSetItemStyleResponse.ESetStyle response = 1 [default = k_SetStyle_Succeeded]; +} + +message CMsgClientToGCUnlockItemStyle { + optional uint64 item_to_unlock = 1; + optional uint32 style_index = 2 [default = 255]; + repeated uint64 consumable_item_ids = 3; +} + +message CMsgClientToGCUnlockItemStyleResponse { + enum EUnlockStyle { + k_UnlockStyle_Succeeded = 0; + k_UnlockStyle_Failed_PreReq = 1; + k_UnlockStyle_Failed_CantAfford = 2; + k_UnlockStyle_Failed_CantCommit = 3; + k_UnlockStyle_Failed_CantLockCache = 4; + k_UnlockStyle_Failed_CantAffordAttrib = 5; + k_UnlockStyle_Failed_CantAffordGem = 6; + k_UnlockStyle_Failed_NoCompendiumLevel = 7; + k_UnlockStyle_Failed_AlreadyUnlocked = 8; + k_UnlockStyle_Failed_OtherError = 9; + k_UnlockStyle_Failed_ItemIsInvalid = 10; + k_UnlockStyle_Failed_ToolIsInvalid = 11; + } + + optional .CMsgClientToGCUnlockItemStyleResponse.EUnlockStyle response = 1 [default = k_UnlockStyle_Succeeded]; + optional uint64 item_id = 2; + optional uint32 style_index = 3 [default = 255]; + optional uint32 style_prereq = 4 [default = 255]; +} + +message CMsgClientToGCSetItemInventoryCategory { + repeated uint64 item_ids = 1; + optional uint32 set_to_value = 2; + optional uint32 remove_categories = 3; + optional uint32 add_categories = 4; +} + +message CMsgClientToGCUnlockCrate { + optional uint64 crate_item_id = 1; + optional uint64 key_item_id = 2; +} + +message CMsgClientToGCUnlockCrateResponse { + message Item { + optional uint64 item_id = 1; + optional uint32 def_index = 2; + } + + optional .EGCMsgResponse result = 1 [default = k_EGCMsgResponseOK]; + repeated .CMsgClientToGCUnlockCrateResponse.Item granted_items = 2; +} + +message CMsgClientToGCRemoveItemAttribute { + optional uint64 item_id = 1; +} + +message CMsgClientToGCRemoveItemAttributeResponse { + enum ERemoveItemAttribute { + k_RemoveItemAttribute_Succeeded = 0; + k_RemoveItemAttribute_Failed = 1; + k_RemoveItemAttribute_Failed_ItemIsInvalid = 2; + k_RemoveItemAttribute_Failed_AttributeCannotBeRemoved = 3; + k_RemoveItemAttribute_Failed_AttributeDoesntExist = 4; + } + + optional .CMsgClientToGCRemoveItemAttributeResponse.ERemoveItemAttribute response = 1 [default = k_RemoveItemAttribute_Succeeded]; + optional uint64 item_id = 2; +} + +message CMsgClientToGCNameItem { + optional uint64 subject_item_id = 1; + optional uint64 tool_item_id = 2; + optional string name = 3; +} + +message CMsgClientToGCNameItemResponse { + enum ENameItem { + k_NameItem_Succeeded = 0; + k_NameItem_Failed = 1; + k_NameItem_Failed_ToolIsInvalid = 2; + k_NameItem_Failed_ItemIsInvalid = 3; + k_NameItem_Failed_NameIsInvalid = 4; + } + + optional .CMsgClientToGCNameItemResponse.ENameItem response = 1 [default = k_NameItem_Succeeded]; + optional uint64 item_id = 2; +} + +message CMsgGCSetItemPosition { + optional uint64 item_id = 1; + optional uint32 new_position = 2; +} + +message CAttribute_ItemDynamicRecipeComponent { + optional uint32 item_def = 1; + optional uint32 item_quality = 2; + optional uint32 item_flags = 3; + optional string attributes_string = 4; + optional uint32 item_count = 5; + optional uint32 items_fulfilled = 6; + optional uint32 item_rarity = 7; + optional string lootlist = 8; + optional uint64 fulfilled_item_id = 9; + optional uint32 associated_item_def = 10; +} + +message CProtoItemSocket { + optional uint64 item_id = 1; + optional uint32 attr_def_index = 2; + optional uint32 required_type = 3; + optional string required_hero = 4; + optional uint32 gem_def_index = 5; + optional bool not_tradable = 6; + optional string required_item_slot = 7; +} + +message CProtoItemSocket_Empty { + optional .CProtoItemSocket socket = 1; +} + +message CProtoItemSocket_Effect { + optional .CProtoItemSocket socket = 1; + optional uint32 effect = 2; +} + +message CProtoItemSocket_Color { + optional .CProtoItemSocket socket = 1; + optional uint32 red = 2; + optional uint32 green = 3; + optional uint32 blue = 4; +} + +message CProtoItemSocket_Strange { + optional .CProtoItemSocket socket = 1; + optional uint32 strange_type = 2; + optional uint32 strange_value = 3; +} + +message CProtoItemSocket_Strange_DESERIALIZE_FROM_STRING_ONLY { + optional .CProtoItemSocket socket = 1; + optional uint32 strange_type = 2; + optional uint32 strange_value = 3; + optional uint32 ability_effect = 4; +} + +message CProtoItemSocket_Spectator { + optional .CProtoItemSocket socket = 1; + optional uint32 games_viewed = 2; + optional uint32 corporation_id = 3; + optional uint32 league_id = 4; + optional uint32 team_id = 5; +} + +message CProtoItemSocket_AssetModifier { + optional .CProtoItemSocket socket = 1; + optional uint32 asset_modifier = 2; +} + +message CProtoItemSocket_AssetModifier_DESERIALIZE_FROM_STRING_ONLY { + optional .CProtoItemSocket socket = 1; + optional uint32 asset_modifier = 2; + optional uint32 anim_modifier = 3; + optional uint32 ability_effect = 4; +} + +message CProtoItemSocket_Autograph { + optional .CProtoItemSocket socket = 1; + optional string autograph = 2; + optional uint32 autograph_id = 3; + optional uint32 autograph_score = 4; +} + +message CProtoItemSocket_StaticVisuals { + optional .CProtoItemSocket socket = 1; +} + +message CAttribute_String { + optional string value = 1; +} + +message CWorkshop_GetItemDailyRevenue_Request { + optional uint32 appid = 1; + optional uint32 item_id = 2; + optional uint32 date_start = 3; + optional uint32 date_end = 4; +} + +message CWorkshop_GetItemDailyRevenue_Response { + message CountryDailyRevenue { + optional string country_code = 1; + optional uint32 date = 2; + optional int64 revenue_usd = 3; + optional int32 units = 4; + } + + repeated .CWorkshop_GetItemDailyRevenue_Response.CountryDailyRevenue country_revenue = 1; +} + +message CWorkshop_GetPackageDailyRevenue_Request { + optional uint32 packageid = 1; + optional uint32 date_start = 2; + optional uint32 date_end = 3; +} + +message CWorkshop_GetPackageDailyRevenue_Response { + message CountryDailyRevenue { + optional string country_code = 1; + optional uint32 date = 2; + optional int64 revenue_usd = 3; + optional int32 units = 4; + } + + repeated .CWorkshop_GetPackageDailyRevenue_Response.CountryDailyRevenue country_revenue = 1; +} + +message CMsgSQLGCToGCGrantBackpackSlots { + optional uint32 account_id = 1; + optional uint32 add_slots = 2; +} + +message CMsgClientToGCLookupAccountName { + optional uint32 account_id = 1; +} + +message CMsgClientToGCLookupAccountNameResponse { + optional uint32 account_id = 1; + optional string account_name = 2; +} + +message CMsgClientToGCCreateStaticRecipe { + message Item { + optional uint64 item_id = 1; + optional uint32 slot_id = 2; + } + + repeated .CMsgClientToGCCreateStaticRecipe.Item items = 1; + optional uint32 recipe_def_index = 2; +} + +message CMsgClientToGCCreateStaticRecipeResponse { + message OutputItem { + optional uint32 def_index = 1; + optional uint64 item_id = 2; + optional uint32 slot_id = 3; + } + + message InputError { + optional uint32 slot_id = 1; + optional .CMsgClientToGCCreateStaticRecipeResponse.EResponse error = 2 [default = eResponse_Success]; + } + + message AdditionalOutput { + optional uint32 slot_id = 1; + optional uint64 value = 2; + } + + enum EResponse { + eResponse_Success = 0; + eResponse_OfferingDisabled = 1; + eResponse_InvalidItems = 2; + eResponse_InternalError = 3; + eResponse_MissingLeague = 4; + eResponse_MissingEvent = 5; + } + + optional .CMsgClientToGCCreateStaticRecipeResponse.EResponse response = 1 [default = eResponse_Success]; + repeated .CMsgClientToGCCreateStaticRecipeResponse.OutputItem output_items = 2; + repeated .CMsgClientToGCCreateStaticRecipeResponse.InputError input_errors = 3; + repeated .CMsgClientToGCCreateStaticRecipeResponse.AdditionalOutput additional_outputs = 4; +} + +message CMsgProcessTransactionOrder { + message Item { + optional uint32 item_def_index = 1; + optional uint32 item_price = 2; + optional uint32 quantity = 3; + optional string category_desc = 4; + optional uint32 store_purchase_type = 5; + optional uint64 source_reference_id = 6; + optional int32 parent_stack_index = 7; + optional bool default_price = 8; + optional bool is_user_facing = 9; + optional int32 price_index = 11; + } + + optional uint64 txn_id = 1; + optional uint64 steam_txn_id = 2; + optional uint64 partner_txn_id = 3; + optional fixed64 steam_id = 4; + optional uint32 time_stamp = 5; + optional uint64 watermark = 6; + optional int32 purchase_report_status = 7; + optional uint32 currency = 8; + repeated .CMsgProcessTransactionOrder.Item items = 9; +} + +message CMsgGCToGCStoreProcessCDKeyTransaction { + optional .CMsgProcessTransactionOrder order = 1; + optional uint32 reason_code = 2; + optional uint32 partner = 3; +} + +message CMsgGCToGCStoreProcessCDKeyTransactionResponse { + optional bool success = 1; +} + +message CMsgGCToGCStoreProcessSettlement { + optional .CMsgProcessTransactionOrder order = 1; +} + +message CMsgGCToGCStoreProcessSettlementResponse { + optional bool success = 1; +} + +message CMsgGCToGCBroadcastConsoleCommand { + optional string con_command = 1; + optional bool report_output = 2; + optional int32 sending_gc = 3 [default = -1]; + optional string output_initiator = 4; + optional string sender_source = 5; +} + +message CMsgGCToGCConsoleOutput { + message OutputLine { + optional string text = 1; + optional uint32 spew_level = 2; + } + + optional string initiator = 1; + optional int32 sending_gc = 2 [default = -1]; + repeated .CMsgGCToGCConsoleOutput.OutputLine msgs = 3; + optional bool is_last_for_source_job = 4; +} + +message CMsgItemAges { + message MaxItemIDTimestamp { + optional uint32 timestamp = 1; + optional uint64 max_item_id = 2; + } + + repeated .CMsgItemAges.MaxItemIDTimestamp max_item_id_timestamps = 1; +} + +message CMsgGCToGCInternalTestMsg { + optional int32 sending_gc = 1 [default = -1]; + optional fixed64 sender_id = 2; + optional uint32 context = 3; + optional uint32 message_id = 4; + optional bytes message_body = 5; + optional fixed64 job_id_source = 6; + optional fixed64 job_id_target = 7; +} + +message CMsgGCToGCClientServerVersionsUpdated { + optional uint32 client_min_allowed_version = 1; + optional uint32 client_active_version = 2; + optional uint32 server_active_version = 3; + optional uint32 server_deployed_version = 4; + optional uint32 what_changed = 5; +} + +message CMsgGCToGCBroadcastMessageFromSub { + optional uint32 msg_id = 1; + optional bytes serialized_msg = 2; + repeated uint32 account_id_list = 3 [packed = true]; + repeated fixed64 steam_id_list = 4 [packed = true]; +} + +message CMsgGCToClientCurrencyPricePoints { + message Currency { + optional uint32 currency_id = 1; + repeated uint64 currency_price = 2 [packed = true]; + } + + repeated uint64 price_key = 1 [packed = true]; + repeated .CMsgGCToClientCurrencyPricePoints.Currency currencies = 2; +} + +message CMsgBannedWordList { + optional uint32 version = 1; + repeated string banned_words = 2; +} + +message CMsgGCToGCFlushSteamInventoryCache { + message Key { + optional uint64 steamid = 1; + optional uint64 contextid = 2; + } + + repeated .CMsgGCToGCFlushSteamInventoryCache.Key keys = 1; +} + +message CMsgGCToGCUpdateSubscriptionItems { + optional uint32 account_id = 1; + optional bool always_notify = 2; +} + +message CMsgGCToGCSelfPing { + optional uint32 sample_id = 1; +} + +message CMsgGCToGCGetInfuxIntervalStats { +} + +message CMsgGCToGCGetInfuxIntervalStatsResponse { + repeated fixed32 stat_ids = 1 [packed = true]; + repeated uint64 stat_total = 2 [packed = true]; + repeated uint32 stat_samples = 3 [packed = true]; + repeated uint32 stat_max = 4 [packed = true]; + optional uint32 sample_duration_ms = 5; +} + +message CMsgGCToGCPurchaseSucceeded { +} + +message CMsgClientToGCGetLimitedItemPurchaseQuantity { + optional uint32 item_def = 1; +} + +message CMsgClientToGCGetLimitedItemPurchaseQuantityResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidItemDef = 5; + k_eItemDefNotLimited = 6; + } + + optional .CMsgClientToGCGetLimitedItemPurchaseQuantityResponse.EResponse result = 1 [default = k_eInternalError]; + optional uint32 quantity_purchased = 2; +} + +message CMsgClientToGCGetInFlightItemCharges { + optional uint32 item_def = 1; +} + +message CMsgClientToGCGetInFlightItemChargesResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidItemDef = 5; + } + + optional .CMsgClientToGCGetInFlightItemChargesResponse.EResponse result = 1 [default = k_eInternalError]; + optional uint32 charges_in_flight = 2; +} + +message CMsgClientToGCPurchaseChargeCostItems { + message Item { + optional uint32 item_def_index = 1; + optional uint32 quantity = 2; + optional uint64 source_reference_id = 3; + optional int32 price_index = 4; + } + + repeated .CMsgClientToGCPurchaseChargeCostItems.Item items = 1; + optional uint32 currency = 2; +} + +message CMsgClientToGCPurchaseChargeCostItemsResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidParam = 5; + k_eInvalidPrice = 6; + k_eInsufficientCharges = 7; + k_eLimitedItem = 8; + k_eMissingPrereq = 10; + } + + optional .CMsgClientToGCPurchaseChargeCostItemsResponse.EResponse result = 1 [default = k_eInternalError]; + repeated uint64 item_ids = 2; +} + +message CMsgGCToClientInFlightChargesUpdated { + message ItemCharges { + optional uint32 item_def = 1; + optional uint32 charges_in_flight = 2; + } + + repeated .CMsgGCToClientInFlightChargesUpdated.ItemCharges in_flight_charges = 2; +} + +message CMsgClientToGCCancelUnfinalizedTransactions { + optional uint32 unused = 1; +} + +message CMsgClientToGCCancelUnfinalizedTransactionsResponse { + optional uint32 result = 1; +} + +message CMsgGCToGCUpdateWelcomeMsg { + optional bool server = 1; + optional .CExtraMsgBlock new_msg = 2; + optional bool broadcast = 3; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/econ_shared_enums.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/econ_shared_enums.proto new file mode 100644 index 00000000..549c2f5f --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/econ_shared_enums.proto @@ -0,0 +1,42 @@ +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum EGCEconBaseMsg { + k_EMsgGCGenericResult = 2579; +} + +enum EGCMsgResponse { + k_EGCMsgResponseOK = 0; + k_EGCMsgResponseDenied = 1; + k_EGCMsgResponseServerError = 2; + k_EGCMsgResponseTimeout = 3; + k_EGCMsgResponseInvalid = 4; + k_EGCMsgResponseNoMatch = 5; + k_EGCMsgResponseUnknownError = 6; + k_EGCMsgResponseNotLoggedOn = 7; + k_EGCMsgFailedToCreate = 8; +} + +enum EGCMsgUseItemResponse { + k_EGCMsgUseItemResponse_ItemUsed = 0; + k_EGCMsgUseItemResponse_GiftNoOtherPlayers = 1; + k_EGCMsgUseItemResponse_ServerError = 2; + k_EGCMsgUseItemResponse_MiniGameAlreadyStarted = 3; + k_EGCMsgUseItemResponse_ItemUsed_ItemsGranted = 4; + k_EGCMsgUseItemResponse_DropRateBonusAlreadyGranted = 5; + k_EGCMsgUseItemResponse_NotInLowPriorityPool = 6; + k_EGCMsgUseItemResponse_NotHighEnoughLevel = 7; + k_EGCMsgUseItemResponse_EventNotActive = 8; + k_EGCMsgUseItemResponse_ItemUsed_EventPointsGranted = 9; + k_EGCMsgUseItemResponse_MissingRequirement = 10; + k_EGCMsgUseItemResponse_EmoticonUnlock_NoNew = 11; + k_EGCMsgUseItemResponse_EmoticonUnlock_Complete = 12; + k_EGCMsgUseItemResponse_ItemUsed_Compendium = 13; +} + +message CMsgGenericResult { + optional uint32 eresult = 1 [default = 2]; + optional string debug_message = 2; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/gcsdk_gcmessages.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/gcsdk_gcmessages.proto new file mode 100644 index 00000000..724a985f --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/gcsdk_gcmessages.proto @@ -0,0 +1,501 @@ +import "in/dragonbra/javasteam/protobufs/dota2/valveextensions.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/steammessages.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/steammessages_steamlearn.steamworkssdk.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum ESourceEngine { + k_ESE_Source1 = 0; + k_ESE_Source2 = 1; +} + +enum PartnerAccountType { + PARTNER_NONE = 0; + PARTNER_PERFECT_WORLD = 1; + PARTNER_INVALID = 3; +} + +enum GCConnectionStatus { + GCConnectionStatus_HAVE_SESSION = 0; + GCConnectionStatus_GC_GOING_DOWN = 1; + GCConnectionStatus_NO_SESSION = 2; + GCConnectionStatus_NO_SESSION_IN_LOGON_QUEUE = 3; + GCConnectionStatus_NO_STEAM = 4; + GCConnectionStatus_SUSPENDED = 5; + GCConnectionStatus_STEAM_GOING_DOWN = 6; +} + +message CExtraMsgBlock { + optional uint32 msg_type = 1; + optional bytes contents = 2 [(debugprint_visibility) = k_EProtoDebugVisibility_Never]; + optional uint64 msg_key = 3; + optional bool is_compressed = 4; +} + +message CMsgSteamLearnServerInfo { + message ProjectInfo { + optional uint32 project_id = 1; + optional uint32 snapshot_published_version = 2; + optional uint32 inference_published_version = 3; + optional uint32 snapshot_percentage = 6; + optional bool snapshot_enabled = 7; + } + + optional .CMsgSteamLearnAccessTokens access_tokens = 4; + repeated .CMsgSteamLearnServerInfo.ProjectInfo project_infos = 5; +} + +message CMsgGCAssertJobData { + optional string message_type = 1; + optional bytes message_data = 2; +} + +message CMsgGCConCommand { + optional string command = 1; +} + +message CMsgSDOAssert { + message Request { + repeated uint64 key = 1; + optional string requesting_job = 2; + } + + optional int32 sdo_type = 1; + repeated .CMsgSDOAssert.Request requests = 2; +} + +message CMsgSOIDOwner { + optional uint32 type = 1; + optional uint64 id = 2; +} + +message CMsgSOSingleObject { + optional int32 type_id = 2; + optional bytes object_data = 3; + optional fixed64 version = 4; + optional .CMsgSOIDOwner owner_soid = 5; + optional uint32 service_id = 6; +} + +message CMsgSOMultipleObjects { + message SingleObject { + option (msgpool_soft_limit) = 256; + option (msgpool_hard_limit) = 1024; + + optional int32 type_id = 1; + optional bytes object_data = 2; + } + + repeated .CMsgSOMultipleObjects.SingleObject objects_modified = 2; + optional fixed64 version = 3; + repeated .CMsgSOMultipleObjects.SingleObject objects_added = 4; + repeated .CMsgSOMultipleObjects.SingleObject objects_removed = 5; + optional .CMsgSOIDOwner owner_soid = 6; + optional uint32 service_id = 7; +} + +message CMsgSOCacheSubscribed { + message SubscribedType { + optional int32 type_id = 1; + repeated bytes object_data = 2; + } + + repeated .CMsgSOCacheSubscribed.SubscribedType objects = 2; + optional fixed64 version = 3; + optional .CMsgSOIDOwner owner_soid = 4; + optional uint32 service_id = 5; + repeated uint32 service_list = 6; + optional fixed64 sync_version = 7; +} + +message CMsgSOCacheSubscribedUpToDate { + optional fixed64 version = 1; + optional .CMsgSOIDOwner owner_soid = 2; + optional uint32 service_id = 3; + repeated uint32 service_list = 4; + optional fixed64 sync_version = 5; +} + +message CMsgSOCacheUnsubscribed { + optional .CMsgSOIDOwner owner_soid = 2; +} + +message CMsgSOCacheSubscriptionCheck { + optional fixed64 version = 2; + optional .CMsgSOIDOwner owner_soid = 3; + optional uint32 service_id = 4; + repeated uint32 service_list = 5; + optional fixed64 sync_version = 6; +} + +message CMsgSOCacheSubscriptionRefresh { + optional .CMsgSOIDOwner owner_soid = 2; +} + +message CMsgSOCacheVersion { + optional fixed64 version = 1; +} + +message CMsgGCMultiplexMessage { + optional uint32 msgtype = 1; + optional bytes payload = 2; + repeated fixed64 steamids = 3; +} + +message CMsgGCToGCSubGCStarting { + optional int32 dir_index = 1 [default = -1]; +} + +message CGCToGCMsgMasterAck { + message Process { + optional int32 dir_index = 1 [default = -1]; + repeated uint32 type_instances = 2; + } + + optional int32 dir_index = 1 [default = -1]; + optional string machine_name = 3; + optional string process_name = 4; + repeated .CGCToGCMsgMasterAck.Process directory = 6; +} + +message CGCToGCMsgMasterAck_Response { + optional int32 eresult = 1 [default = 2]; +} + +message CMsgGCToGCUniverseStartup { + optional bool is_initial_startup = 1; +} + +message CMsgGCToGCUniverseStartupResponse { + optional int32 eresult = 1; +} + +message CGCToGCMsgMasterStartupComplete { + message GCInfo { + optional int32 dir_index = 1 [default = -1]; + optional string machine_name = 2; + } + + repeated .CGCToGCMsgMasterStartupComplete.GCInfo gc_info = 1; +} + +message CGCToGCMsgRouted { + optional uint32 msg_type = 1; + optional fixed64 sender_id = 2; + optional bytes net_message = 3; +} + +message CGCToGCMsgRoutedReply { + optional uint32 msg_type = 1; + optional bytes net_message = 2; +} + +message CMsgGCUpdateSubGCSessionInfo { + message CMsgUpdate { + optional fixed64 steamid = 1; + optional fixed32 ip = 2; + optional bool trusted = 3; + } + + repeated .CMsgGCUpdateSubGCSessionInfo.CMsgUpdate updates = 1; +} + +message CMsgGCRequestSubGCSessionInfo { + optional fixed64 steamid = 1; +} + +message CMsgGCRequestSubGCSessionInfoResponse { + optional fixed32 ip = 1; + optional bool trusted = 2; + optional uint32 port = 3; + optional bool success = 4; +} + +message CMsgSOCacheHaveVersion { + optional .CMsgSOIDOwner soid = 1; + optional fixed64 version = 2; + optional uint32 service_id = 3; + optional uint32 cached_file_version = 4; +} + +message CMsgClientHello { + optional uint32 version = 1; + repeated .CMsgSOCacheHaveVersion socache_have_versions = 2; + optional uint32 client_session_need = 3; + optional .PartnerAccountType client_launcher = 4 [default = PARTNER_NONE]; + optional string secret_key = 5; + optional uint32 client_language = 6; + optional .ESourceEngine engine = 7 [default = k_ESE_Source1]; + optional bytes steamdatagram_login = 8; + optional uint32 platform_id = 9; + optional bytes game_msg = 10; + optional int32 os_type = 11; + optional uint32 render_system = 12; + optional uint32 render_system_req = 13; + optional uint32 screen_width = 14; + optional uint32 screen_height = 15; + optional uint32 screen_refresh = 16; + optional uint32 render_width = 17; + optional uint32 render_height = 18; + optional uint32 swap_width = 19; + optional uint32 swap_height = 20; + optional bool is_steam_china = 22; + optional bool is_steam_china_client = 24; + optional string platform_name = 23; +} + +message CMsgClientWelcome { + message Location { + optional float latitude = 1; + optional float longitude = 2; + optional string country = 3; + } + + optional uint32 version = 1; + optional bytes game_data = 2; + repeated .CMsgSOCacheSubscribed outofdate_subscribed_caches = 3; + repeated .CMsgSOCacheSubscriptionCheck uptodate_subscribed_caches = 4; + optional .CMsgClientWelcome.Location location = 5; + optional uint32 gc_socache_file_version = 9; + optional string txn_country_code = 10; + optional bytes game_data2 = 11; + optional uint32 rtime32_gc_welcome_timestamp = 12; + optional uint32 currency = 13; + optional uint32 balance = 14; + optional string balance_url = 15; + optional bool has_accepted_china_ssa = 16; + optional bool is_banned_steam_china = 17; + optional .CExtraMsgBlock additional_welcome_msgs = 18; + optional .CMsgSteamLearnServerInfo steam_learn_server_info = 20; +} + +message CMsgConnectionStatus { + optional .GCConnectionStatus status = 1 [default = GCConnectionStatus_HAVE_SESSION]; + optional uint32 client_session_need = 2; + optional int32 queue_position = 3; + optional int32 queue_size = 4; + optional int32 wait_seconds = 5; + optional int32 estimated_wait_seconds_remaining = 6; +} + +message CMsgGCToGCSOCacheSubscribe { + message CMsgHaveVersions { + optional uint32 service_id = 1; + optional uint64 version = 2; + } + + optional fixed64 subscriber = 1; + optional fixed64 subscribe_to_id = 2; + optional fixed64 sync_version = 3; + repeated .CMsgGCToGCSOCacheSubscribe.CMsgHaveVersions have_versions = 4; + optional uint32 subscribe_to_type = 5; +} + +message CMsgGCToGCSOCacheUnsubscribe { + optional fixed64 subscriber = 1; + optional fixed64 unsubscribe_from_id = 2; + optional uint32 unsubscribe_from_type = 3; +} + +message CMsgGCClientPing { +} + +message CMsgGCToGCForwardAccountDetails { + optional fixed64 steamid = 1; + optional .CGCSystemMsg_GetAccountDetails_Response account_details = 2; + optional uint32 age_seconds = 3; +} + +message CMsgGCToGCLoadSessionSOCache { + optional uint32 account_id = 1; + optional .CMsgGCToGCForwardAccountDetails forward_account_details = 2; +} + +message CMsgGCToGCLoadSessionSOCacheResponse { +} + +message CMsgGCToGCUpdateSessionStats { + optional uint32 user_sessions = 1; + optional uint32 server_sessions = 2; + optional bool in_logon_surge = 3; +} + +message CMsgGCToClientRequestDropped { +} + +message CWorkshop_PopulateItemDescriptions_Request { + message SingleItemDescription { + optional uint32 gameitemid = 1; + optional string item_description = 2; + } + + message ItemDescriptionsLanguageBlock { + optional string language = 1; + repeated .CWorkshop_PopulateItemDescriptions_Request.SingleItemDescription descriptions = 2; + } + + optional uint32 appid = 1; + repeated .CWorkshop_PopulateItemDescriptions_Request.ItemDescriptionsLanguageBlock languages = 2; +} + +message CWorkshop_GetContributors_Request { + optional uint32 appid = 1; + optional uint32 gameitemid = 2; +} + +message CWorkshop_GetContributors_Response { + repeated fixed64 contributors = 1; +} + +message CWorkshop_SetItemPaymentRules_Request { + message WorkshopItemPaymentRule { + optional uint64 workshop_file_id = 1; + optional float revenue_percentage = 2; + optional string rule_description = 3; + optional uint32 rule_type = 4 [default = 1]; + } + + message WorkshopDirectPaymentRule { + optional uint64 workshop_file_id = 1; + optional string rule_description = 2; + } + + message PartnerItemPaymentRule { + optional uint32 account_id = 1; + optional float revenue_percentage = 2; + optional string rule_description = 3; + } + + optional uint32 appid = 1; + optional uint32 gameitemid = 2; + repeated .CWorkshop_SetItemPaymentRules_Request.WorkshopItemPaymentRule associated_workshop_files = 3; + repeated .CWorkshop_SetItemPaymentRules_Request.PartnerItemPaymentRule partner_accounts = 4; + optional bool validate_only = 5; + optional bool make_workshop_files_subscribable = 6; + optional .CWorkshop_SetItemPaymentRules_Request.WorkshopDirectPaymentRule associated_workshop_file_for_direct_payments = 7; +} + +message CWorkshop_SetItemPaymentRules_Response { + repeated string validation_errors = 1; +} + +message CCommunity_ClanAnnouncementInfo { + optional uint64 gid = 1; + optional uint64 clanid = 2; + optional uint64 posterid = 3; + optional string headline = 4; + optional uint32 posttime = 5; + optional uint32 updatetime = 6; + optional string body = 7; + optional int32 commentcount = 8; + repeated string tags = 9; + optional int32 language = 10; + optional bool hidden = 11; + optional fixed64 forum_topic_id = 12; +} + +message CCommunity_GetClanAnnouncements_Request { + optional uint64 steamid = 1; + optional uint32 offset = 2; + optional uint32 count = 3; + optional uint32 maxchars = 4; + optional bool strip_html = 5; + repeated string required_tags = 6; + optional bool require_no_tags = 7; + repeated uint32 language_preference = 8; + optional bool hidden_only = 9; + optional bool only_gid = 10; + optional uint32 rtime_oldest_date = 11; + optional bool include_hidden = 12; + optional bool include_partner_events = 13; +} + +message CCommunity_GetClanAnnouncements_Response { + optional uint32 maxchars = 1; + optional bool strip_html = 2; + repeated .CCommunity_ClanAnnouncementInfo announcements = 3; +} + +message CBroadcast_PostGameDataFrame_Request { + optional uint32 appid = 1; + optional fixed64 steamid = 2; + optional fixed64 broadcast_id = 3; + optional bytes frame_data = 4; +} + +message CMsgSerializedSOCache { + message TypeCache { + optional uint32 type = 1; + repeated bytes objects = 2; + optional uint32 service_id = 3; + } + + message Cache { + message Version { + optional uint32 service = 1; + optional uint64 version = 2; + } + + optional uint32 type = 1; + optional uint64 id = 2; + repeated .CMsgSerializedSOCache.Cache.Version versions = 3; + repeated .CMsgSerializedSOCache.TypeCache type_caches = 4; + } + + optional uint32 file_version = 1; + repeated .CMsgSerializedSOCache.Cache caches = 2; + optional uint32 gc_socache_file_version = 3; +} + +message CMsgGCToClientPollConvarRequest { + optional string convar_name = 1; + optional uint32 poll_id = 2; +} + +message CMsgGCToClientPollConvarResponse { + optional uint32 poll_id = 1; + optional string convar_value = 2; +} + +message CGCMsgCompressedMsgToClient { + optional uint32 msg_id = 1; + optional bytes compressed_msg = 2; +} + +message CMsgGCToGCMasterBroadcastMessage { + optional uint32 users_per_second = 1; + optional bool send_to_users = 2; + optional bool send_to_servers = 3; + optional uint32 msg_id = 4; + optional bytes msg_data = 5; + optional bool trusted_servers_only = 6; +} + +message CMsgGCToGCMasterSubscribeToCache { + optional uint32 soid_type = 1; + optional fixed64 soid_id = 2; + repeated uint32 account_ids = 3; + repeated fixed64 steam_ids = 4; +} + +message CMsgGCToGCMasterSubscribeToCacheResponse { +} + +message CMsgGCToGCMasterSubscribeToCacheAsync { + optional .CMsgGCToGCMasterSubscribeToCache subscribe_msg = 1; +} + +message CMsgGCToGCMasterUnsubscribeFromCache { + optional uint32 soid_type = 1; + optional fixed64 soid_id = 2; + repeated uint32 account_ids = 3; + repeated fixed64 steam_ids = 4; +} + +message CMsgGCToGCMasterDestroyCache { + optional uint32 soid_type = 1; + optional fixed64 soid_id = 2; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/gcsystemmsgs.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/gcsystemmsgs.proto new file mode 100644 index 00000000..2e211289 --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/gcsystemmsgs.proto @@ -0,0 +1,31 @@ +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum ESOMsg { + k_ESOMsg_Create = 21; + k_ESOMsg_Update = 22; + k_ESOMsg_Destroy = 23; + k_ESOMsg_CacheSubscribed = 24; + k_ESOMsg_CacheUnsubscribed = 25; + k_ESOMsg_UpdateMultiple = 26; + k_ESOMsg_CacheSubscriptionRefresh = 28; + k_ESOMsg_CacheSubscribedUpToDate = 29; +} + +enum EGCBaseClientMsg { + k_EMsgGCPingRequest = 3001; + k_EMsgGCPingResponse = 3002; + k_EMsgGCToClientPollConvarRequest = 3003; + k_EMsgGCToClientPollConvarResponse = 3004; + k_EMsgGCCompressedMsgToClient = 3005; + k_EMsgGCCompressedMsgToClient_Legacy = 523; + k_EMsgGCToClientRequestDropped = 3006; + k_EMsgGCClientWelcome = 4004; + k_EMsgGCServerWelcome = 4005; + k_EMsgGCClientHello = 4006; + k_EMsgGCServerHello = 4007; + k_EMsgGCClientConnectionStatus = 4009; + k_EMsgGCServerConnectionStatus = 4010; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/network_connection.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/network_connection.proto new file mode 100644 index 00000000..7577085f --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/network_connection.proto @@ -0,0 +1,136 @@ +import "google/protobuf/descriptor.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +extend .google.protobuf.EnumValueOptions { + optional string network_connection_token = 50500; + optional string network_connection_detail_token = 50501; + optional bool allowed_from_client = 50502 [default = true]; +} + +enum ENetworkDisconnectionReason { + NETWORK_DISCONNECT_INVALID = 0; + NETWORK_DISCONNECT_SHUTDOWN = 1; + NETWORK_DISCONNECT_DISCONNECT_BY_USER = 2 [(network_connection_token) = "#GameUI_Disconnect_User"]; + NETWORK_DISCONNECT_DISCONNECT_BY_SERVER = 3 [(network_connection_token) = "#GameUI_Disconnect_Server"]; + NETWORK_DISCONNECT_LOST = 4 [(network_connection_token) = "#GameUI_Disconnect_ConnectionLost"]; + NETWORK_DISCONNECT_OVERFLOW = 5 [(network_connection_token) = "#GameUI_Disconnect_ConnectionOverflow"]; + NETWORK_DISCONNECT_STEAM_BANNED = 6 [(network_connection_token) = "#GameUI_Disconnect_SteamIDBanned"]; + NETWORK_DISCONNECT_STEAM_INUSE = 7 [(network_connection_token) = "#GameUI_Disconnect_SteamIDInUse"]; + NETWORK_DISCONNECT_STEAM_TICKET = 8 [(network_connection_token) = "#GameUI_Disconnect_SteamTicket"]; + NETWORK_DISCONNECT_STEAM_LOGON = 9 [(network_connection_token) = "#GameUI_Disconnect_SteamLogon"]; + NETWORK_DISCONNECT_STEAM_AUTHCANCELLED = 10 [(network_connection_token) = "#GameUI_Disconnect_SteamLogon"]; + NETWORK_DISCONNECT_STEAM_AUTHALREADYUSED = 11 [(network_connection_token) = "#GameUI_Disconnect_SteamLogon"]; + NETWORK_DISCONNECT_STEAM_AUTHINVALID = 12 [(network_connection_token) = "#GameUI_Disconnect_SteamLogon"]; + NETWORK_DISCONNECT_STEAM_VACBANSTATE = 13 [(network_connection_token) = "#GameUI_Disconnect_SteamVAC", (allowed_from_client) = false]; + NETWORK_DISCONNECT_STEAM_LOGGED_IN_ELSEWHERE = 14 [(network_connection_token) = "#GameUI_Disconnect_SteamInUse"]; + NETWORK_DISCONNECT_STEAM_VAC_CHECK_TIMEDOUT = 15 [(network_connection_token) = "#GameUI_Disconnect_SteamTimeOut"]; + NETWORK_DISCONNECT_STEAM_DROPPED = 16 [(network_connection_token) = "#GameUI_Disconnect_SteamDropped"]; + NETWORK_DISCONNECT_STEAM_OWNERSHIP = 17 [(network_connection_token) = "#GameUI_Disconnect_SteamOwnership"]; + NETWORK_DISCONNECT_SERVERINFO_OVERFLOW = 18 [(network_connection_token) = "#GameUI_Disconnect_ServerInfoOverflow"]; + NETWORK_DISCONNECT_TICKMSG_OVERFLOW = 19 [(network_connection_token) = "#GameUI_Disconnect_TickMessage"]; + NETWORK_DISCONNECT_STRINGTABLEMSG_OVERFLOW = 20 [(network_connection_token) = "#GameUI_Disconnect_StringTableMessage"]; + NETWORK_DISCONNECT_DELTAENTMSG_OVERFLOW = 21 [(network_connection_token) = "#GameUI_Disconnect_DeltaEntMessage"]; + NETWORK_DISCONNECT_TEMPENTMSG_OVERFLOW = 22 [(network_connection_token) = "#GameUI_Disconnect_TempEntMessage"]; + NETWORK_DISCONNECT_SOUNDSMSG_OVERFLOW = 23 [(network_connection_token) = "#GameUI_Disconnect_SoundsMessage"]; + NETWORK_DISCONNECT_SNAPSHOTOVERFLOW = 24 [(network_connection_token) = "#GameUI_Disconnect_SnapshotOverflow"]; + NETWORK_DISCONNECT_SNAPSHOTERROR = 25 [(network_connection_token) = "#GameUI_Disconnect_SnapshotError"]; + NETWORK_DISCONNECT_RELIABLEOVERFLOW = 26 [(network_connection_token) = "#GameUI_Disconnect_ReliableOverflow"]; + NETWORK_DISCONNECT_BADDELTATICK = 27 [(network_connection_token) = "#GameUI_Disconnect_BadClientDeltaTick"]; + NETWORK_DISCONNECT_NOMORESPLITS = 28 [(network_connection_token) = "#GameUI_Disconnect_NoMoreSplits"]; + NETWORK_DISCONNECT_TIMEDOUT = 29 [(network_connection_token) = "#GameUI_Disconnect_TimedOut"]; + NETWORK_DISCONNECT_DISCONNECTED = 30 [(network_connection_token) = "#GameUI_Disconnect_Disconnected"]; + NETWORK_DISCONNECT_LEAVINGSPLIT = 31 [(network_connection_token) = "#GameUI_Disconnect_LeavingSplit"]; + NETWORK_DISCONNECT_DIFFERENTCLASSTABLES = 32 [(network_connection_token) = "#GameUI_Disconnect_DifferentClassTables"]; + NETWORK_DISCONNECT_BADRELAYPASSWORD = 33 [(network_connection_token) = "#GameUI_Disconnect_BadRelayPassword"]; + NETWORK_DISCONNECT_BADSPECTATORPASSWORD = 34 [(network_connection_token) = "#GameUI_Disconnect_BadSpectatorPassword"]; + NETWORK_DISCONNECT_HLTVRESTRICTED = 35 [(network_connection_token) = "#GameUI_Disconnect_HLTVRestricted"]; + NETWORK_DISCONNECT_NOSPECTATORS = 36 [(network_connection_token) = "#GameUI_Disconnect_NoSpectators"]; + NETWORK_DISCONNECT_HLTVUNAVAILABLE = 37 [(network_connection_token) = "#GameUI_Disconnect_HLTVUnavailable"]; + NETWORK_DISCONNECT_HLTVSTOP = 38 [(network_connection_token) = "#GameUI_Disconnect_HLTVStop"]; + NETWORK_DISCONNECT_KICKED = 39 [(network_connection_token) = "#GameUI_Disconnect_Kicked"]; + NETWORK_DISCONNECT_BANADDED = 40 [(network_connection_token) = "#GameUI_Disconnect_BanAdded"]; + NETWORK_DISCONNECT_KICKBANADDED = 41 [(network_connection_token) = "#GameUI_Disconnect_KickBanAdded"]; + NETWORK_DISCONNECT_HLTVDIRECT = 42 [(network_connection_token) = "#GameUI_Disconnect_HLTVDirect"]; + NETWORK_DISCONNECT_PURESERVER_CLIENTEXTRA = 43 [(network_connection_token) = "#GameUI_Disconnect_PureServer_ClientExtra"]; + NETWORK_DISCONNECT_PURESERVER_MISMATCH = 44 [(network_connection_token) = "#GameUI_Disconnect_PureServer_Mismatch"]; + NETWORK_DISCONNECT_USERCMD = 45 [(network_connection_token) = "#GameUI_Disconnect_UserCmd"]; + NETWORK_DISCONNECT_REJECTED_BY_GAME = 46 [(network_connection_token) = "#GameUI_Disconnect_RejectedByGame"]; + NETWORK_DISCONNECT_MESSAGE_PARSE_ERROR = 47 [(network_connection_token) = "#GameUI_Disconnect_MessageParseError"]; + NETWORK_DISCONNECT_INVALID_MESSAGE_ERROR = 48 [(network_connection_token) = "#GameUI_Disconnect_InvalidMessageError"]; + NETWORK_DISCONNECT_BAD_SERVER_PASSWORD = 49 [(network_connection_token) = "#GameUI_Disconnect_BadServerPassword"]; + NETWORK_DISCONNECT_DIRECT_CONNECT_RESERVATION = 50; + NETWORK_DISCONNECT_CONNECTION_FAILURE = 51 [(network_connection_token) = "#GameUI_Disconnect_ConnectionFailure"]; + NETWORK_DISCONNECT_NO_PEER_GROUP_HANDLERS = 52 [(network_connection_token) = "#GameUI_Disconnect_NoPeerGroupHandlers"]; + NETWORK_DISCONNECT_RECONNECTION = 53; + NETWORK_DISCONNECT_LOOPSHUTDOWN = 54 [(network_connection_token) = "#GameUI_Disconnect_LoopShutdown"]; + NETWORK_DISCONNECT_LOOPDEACTIVATE = 55 [(network_connection_token) = "#GameUI_Disconnect_LoopDeactivate"]; + NETWORK_DISCONNECT_HOST_ENDGAME = 56 [(network_connection_token) = "#GameUI_Disconnect_Host_EndGame"]; + NETWORK_DISCONNECT_LOOP_LEVELLOAD_ACTIVATE = 57 [(network_connection_token) = "#GameUI_Disconnect_LoopLevelLoadActivate"]; + NETWORK_DISCONNECT_CREATE_SERVER_FAILED = 58 [(network_connection_token) = "#GameUI_Disconnect_CreateServerFailed"]; + NETWORK_DISCONNECT_EXITING = 59 [(network_connection_token) = "#GameUI_Disconnect_ExitingEngine"]; + NETWORK_DISCONNECT_REQUEST_HOSTSTATE_IDLE = 60 [(network_connection_token) = "#GameUI_Disconnect_Request_HSIdle"]; + NETWORK_DISCONNECT_REQUEST_HOSTSTATE_HLTVRELAY = 61 [(network_connection_token) = "#GameUI_Disconnect_Request_HLTVRelay"]; + NETWORK_DISCONNECT_CLIENT_CONSISTENCY_FAIL = 62 [(network_connection_token) = "#GameUI_ClientConsistencyFail"]; + NETWORK_DISCONNECT_CLIENT_UNABLE_TO_CRC_MAP = 63 [(network_connection_token) = "#GameUI_ClientUnableToCRCMap"]; + NETWORK_DISCONNECT_CLIENT_NO_MAP = 64 [(network_connection_token) = "#GameUI_ClientNoMap"]; + NETWORK_DISCONNECT_CLIENT_DIFFERENT_MAP = 65 [(network_connection_token) = "#GameUI_ClientDifferentMap"]; + NETWORK_DISCONNECT_SERVER_REQUIRES_STEAM = 66 [(network_connection_token) = "#GameUI_ServerRequireSteams"]; + NETWORK_DISCONNECT_STEAM_DENY_MISC = 67 [(network_connection_token) = "#GameUI_Disconnect_SteamDeny_Misc"]; + NETWORK_DISCONNECT_STEAM_DENY_BAD_ANTI_CHEAT = 68 [(network_connection_token) = "#GameUI_Disconnect_SteamDeny_BadAntiCheat"]; + NETWORK_DISCONNECT_SERVER_SHUTDOWN = 69 [(network_connection_token) = "#GameUI_Disconnect_ServerShutdown"]; + NETWORK_DISCONNECT_REPLAY_INCOMPATIBLE = 71 [(network_connection_token) = "#GameUI_Disconnect_ReplayIncompatible"]; + NETWORK_DISCONNECT_CONNECT_REQUEST_TIMEDOUT = 72 [(network_connection_token) = "#GameUI_Disconnect_ConnectionTimedout"]; + NETWORK_DISCONNECT_SERVER_INCOMPATIBLE = 73 [(network_connection_token) = "#GameUI_Disconnect_ServerIncompatible"]; + NETWORK_DISCONNECT_LOCALPROBLEM_MANYRELAYS = 74 [(network_connection_token) = "#GameUI_Disconnect_LocalProblem_ManyRelays"]; + NETWORK_DISCONNECT_LOCALPROBLEM_HOSTEDSERVERPRIMARYRELAY = 75 [(network_connection_token) = "#GameUI_Disconnect_LocalProblem_HostedServerPrimaryRelay"]; + NETWORK_DISCONNECT_LOCALPROBLEM_NETWORKCONFIG = 76 [(network_connection_token) = "#GameUI_Disconnect_LocalProblem_NetworkConfig"]; + NETWORK_DISCONNECT_LOCALPROBLEM_OTHER = 77 [(network_connection_token) = "#GameUI_Disconnect_LocalProblem_Other"]; + NETWORK_DISCONNECT_REMOTE_TIMEOUT = 79 [(network_connection_token) = "#GameUI_Disconnect_RemoteProblem_Timeout"]; + NETWORK_DISCONNECT_REMOTE_TIMEOUT_CONNECTING = 80 [(network_connection_token) = "#GameUI_Disconnect_RemoteProblem_TimeoutConnecting"]; + NETWORK_DISCONNECT_REMOTE_OTHER = 81 [(network_connection_token) = "#GameUI_Disconnect_RemoteProblem_Other"]; + NETWORK_DISCONNECT_REMOTE_BADCRYPT = 82 [(network_connection_token) = "#GameUI_Disconnect_RemoteProblem_BadCrypt"]; + NETWORK_DISCONNECT_REMOTE_CERTNOTTRUSTED = 83 [(network_connection_token) = "#GameUI_Disconnect_RemoteProblem_BadCert"]; + NETWORK_DISCONNECT_UNUSUAL = 84 [(network_connection_token) = "#GameUI_Disconnect_Unusual"]; + NETWORK_DISCONNECT_INTERNAL_ERROR = 85 [(network_connection_token) = "#GameUI_Disconnect_InternalError"]; + NETWORK_DISCONNECT_REJECT_BADCHALLENGE = 128 [(network_connection_token) = "#GameUI_ServerRejectBadChallenge"]; + NETWORK_DISCONNECT_REJECT_NOLOBBY = 129 [(network_connection_token) = "#GameUI_ServerNoLobby"]; + NETWORK_DISCONNECT_REJECT_BACKGROUND_MAP = 130 [(network_connection_token) = "#Valve_Reject_Background_Map"]; + NETWORK_DISCONNECT_REJECT_SINGLE_PLAYER = 131 [(network_connection_token) = "#Valve_Reject_Single_Player"]; + NETWORK_DISCONNECT_REJECT_HIDDEN_GAME = 132 [(network_connection_token) = "#Valve_Reject_Hidden_Game"]; + NETWORK_DISCONNECT_REJECT_LANRESTRICT = 133 [(network_connection_token) = "#GameUI_ServerRejectLANRestrict"]; + NETWORK_DISCONNECT_REJECT_BADPASSWORD = 134 [(network_connection_token) = "#GameUI_ServerRejectBadPassword"]; + NETWORK_DISCONNECT_REJECT_SERVERFULL = 135 [(network_connection_token) = "#GameUI_ServerRejectServerFull"]; + NETWORK_DISCONNECT_REJECT_INVALIDRESERVATION = 136 [(network_connection_token) = "#GameUI_ServerRejectInvalidReservation"]; + NETWORK_DISCONNECT_REJECT_FAILEDCHANNEL = 137 [(network_connection_token) = "#GameUI_ServerRejectFailedChannel"]; + NETWORK_DISCONNECT_REJECT_CONNECT_FROM_LOBBY = 138 [(network_connection_token) = "#Valve_Reject_Connect_From_Lobby"]; + NETWORK_DISCONNECT_REJECT_RESERVED_FOR_LOBBY = 139 [(network_connection_token) = "#Valve_Reject_Reserved_For_Lobby"]; + NETWORK_DISCONNECT_REJECT_INVALIDKEYLENGTH = 140 [(network_connection_token) = "#GameUI_ServerReject_InvalidKeyLength"]; + NETWORK_DISCONNECT_REJECT_OLDPROTOCOL = 141 [(network_connection_token) = "#GameUI_ServerRejectOldProtocol"]; + NETWORK_DISCONNECT_REJECT_NEWPROTOCOL = 142 [(network_connection_token) = "#GameUI_ServerRejectNewProtocol"]; + NETWORK_DISCONNECT_REJECT_INVALIDCONNECTION = 143 [(network_connection_token) = "#GameUI_ServerRejectInvalidConnection"]; + NETWORK_DISCONNECT_REJECT_INVALIDCERTLEN = 144 [(network_connection_token) = "#GameUI_ServerRejectInvalidCertLen"]; + NETWORK_DISCONNECT_REJECT_INVALIDSTEAMCERTLEN = 145 [(network_connection_token) = "#GameUI_ServerRejectInvalidSteamCertLen"]; + NETWORK_DISCONNECT_REJECT_STEAM = 146 [(network_connection_token) = "#GameUI_ServerRejectSteam"]; + NETWORK_DISCONNECT_REJECT_SERVERAUTHDISABLED = 147 [(network_connection_token) = "#GameUI_ServerAuthDisabled"]; + NETWORK_DISCONNECT_REJECT_SERVERCDKEYAUTHINVALID = 148 [(network_connection_token) = "#GameUI_ServerCDKeyAuthInvalid"]; + NETWORK_DISCONNECT_REJECT_BANNED = 149 [(network_connection_token) = "#GameUI_ServerRejectBanned"]; + NETWORK_DISCONNECT_KICKED_TEAMKILLING = 150 [(network_connection_token) = "#Player_DisconnectReason_TeamKilling"]; + NETWORK_DISCONNECT_KICKED_TK_START = 151 [(network_connection_token) = "#Player_DisconnectReason_TK_Start"]; + NETWORK_DISCONNECT_KICKED_UNTRUSTEDACCOUNT = 152 [(network_connection_token) = "#Player_DisconnectReason_UntrustedAccount"]; + NETWORK_DISCONNECT_KICKED_CONVICTEDACCOUNT = 153 [(network_connection_token) = "#Player_DisconnectReason_ConvictedAccount"]; + NETWORK_DISCONNECT_KICKED_COMPETITIVECOOLDOWN = 154 [(network_connection_token) = "#Player_DisconnectReason_CompetitiveCooldown"]; + NETWORK_DISCONNECT_KICKED_TEAMHURTING = 155 [(network_connection_token) = "#Player_DisconnectReason_TeamHurting"]; + NETWORK_DISCONNECT_KICKED_HOSTAGEKILLING = 156 [(network_connection_token) = "#Player_DisconnectReason_HostageKilling"]; + NETWORK_DISCONNECT_KICKED_VOTEDOFF = 157 [(network_connection_token) = "#Player_DisconnectReason_VotedOff"]; + NETWORK_DISCONNECT_KICKED_IDLE = 158 [(network_connection_token) = "#Player_DisconnectReason_Idle"]; + NETWORK_DISCONNECT_KICKED_SUICIDE = 159 [(network_connection_token) = "#Player_DisconnectReason_Suicide"]; + NETWORK_DISCONNECT_KICKED_NOSTEAMLOGIN = 160 [(network_connection_token) = "#Player_DisconnectReason_NoSteamLogin"]; + NETWORK_DISCONNECT_KICKED_NOSTEAMTICKET = 161 [(network_connection_token) = "#Player_DisconnectReason_NoSteamTicket"]; + NETWORK_DISCONNECT_KICKED_INPUTAUTOMATION = 162 [(network_connection_token) = "#Player_DisconnectReason_InputAutomation", (network_connection_detail_token) = "#Player_DisconnectReason_InputAutomation_Detail"]; + NETWORK_DISCONNECT_KICKED_VACNETABNORMALBEHAVIOR = 163 [(network_connection_token) = "#Player_DisconnectReason_VacNetAbnormalBehavior", (allowed_from_client) = false]; + NETWORK_DISCONNECT_KICKED_INSECURECLIENT = 164 [(network_connection_token) = "#Player_DisconnectReason_InsecureClient"]; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/networkbasetypes.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/networkbasetypes.proto new file mode 100644 index 00000000..7dcebe71 --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/networkbasetypes.proto @@ -0,0 +1,255 @@ +import "google/protobuf/descriptor.proto"; +import "in/dragonbra/javasteam/protobufs/dota2/network_connection.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +extend .google.protobuf.MessageOptions { + optional int32 maximum_size_bytes = 50000; +} + +enum SignonState_t { + SIGNONSTATE_NONE = 0; + SIGNONSTATE_CHALLENGE = 1; + SIGNONSTATE_CONNECTED = 2; + SIGNONSTATE_NEW = 3; + SIGNONSTATE_PRESPAWN = 4; + SIGNONSTATE_SPAWN = 5; + SIGNONSTATE_FULL = 6; + SIGNONSTATE_CHANGELEVEL = 7; +} + +enum NET_Messages { + net_NOP = 0; + net_Disconnect_Legacy = 1; + net_SplitScreenUser = 3; + net_Tick = 4; + net_StringCmd = 5; + net_SetConVar = 6; + net_SignonState = 7; + net_SpawnGroup_Load = 8; + net_SpawnGroup_ManifestUpdate = 9; + net_SpawnGroup_SetCreationTick = 11; + net_SpawnGroup_Unload = 12; + net_SpawnGroup_LoadCompleted = 13; + net_DebugOverlay = 15; +} + +enum SpawnGroupFlags_t { + SPAWN_GROUP_LOAD_ENTITIES_FROM_SAVE = 1; + SPAWN_GROUP_DONT_SPAWN_ENTITIES = 2; + SPAWN_GROUP_SYNCHRONOUS_SPAWN = 4; + SPAWN_GROUP_IS_INITIAL_SPAWN_GROUP = 8; + SPAWN_GROUP_CREATE_CLIENT_ONLY_ENTITIES = 16; + SPAWN_GROUP_BLOCK_UNTIL_LOADED = 64; + SPAWN_GROUP_LOAD_STREAMING_DATA = 128; + SPAWN_GROUP_CREATE_NEW_SCENE_WORLD = 256; +} + +message CMsgVector { + optional float x = 1; + optional float y = 2; + optional float z = 3; + optional float w = 4; +} + +message CMsgVector2D { + optional float x = 1; + optional float y = 2; +} + +message CMsgQAngle { + optional float x = 1; + optional float y = 2; + optional float z = 3; +} + +message CMsgQuaternion { + optional float x = 1; + optional float y = 2; + optional float z = 3; + optional float w = 4; +} + +message CMsgTransform { + optional .CMsgVector position = 1; + optional float scale = 2; + optional .CMsgQuaternion orientation = 3; +} + +message CMsgRGBA { + optional int32 r = 1; + optional int32 g = 2; + optional int32 b = 3; + optional int32 a = 4; +} + +message CMsgPlayerInfo { + optional string name = 1; + optional fixed64 xuid = 2; + optional int32 userid = 3; + optional fixed64 steamid = 4; + optional bool fakeplayer = 5; + optional bool ishltv = 6; +} + +message CEntityMsg { + optional uint32 target_entity = 1 [default = 16777215]; +} + +message CMsg_CVars { + message CVar { + optional string name = 1; + optional string value = 2; + } + + repeated .CMsg_CVars.CVar cvars = 1; +} + +message CNETMsg_NOP { +} + +message CNETMsg_SplitScreenUser { + optional int32 slot = 1; +} + +message CNETMsg_Tick { + optional uint32 tick = 1; + optional uint32 host_computationtime = 4; + optional uint32 host_computationtime_std_deviation = 5; + optional uint32 legacy_host_loss = 7; + optional uint32 host_unfiltered_frametime = 8; + optional uint32 hltv_replay_flags = 9; + optional uint32 expected_long_tick = 10; + optional string expected_long_tick_reason = 11; + optional uint32 host_frame_dropped_pct_x10 = 12; + optional uint32 host_frame_irregular_arrival_pct_x10 = 13; +} + +message CNETMsg_StringCmd { + optional string command = 1; + optional uint32 prediction_sync = 2; +} + +message CNETMsg_SetConVar { + option (maximum_size_bytes) = 4096; + + optional .CMsg_CVars convars = 1; +} + +message CNETMsg_SignonState { + optional .SignonState_t signon_state = 1 [default = SIGNONSTATE_NONE]; + optional uint32 spawn_count = 2; + optional uint32 num_server_players = 3; + repeated string players_networkids = 4; + optional string map_name = 5; + optional string addons = 6; +} + +message CSVCMsg_GameEvent { + message key_t { + optional int32 type = 1; + optional string val_string = 2; + optional float val_float = 3; + optional int32 val_long = 4; + optional int32 val_short = 5; + optional int32 val_byte = 6; + optional bool val_bool = 7; + optional uint64 val_uint64 = 8; + } + + optional string event_name = 1; + optional int32 eventid = 2; + repeated .CSVCMsg_GameEvent.key_t keys = 3; +} + +message CSVCMsgList_GameEvents { + message event_t { + optional int32 tick = 1; + optional .CSVCMsg_GameEvent event = 2; + } + + repeated .CSVCMsgList_GameEvents.event_t events = 1; +} + +message CNETMsg_SpawnGroup_Load { + option (maximum_size_bytes) = 131072; + + optional string worldname = 1; + optional string entitylumpname = 2; + optional string entityfiltername = 3; + optional uint32 spawngrouphandle = 4; + optional uint32 spawngroupownerhandle = 5; + optional .CMsgVector world_offset_pos = 6; + optional .CMsgQAngle world_offset_angle = 7; + optional bytes spawngroupmanifest = 8; + optional uint32 flags = 9; + optional int32 tickcount = 10; + optional bool manifestincomplete = 11; + optional string localnamefixup = 12; + optional string parentnamefixup = 13; + optional int32 manifestloadpriority = 14; + optional uint32 worldgroupid = 15; + optional uint32 creationsequence = 16; + optional string savegamefilename = 17; + optional uint32 spawngroupparenthandle = 18; + optional bool leveltransition = 19; + optional string worldgroupname = 20; +} + +message CNETMsg_SpawnGroup_ManifestUpdate { + optional uint32 spawngrouphandle = 1; + optional bytes spawngroupmanifest = 2; + optional bool manifestincomplete = 3; +} + +message CNETMsg_SpawnGroup_SetCreationTick { + optional uint32 spawngrouphandle = 1; + optional int32 tickcount = 2; + optional uint32 creationsequence = 3; +} + +message CNETMsg_SpawnGroup_Unload { + optional uint32 spawngrouphandle = 1; + optional uint32 flags = 2; + optional int32 tickcount = 3; +} + +message CNETMsg_SpawnGroup_LoadCompleted { + optional uint32 spawngrouphandle = 1; +} + +message CSVCMsg_GameSessionConfiguration { + optional bool is_multiplayer = 1; + optional bool is_loadsavegame = 2; + optional bool is_background_map = 3; + optional bool is_headless = 4; + optional uint32 min_client_limit = 5; + optional uint32 max_client_limit = 6; + optional uint32 max_clients = 7; + optional fixed32 tick_interval = 8; + optional string hostname = 9; + optional string savegamename = 10; + optional string s1_mapname = 11; + optional string gamemode = 12; + optional string server_ip_address = 13; + optional bytes data = 14; + optional bool is_localonly = 15; + optional bool no_steam_server = 19; + optional bool is_transition = 16; + optional string previouslevel = 17; + optional string landmarkname = 18; +} + +message CNETMsg_DebugOverlay { + optional int32 etype = 1; + repeated .CMsgVector vectors = 2; + repeated .CMsgRGBA colors = 3; + repeated float dimensions = 4; + repeated float times = 5; + repeated bool bools = 6; + repeated uint64 uint64s = 7; + repeated string strings = 8; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/steammessages.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/steammessages.proto new file mode 100644 index 00000000..fdda1106 --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/steammessages.proto @@ -0,0 +1,113 @@ +import "google/protobuf/descriptor.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +extend .google.protobuf.FieldOptions { + optional bool key_field = 60000 [default = false]; +} + +extend .google.protobuf.MessageOptions { + optional int32 msgpool_soft_limit = 60000 [default = 32]; + optional int32 msgpool_hard_limit = 60001 [default = 384]; +} + +enum EGCPlatform { + k_eGCPlatform_None = 0; + k_eGCPlatform_PC = 1; + k_eGCPlatform_Mac = 2; + k_eGCPlatform_Linux = 3; + k_eGCPlatform_Android = 4; + k_eGCPlatform_iOS = 5; +} + +enum GCProtoBufMsgSrc { + GCProtoBufMsgSrc_Unspecified = 0; + GCProtoBufMsgSrc_FromSystem = 1; + GCProtoBufMsgSrc_FromSteamID = 2; + GCProtoBufMsgSrc_FromGC = 3; + GCProtoBufMsgSrc_ReplySystem = 4; + GCProtoBufMsgSrc_SpoofedSteamID = 5; +} + +message CMsgProtoBufHeader { + option (msgpool_soft_limit) = 256; + option (msgpool_hard_limit) = 1024; + + optional fixed64 client_steam_id = 1; + optional int32 client_session_id = 2; + optional uint32 source_app_id = 3; + optional fixed64 job_id_source = 10 [default = 18446744073709551615]; + optional fixed64 job_id_target = 11 [default = 18446744073709551615]; + optional string target_job_name = 12; + optional int32 eresult = 13 [default = 2]; + optional string error_message = 14; + optional .GCProtoBufMsgSrc gc_msg_src = 200 [default = GCProtoBufMsgSrc_Unspecified]; + optional int32 gc_dir_index_source = 201 [default = -1]; +} + +message CGCSystemMsg_GetAccountDetails { + option (msgpool_soft_limit) = 128; + option (msgpool_hard_limit) = 512; + + optional fixed64 steamid = 1; + optional uint32 appid = 2; +} + +message CGCSystemMsg_GetAccountDetails_Response { + option (msgpool_soft_limit) = 128; + option (msgpool_hard_limit) = 512; + + optional uint32 eresult_deprecated = 1 [default = 2]; + optional string account_name = 2; + optional string persona_name = 3; + optional bool is_profile_created = 26; + optional bool is_profile_public = 4; + optional bool is_inventory_public = 5; + optional bool is_vac_banned = 7; + optional bool is_cyber_cafe = 8; + optional bool is_school_account = 9; + optional bool is_limited = 10; + optional bool is_subscribed = 11; + optional uint32 package = 12; + optional bool is_free_trial_account = 13; + optional uint32 free_trial_expiration = 14; + optional bool is_low_violence = 15; + optional bool is_account_locked_down = 16; + optional bool is_community_banned = 17; + optional bool is_trade_banned = 18; + optional uint32 trade_ban_expiration = 19; + optional uint32 accountid = 20; + optional uint32 suspension_end_time = 21; + optional string currency = 22; + optional uint32 steam_level = 23; + optional uint32 friend_count = 24; + optional uint32 account_creation_time = 25; + optional bool is_steamguard_enabled = 27; + optional bool is_phone_verified = 28; + optional bool is_two_factor_auth_enabled = 29; + optional uint32 two_factor_enabled_time = 30; + optional uint32 phone_verification_time = 31; + optional uint64 phone_id = 33; + optional bool is_phone_identifying = 34; + optional uint32 rt_identity_linked = 35; + optional uint32 rt_birth_date = 36; + optional string txn_country_code = 37; + optional bool has_accepted_china_ssa = 38; + optional bool is_banned_steam_china = 39; +} + +message CIPLocationInfo { + optional uint32 ip = 1; + optional float latitude = 2; + optional float longitude = 3; + optional string country = 4; + optional string state = 5; + optional string city = 6; +} + +message CGCMsgGetIPLocationResponse { + repeated .CIPLocationInfo infos = 1; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/steammessages_oauth.steamworkssdk.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/steammessages_oauth.steamworkssdk.proto new file mode 100644 index 00000000..f690106f --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/steammessages_oauth.steamworkssdk.proto @@ -0,0 +1,23 @@ +import "in/dragonbra/javasteam/protobufs/dota2/steammessages_unified_base.steamworkssdk.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +message COAuthToken_ImplicitGrantNoPrompt_Request { + optional string clientid = 1 [(description) = "Client ID for which to count the number of issued tokens"]; +} + +message COAuthToken_ImplicitGrantNoPrompt_Response { + optional string access_token = 1 [(description) = "OAuth Token, granted on success"]; + optional string redirect_uri = 2 [(description) = "Redirection URI provided during client registration."]; +} + +service OAuthToken { + option (service_description) = "Service containing methods to manage OAuth tokens"; + + rpc ImplicitGrantNoPrompt (.COAuthToken_ImplicitGrantNoPrompt_Request) returns (.COAuthToken_ImplicitGrantNoPrompt_Response) { + option (method_description) = "Grants an implicit OAuth token (grant type 'token') for the specified client ID on behalf of a user without prompting"; + } +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/steammessages_steamlearn.steamworkssdk.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/steammessages_steamlearn.steamworkssdk.proto new file mode 100644 index 00000000..2a6833a1 --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/steammessages_steamlearn.steamworkssdk.proto @@ -0,0 +1,440 @@ +import "in/dragonbra/javasteam/protobufs/dota2/steammessages_unified_base.steamworkssdk.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum ESteamLearnDataType { + STEAMLEARN_DATATYPE_INVALID = 0; + STEAMLEARN_DATATYPE_INT32 = 1; + STEAMLEARN_DATATYPE_FLOAT32 = 2; + STEAMLEARN_DATATYPE_BOOL = 3; + STEAMLEARN_DATATYPE_STRING = 4; + STEAMLEARN_DATATYPE_OBJECT = 5; +} + +enum ESteammLearnRegisterDataSourceResult { + STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR = 0; + STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_SUCCESS_CREATED = 1; + STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_SUCCESS_FOUND = 2; + STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_GENERIC = 3; + STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_INVALID_NAME = 4; + STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_INVALID_VERSION = 5; + STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_DATA_CHANGED = 6; + STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_DATA_INVALID = 7; + STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_FORBIDDEN = 8; + STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_INVALID_TIMESTAMP = 9; + STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_DISABLED = 10; +} + +enum ESteamLearnCacheDataResult { + STEAMLEARN_CACHE_DATA_ERROR = 0; + STEAMLEARN_CACHE_DATA_SUCCESS = 1; + STEAMLEARN_CACHE_DATA_ERROR_UNKNOWN_DATA_SOURCE = 2; + STEAMLEARN_CACHE_DATA_ERROR_UNCACHED_DATA_SOURCE = 3; + STEAMLEARN_CACHE_DATA_ERROR_INVALID_KEYS = 4; + STEAMLEARN_CACHE_DATA_ERROR_FORBIDDEN = 5; + STEAMLEARN_CACHE_DATA_ERROR_INVALID_TIMESTAMP = 6; + STEAMLEARN_CACHE_DATA_DISABLED = 7; +} + +enum ESteamLearnSnapshotProjectResult { + STEAMLEARN_SNAPSHOT_PROJECT_ERROR = 0; + STEAMLEARN_SNAPSHOT_PROJECT_SUCCESS_STORED = 1; + STEAMLEARN_SNAPSHOT_PROJECT_SUCCESS_QUEUED = 2; + STEAMLEARN_SNAPSHOT_PROJECT_ERROR_INVALID_PROJECT_ID = 3; + STEAMLEARN_SNAPSHOT_PROJECT_ERROR_UNKNOWN_DATA_SOURCE = 4; + STEAMLEARN_SNAPSHOT_PROJECT_ERROR_INVALID_DATA_SOURCE_KEY = 5; + STEAMLEARN_SNAPSHOT_PROJECT_ERROR_MISSING_CACHE_DURATION = 6; + STEAMLEARN_SNAPSHOT_PROJECT_ERROR_NO_PUBLISHED_CONFIG = 7; + STEAMLEARN_SNAPSHOT_PROJECT_ERROR_FORBIDDEN = 8; + STEAMLEARN_SNAPSHOT_PROJECT_ERROR_INVALID_TIMESTAMP = 9; + STEAMLEARN_SNAPSHOT_PROJECT_ERROR_INTERNAL_DATA_SOURCE_ERROR = 10; + STEAMLEARN_SNAPSHOT_PROJECT_DISABLED = 11; + STEAMLEARN_SNAPSHOT_PROJECT_ERROR_INVALID_PUBLISHED_VERSION = 12; +} + +enum ESteamLearnGetAccessTokensResult { + STEAMLEARN_GET_ACCESS_TOKENS_ERROR = 0; + STEAMLEARN_GET_ACCESS_TOKENS_SUCCESS = 1; +} + +enum ESteamLearnInferenceResult { + STEAMLEARN_INFERENCE_ERROR = 0; + STEAMLEARN_INFERENCE_SUCCESS = 1; + STEAMLEARN_INFERENCE_ERROR_INVALID_PROJECT_ID = 2; + STEAMLEARN_INFERENCE_ERROR_MISSING_CACHED_SCHEMA_DATA = 3; + STEAMLEARN_INFERENCE_ERROR_NO_PUBLISHED_CONFIG = 4; + STEAMLEARN_INFERENCE_ERROR_FORBIDDEN = 5; + STEAMLEARN_INFERENCE_ERROR_INVALID_TIMESTAMP = 6; + STEAMLEARN_INFERENCE_ERROR_INVALID_PUBLISHED_VERSION = 7; + STEAMLEARN_INFERENCE_ERROR_NO_FETCH_ID_FOUND = 8; + STEAMLEARN_INFERENCE_ERROR_TOO_BUSY = 9; + STEAMLEARN_INFERENCE_ERROR_UNSUPPLIED_DATA_FAIL = 10; + STEAMLEARN_INFERENCE_ERROR_UNSUPPLIED_DATA_NO_KEYS = 11; + STEAMLEARN_INFERENCE_DISABLED = 12; + STEAMLEARN_INFERENCE_ERROR_NO_OUTPUT = 13; + STEAMLEARN_INFERENCE_ERROR_INVALID_NAMED_INFERENCE = 14; +} + +enum ESteamLearnInferenceMetadataResult { + STEAMLEARN_INFERENCE_METADATA_ERROR = 0; + STEAMLEARN_INFERENCE_METADATA_SUCCESS = 1; + STEAMLEARN_INFERENCE_METADATA_ERROR_INVALID_PROJECT_ID = 2; + STEAMLEARN_INFERENCE_METADATA_ERROR_NO_PUBLISHED_CONFIG = 3; + STEAMLEARN_INFERENCE_METADATA_ERROR_FORBIDDEN = 4; + STEAMLEARN_INFERENCE_METADATA_ERROR_INVALID_TIMESTAMP = 5; + STEAMLEARN_INFERENCE_METADATA_ERROR_INVALID_PUBLISHED_VERSION = 6; + STEAMLEARN_INFERENCE_METADATA_ERROR_NO_FETCH_ID_FOUND = 7; +} + +message CMsgSteamLearnDataSourceDescObject { + repeated .CMsgSteamLearnDataSourceDescElement elements = 1; +} + +message CMsgSteamLearnDataSourceDescElement { + optional string name = 1; + optional .ESteamLearnDataType data_type = 2 [default = STEAMLEARN_DATATYPE_INVALID]; + optional .CMsgSteamLearnDataSourceDescObject object = 3; + optional uint32 count = 4; +} + +message CMsgSteamLearnDataSource { + optional uint32 id = 1; + optional string name = 2; + optional uint32 version = 3; + optional string source_description = 4; + optional .CMsgSteamLearnDataSourceDescObject structure = 5; + optional uint32 structure_crc = 6; + optional uint32 cache_duration_seconds = 7; +} + +message CMsgSteamLearnDataObject { + repeated .CMsgSteamLearnDataElement elements = 1; +} + +message CMsgSteamLearnDataElement { + optional string name = 1; + repeated int32 data_int32s = 20; + repeated float data_floats = 21; + repeated bool data_bools = 22; + repeated string data_strings = 23; + repeated .CMsgSteamLearnDataObject data_objects = 24; +} + +message CMsgSteamLearnData { + optional uint32 data_source_id = 1; + repeated uint64 keys = 2; + optional .CMsgSteamLearnDataObject data_object = 3; +} + +message CMsgSteamLearnDataList { + repeated .CMsgSteamLearnData data = 1; +} + +message CMsgSteamLearn_RegisterDataSource_Request { + optional string access_token = 1; + optional .CMsgSteamLearnDataSource data_source = 3; +} + +message CMsgSteamLearn_RegisterDataSource_Response { + optional .ESteammLearnRegisterDataSourceResult result = 1 [default = STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR]; + optional .CMsgSteamLearnDataSource data_source = 2; +} + +message CMsgSteamLearn_CacheData_Request { + optional string access_token = 1; + optional .CMsgSteamLearnData data = 3; +} + +message CMsgSteamLearn_CacheData_Response { + optional .ESteamLearnCacheDataResult cache_data_result = 1 [default = STEAMLEARN_CACHE_DATA_ERROR]; +} + +message CMsgSteamLearn_SnapshotProject_Request { + optional string access_token = 1; + optional uint32 project_id = 3; + optional uint32 published_version = 7; + repeated uint64 keys = 4; + repeated .CMsgSteamLearnData data = 5; + optional uint32 pending_data_limit_seconds = 6; +} + +message CMsgSteamLearn_SnapshotProject_Response { + optional .ESteamLearnSnapshotProjectResult snapshot_result = 1 [default = STEAMLEARN_SNAPSHOT_PROJECT_ERROR]; +} + +message CMsgSteamLearn_BatchOperation_Request { + repeated .CMsgSteamLearn_CacheData_Request cache_data_requests = 1; + repeated .CMsgSteamLearn_SnapshotProject_Request snapshot_requests = 2; + repeated .CMsgSteamLearn_Inference_Request inference_requests = 3; +} + +message CMsgSteamLearn_BatchOperation_Response { + repeated .CMsgSteamLearn_CacheData_Response cache_data_responses = 1; + repeated .CMsgSteamLearn_SnapshotProject_Response snapshot_responses = 2; + repeated .CMsgSteamLearn_Inference_Response inference_responses = 3; +} + +message CMsgSteamLearnAccessTokens { + message CacheDataAccessToken { + optional uint32 data_source_id = 1; + optional string access_token = 2; + } + + message SnapshotProjectAccessToken { + optional uint32 project_id = 1; + optional string access_token = 2; + } + + message InferenceAccessToken { + optional uint32 project_id = 1; + optional string access_token = 2; + } + + optional string register_data_source_access_token = 1; + repeated .CMsgSteamLearnAccessTokens.CacheDataAccessToken cache_data_access_tokens = 2; + repeated .CMsgSteamLearnAccessTokens.SnapshotProjectAccessToken snapshot_project_access_tokens = 3; + repeated .CMsgSteamLearnAccessTokens.InferenceAccessToken inference_access_tokens = 4; +} + +message CMsgSteamLearn_GetAccessTokens_Request { + optional uint32 appid = 1; +} + +message CMsgSteamLearn_GetAccessTokens_Response { + optional .ESteamLearnGetAccessTokensResult result = 1 [default = STEAMLEARN_GET_ACCESS_TOKENS_ERROR]; + optional .CMsgSteamLearnAccessTokens access_tokens = 2; +} + +message CMsgInferenceIterateBeamSearch { + message CustomItemScalar { + optional uint32 item = 1; + optional float scale = 2; + } + + optional uint32 beam_length = 1; + optional uint32 beam_width = 2; + optional float item_decay = 3; + optional uint32 next_item_count = 4; + repeated .CMsgInferenceIterateBeamSearch.CustomItemScalar item_scalars = 5; + optional uint32 item_sequence_end = 7; + optional float item_sequence_end_threshold = 8; + optional float repeat_multiplier = 9; +} + +message CMsgSteamLearn_Inference_Request { + optional string access_token = 1; + optional uint32 project_id = 3; + optional uint32 published_version = 4; + optional uint32 override_train_id = 5; + optional .CMsgSteamLearnDataList data = 6; + repeated float additional_data = 7; + repeated uint64 keys = 8; + optional string named_inference = 9; + optional .CMsgInferenceIterateBeamSearch iterate_beam_search = 13; + optional uint32 debug_spew = 14; +} + +message CMsgSteamLearn_InferenceMetadata_Request { + optional string access_token = 1; + optional uint32 project_id = 3; + optional uint32 published_version = 4; + optional uint32 override_train_id = 5; +} + +message CMsgSteamLearn_InferenceMetadataBackend_Request { + optional uint32 project_id = 1; + optional uint32 fetch_id = 2; +} + +message CMsgSteamLearn_InferenceMetadata_Response { + message RowRange { + optional uint64 min_row = 1; + optional uint64 max_row = 2; + } + + message Range { + optional string data_element_path = 1; + optional float min_value = 2; + optional float max_value = 3; + } + + message StdDev { + optional string data_element_path = 1; + optional float mean = 2; + optional float std_dev = 3; + } + + message CompactTable { + message Entry { + optional uint32 value = 1; + optional uint32 mapping = 2; + optional uint64 count = 3; + } + + message MapValuesEntry { + optional uint32 key = 1; + optional .CMsgSteamLearn_InferenceMetadata_Response.CompactTable.Entry value = 2; + } + + message MapMappingsEntry { + optional uint32 key = 1; + optional .CMsgSteamLearn_InferenceMetadata_Response.CompactTable.Entry value = 2; + } + + optional string name = 1; + repeated .CMsgSteamLearn_InferenceMetadata_Response.CompactTable.MapValuesEntry map_values = 2; + repeated .CMsgSteamLearn_InferenceMetadata_Response.CompactTable.MapMappingsEntry map_mappings = 3; + } + + message SequenceTable { + message Entry { + repeated uint32 values = 1; + optional uint32 crc = 2; + optional uint32 count = 3; + } + + message MapValuesEntry { + optional uint32 key = 1; + optional .CMsgSteamLearn_InferenceMetadata_Response.SequenceTable.Entry value = 2; + } + + message MapMappingsEntry { + optional string key = 1; + optional .CMsgSteamLearn_InferenceMetadata_Response.SequenceTable.Entry value = 2; + } + + optional string name = 1; + repeated .CMsgSteamLearn_InferenceMetadata_Response.SequenceTable.MapValuesEntry map_values = 2; + repeated .CMsgSteamLearn_InferenceMetadata_Response.SequenceTable.MapMappingsEntry map_mappings = 3; + optional uint64 total_count = 4; + } + + message KMeans { + message Cluster { + optional float x = 1; + optional float y = 2; + optional float radius = 3; + optional float radius_75pct = 4; + optional float radius_50pct = 5; + optional float radius_25pct = 6; + } + + optional string name = 1; + repeated .CMsgSteamLearn_InferenceMetadata_Response.KMeans.Cluster clusters = 2; + } + + message SnapshotHistogram { + optional float min_value = 1; + optional float max_value = 2; + optional uint32 num_buckets = 3; + repeated uint32 bucket_counts = 4; + } + + message AppInfo { + optional string country_allow = 1; + optional string country_deny = 2; + optional bool platform_win = 3; + optional bool platform_mac = 4; + optional bool platform_linux = 5; + optional bool adult_violence = 6; + optional bool adult_sex = 7; + } + + message AppInfoEntry { + optional uint32 key = 1; + optional .CMsgSteamLearn_InferenceMetadata_Response.AppInfo value = 2; + } + + optional .ESteamLearnInferenceMetadataResult inference_metadata_result = 1 [default = STEAMLEARN_INFERENCE_METADATA_ERROR]; + optional .CMsgSteamLearn_InferenceMetadata_Response.RowRange row_range = 2; + repeated .CMsgSteamLearn_InferenceMetadata_Response.Range ranges = 3; + repeated .CMsgSteamLearn_InferenceMetadata_Response.StdDev std_devs = 4; + repeated .CMsgSteamLearn_InferenceMetadata_Response.CompactTable compact_tables = 5; + repeated .CMsgSteamLearn_InferenceMetadata_Response.SequenceTable sequence_tables = 9; + repeated .CMsgSteamLearn_InferenceMetadata_Response.KMeans kmeans = 6; + repeated .CMsgSteamLearn_InferenceMetadata_Response.AppInfoEntry app_info = 8; + optional .CMsgSteamLearn_InferenceMetadata_Response.SnapshotHistogram snapshot_histogram = 7; +} + +message CMsgSteamLearn_InferenceBackend_Response { + message Sequence { + repeated float value = 1; + } + + message RegressionOutput { + optional float value = 2; + } + + message NamedInferenceOutput { + repeated float value = 3; + } + + message BinaryCrossEntropyOutput { + optional float value = 1; + } + + message MutliBinaryCrossEntropyOutput { + repeated float weight = 1; + repeated float value = 2; + repeated .CMsgSteamLearn_InferenceBackend_Response.Sequence value_sequence = 3; + } + + message CategoricalCrossEntropyOutput { + repeated float weight = 1; + repeated float value = 2; + repeated .CMsgSteamLearn_InferenceBackend_Response.Sequence value_sequence = 3; + } + + message Output { + oneof ResponseType { + .CMsgSteamLearn_InferenceBackend_Response.BinaryCrossEntropyOutput binary_crossentropy = 1; + .CMsgSteamLearn_InferenceBackend_Response.CategoricalCrossEntropyOutput categorical_crossentropy = 2; + .CMsgSteamLearn_InferenceBackend_Response.MutliBinaryCrossEntropyOutput multi_binary_crossentropy = 3; + .CMsgSteamLearn_InferenceBackend_Response.RegressionOutput regression = 4; + .CMsgSteamLearn_InferenceBackend_Response.NamedInferenceOutput named_inference = 5; + } + } + + repeated .CMsgSteamLearn_InferenceBackend_Response.Output outputs = 1; +} + +message CMsgSteamLearn_Inference_Response { + optional .ESteamLearnInferenceResult inference_result = 1 [default = STEAMLEARN_INFERENCE_ERROR]; + optional .CMsgSteamLearn_InferenceBackend_Response backend_response = 2; + repeated uint64 keys = 3; +} + +service SteamLearn { + option (service_description) = "Service for submitting data, training, and inferencing with SteamLearn."; + + rpc RegisterDataSource (.CMsgSteamLearn_RegisterDataSource_Request) returns (.CMsgSteamLearn_RegisterDataSource_Response) { + option (method_description) = "Registers a data desc (or finds a data desc if it's already registered)."; + } + + rpc CacheData (.CMsgSteamLearn_CacheData_Request) returns (.CMsgSteamLearn_CacheData_Response) { + option (method_description) = "Updates a cached data entry."; + } + + rpc SnapshotProject (.CMsgSteamLearn_SnapshotProject_Request) returns (.CMsgSteamLearn_SnapshotProject_Response) { + option (method_description) = "Snapshots the current data for a project."; + } + + rpc BatchOperation (.CMsgSteamLearn_BatchOperation_Request) returns (.CMsgSteamLearn_BatchOperation_Response) { + option (method_description) = "Batches multiple data updates, snapshots, and inference requests into a single call"; + } + + rpc GetAccessTokens (.CMsgSteamLearn_GetAccessTokens_Request) returns (.CMsgSteamLearn_GetAccessTokens_Response) { + option (method_description) = "Gets the access tokens needed for registering data sources, submitting data to them, and snapshotting projects"; + } + + rpc Inference (.CMsgSteamLearn_Inference_Request) returns (.CMsgSteamLearn_Inference_Response) { + option (method_description) = "Inferences using supplied data, or data associated with the specified key."; + } + + rpc InferenceMetadata (.CMsgSteamLearn_InferenceMetadata_Request) returns (.CMsgSteamLearn_InferenceMetadata_Response) { + option (method_description) = "Requests the metadata that was generated from a specified fetch."; + } +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/steammessages_unified_base.steamworkssdk.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/steammessages_unified_base.steamworkssdk.proto new file mode 100644 index 00000000..b742b756 --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/steammessages_unified_base.steamworkssdk.proto @@ -0,0 +1,32 @@ +import "google/protobuf/descriptor.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +extend .google.protobuf.FieldOptions { + optional string description = 50000; +} + +extend .google.protobuf.ServiceOptions { + optional string service_description = 50000; + optional .EProtoExecutionSite service_execution_site = 50008 [default = k_EProtoExecutionSiteUnknown]; +} + +extend .google.protobuf.MethodOptions { + optional string method_description = 50000; +} + +extend .google.protobuf.EnumOptions { + optional string enum_description = 50000; +} + +extend .google.protobuf.EnumValueOptions { + optional string enum_value_description = 50000; +} + +enum EProtoExecutionSite { + k_EProtoExecutionSiteUnknown = 0; + k_EProtoExecutionSiteSteamClient = 3; +} diff --git a/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/valveextensions.proto b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/valveextensions.proto new file mode 100644 index 00000000..d4f9445a --- /dev/null +++ b/javasteam-dota2/src/main/proto/in/dragonbra/javasteam/protobufs/dota2/valveextensions.proto @@ -0,0 +1,31 @@ +import "google/protobuf/descriptor.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.dota2"; + +option optimize_for = SPEED; +option java_generic_services = false; + +extend .google.protobuf.FieldOptions { + optional bool valve_map_field = 61000 [default = false]; + optional bool valve_map_key = 61001 [default = false]; + optional int32 diff_encode_field = 61002 [default = 0]; + optional bool delta_ignore = 61003 [default = false]; + optional uint32 steamml_max_entries = 61004 [default = 0]; + optional bool steamml_is_timestamp = 61005 [default = false]; + optional uint32 steamlearn_count = 61006 [default = 0]; + optional .EProtoDebugVisiblity debugprint_visibility = 61007 [default = k_EProtoDebugVisibility_Always]; +} + +extend .google.protobuf.EnumValueOptions { + optional string schema_friendly_name = 1000; + optional string schema_description = 1001; + optional bool schema_suppress_enumerator = 1002; +} + +enum EProtoDebugVisiblity { + k_EProtoDebugVisibility_Always = 0; + k_EProtoDebugVisibility_Server = 70; + k_EProtoDebugVisibility_ValveServer = 80; + k_EProtoDebugVisibility_GC = 90; + k_EProtoDebugVisibility_Never = 100; +} diff --git a/settings.gradle.kts b/settings.gradle.kts index a01d0337..1dc5b8bc 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,6 +1,6 @@ rootProject.name = "javasteam" include(":javasteam-samples") -include(":javasteam-tf") include(":javasteam-cs") - -include("javasteam-deadlock") \ No newline at end of file +include(":javasteam-tf") +include("javasteam-deadlock") +include("javasteam-dota2")