From c217c409b97a647597ff67739bde2846864ea1c0 Mon Sep 17 00:00:00 2001 From: Igor-Losev <17256382+Igor-Losev@users.noreply.github.com> Date: Wed, 1 Jul 2026 10:02:35 +0000 Subject: [PATCH] =?UTF-8?q?Proto=20Synchronization=20=E2=80=94=20dota2=20(?= =?UTF-8?q?Auto)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/dota2/proto/compiled/proto.json | 35 +++++++++- .../proto/source/dota_shared_enums.proto | 68 ++----------------- .../proto/source/dota_usermessages.proto | 1 + packages/dota2/proto/source/events.proto | 62 +++++++++++++++++ packages/dota2/proto/source/gameevents.proto | 1 + packages/dota2/proto/source/netmessages.proto | 4 +- .../dota2/proto/source/networkbasetypes.proto | 13 ++++ .../proto/source/source2_steam_stats.proto | 12 ++++ .../dota2/proto/source/usermessages.proto | 28 ++------ .../dota2/proto/source/valveextensions.proto | 31 +++++++++ 10 files changed, 169 insertions(+), 86 deletions(-) create mode 100644 packages/dota2/proto/source/events.proto create mode 100644 packages/dota2/proto/source/valveextensions.proto diff --git a/packages/dota2/proto/compiled/proto.json b/packages/dota2/proto/compiled/proto.json index 3976db12..5b0b87c9 100644 --- a/packages/dota2/proto/compiled/proto.json +++ b/packages/dota2/proto/compiled/proto.json @@ -816,6 +816,9 @@ }, "CMsgVector": { "edition": "proto2", + "options": { + "(codegen_delta_encoder)": true + }, "fields": { "x": { "type": "float", @@ -837,6 +840,9 @@ }, "CMsgVector2D": { "edition": "proto2", + "options": { + "(codegen_delta_encoder)": true + }, "fields": { "x": { "type": "float", @@ -850,6 +856,9 @@ }, "CMsgQAngle": { "edition": "proto2", + "options": { + "(codegen_delta_encoder)": true + }, "fields": { "x": { "type": "float", @@ -867,6 +876,9 @@ }, "CMsgQuaternion": { "edition": "proto2", + "options": { + "(codegen_delta_encoder)": true + }, "fields": { "x": { "type": "float", @@ -1953,7 +1965,8 @@ "CHAT_MESSAGE_CRAFTING_XP": 122, "CHAT_MESSAGE_ROSHAN_ROAR": 123, "CHAT_MESSAGE_STONE_OF_RECALL_USED": 124, - "CHAT_MESSAGE_DEITY_BLESSING": 125 + "CHAT_MESSAGE_DEITY_BLESSING": 125, + "CHAT_MESSAGE_SMOKE_ACTIVATED": 126 } }, "DOTA_ABILITY_PING_TYPE": { @@ -6998,6 +7011,11 @@ "type": ".CMsgVector", "id": 14, "protoName": "position_objectspace" + }, + "normalObjectspace": { + "type": ".CMsgVector", + "id": 15, + "protoName": "normal_objectspace" } } }, @@ -7655,9 +7673,10 @@ "type": ".CMsgVoiceAudio", "id": 1 }, - "client": { + "clientDeprecated": { "type": "int32", "id": 2, + "protoName": "client_deprecated", "options": { "default": -1 } @@ -7682,6 +7701,13 @@ "passthrough": { "type": "int32", "id": 7 + }, + "entity": { + "type": "int32", + "id": 8, + "options": { + "default": -1 + } } } }, @@ -7875,6 +7901,11 @@ "type": "int32", "id": 5, "protoName": "client_tick" + }, + "deltaData": { + "type": "bytes", + "id": 6, + "protoName": "delta_data" } } }, diff --git a/packages/dota2/proto/source/dota_shared_enums.proto b/packages/dota2/proto/source/dota_shared_enums.proto index 0a1cbe72..505275d6 100644 --- a/packages/dota2/proto/source/dota_shared_enums.proto +++ b/packages/dota2/proto/source/dota_shared_enums.proto @@ -1,3 +1,5 @@ +import public "events.proto"; + enum DOTA_GameMode { DOTA_GAMEMODE_NONE = 0; DOTA_GAMEMODE_AP = 1; @@ -63,67 +65,6 @@ enum DOTA_GC_TEAM { 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; - EVENT_ID_SPRING_2026 = 56; - EVENT_ID_SUMMER_2026 = 57; - EVENT_ID_FALL_2026 = 58; - EVENT_ID_WINTER_2026 = 59; -} - enum ERankType { k_ERankType_Invalid = 0; k_ERankType_Casual = 1; @@ -520,6 +461,11 @@ enum EBadgeType { k_EBadgeType_TI14_FinalsDay3 = 24; k_EBadgeType_TI14_FinalsDay4 = 25; k_EBadgeType_TI14_Special = 26; + k_EBadgeType_TI15_FinalsDay1 = 27; + k_EBadgeType_TI15_FinalsDay2 = 28; + k_EBadgeType_TI15_FinalsDay3 = 29; + k_EBadgeType_TI15_FinalsDay4 = 30; + k_EBadgeType_TI15_Special = 31; } enum ELeagueStatus { diff --git a/packages/dota2/proto/source/dota_usermessages.proto b/packages/dota2/proto/source/dota_usermessages.proto index a742d571..62fce4d0 100644 --- a/packages/dota2/proto/source/dota_usermessages.proto +++ b/packages/dota2/proto/source/dota_usermessages.proto @@ -292,6 +292,7 @@ enum DOTA_CHAT_MESSAGE { CHAT_MESSAGE_ROSHAN_ROAR = 123; CHAT_MESSAGE_STONE_OF_RECALL_USED = 124; CHAT_MESSAGE_DEITY_BLESSING = 125; + CHAT_MESSAGE_SMOKE_ACTIVATED = 126; } enum DOTA_NO_BATTLE_POINTS_REASONS { diff --git a/packages/dota2/proto/source/events.proto b/packages/dota2/proto/source/events.proto new file mode 100644 index 00000000..54422f8f --- /dev/null +++ b/packages/dota2/proto/source/events.proto @@ -0,0 +1,62 @@ +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_DARK_CARNIVAL = 54; + EVENT_ID_WINTER_2025 = 55; + EVENT_ID_SPRING_2026 = 56; + EVENT_ID_SUMMER_2026 = 57; + EVENT_ID_FALL_2026 = 58; + EVENT_ID_WINTER_2026 = 59; + EVENT_ID_INTERNATIONAL_2026 = 60; +} diff --git a/packages/dota2/proto/source/gameevents.proto b/packages/dota2/proto/source/gameevents.proto index 31b7b042..952341ce 100644 --- a/packages/dota2/proto/source/gameevents.proto +++ b/packages/dota2/proto/source/gameevents.proto @@ -38,6 +38,7 @@ message CMsgPlaceDecalEvent { optional uint64 material_id = 11; optional uint32 sequence_name = 12; optional .CMsgVector position_objectspace = 14; + optional .CMsgVector normal_objectspace = 15; } message CMsgClearWorldDecalsEvent { diff --git a/packages/dota2/proto/source/netmessages.proto b/packages/dota2/proto/source/netmessages.proto index a64c255f..7bee69e2 100644 --- a/packages/dota2/proto/source/netmessages.proto +++ b/packages/dota2/proto/source/netmessages.proto @@ -427,12 +427,13 @@ message CSVCMsg_UpdateStringTable { message CSVCMsg_VoiceData { optional .CMsgVoiceAudio audio = 1; - optional int32 client = 2 [default = -1]; + optional int32 client_deprecated = 2 [default = -1]; optional bool proximity = 3; optional fixed64 xuid = 4; optional int32 audible_mask = 5; optional uint32 tick = 6; optional int32 passthrough = 7; + optional int32 entity = 8 [default = -1]; } message CSVCMsg_PacketReliable { @@ -641,6 +642,7 @@ message CMsgServerUserCmd { optional int32 player_slot = 3 [default = -1]; optional int32 server_tick_executed = 4; optional int32 client_tick = 5; + optional bytes delta_data = 6; } message CSVCMsg_UserCommands { diff --git a/packages/dota2/proto/source/networkbasetypes.proto b/packages/dota2/proto/source/networkbasetypes.proto index a4e2d72a..d728f00c 100644 --- a/packages/dota2/proto/source/networkbasetypes.proto +++ b/packages/dota2/proto/source/networkbasetypes.proto @@ -1,3 +1,4 @@ +import "valveextensions.proto"; import "google/protobuf/descriptor.proto"; import "network_connection.proto"; @@ -44,6 +45,8 @@ enum SpawnGroupFlags_t { } message CMsgVector { + option (codegen_delta_encoder) = true; + optional float x = 1; optional float y = 2; optional float z = 3; @@ -51,17 +54,23 @@ message CMsgVector { } message CMsgVector2D { + option (codegen_delta_encoder) = true; + optional float x = 1; optional float y = 2; } message CMsgQAngle { + option (codegen_delta_encoder) = true; + optional float x = 1; optional float y = 2; optional float z = 3; } message CMsgQuaternion { + option (codegen_delta_encoder) = true; + optional float x = 1; optional float y = 2; optional float z = 3; @@ -69,12 +78,16 @@ message CMsgQuaternion { } message CMsgTransform { + option (codegen_delta_encoder) = true; + optional .CMsgVector position = 1; optional float scale = 2; optional .CMsgQuaternion orientation = 3; } message CMsgRGBA { + option (codegen_delta_encoder) = true; + optional int32 r = 1; optional int32 g = 2; optional int32 b = 3; diff --git a/packages/dota2/proto/source/source2_steam_stats.proto b/packages/dota2/proto/source/source2_steam_stats.proto index fdaa6c2b..47c4bacc 100644 --- a/packages/dota2/proto/source/source2_steam_stats.proto +++ b/packages/dota2/proto/source/source2_steam_stats.proto @@ -16,6 +16,7 @@ enum ESource2PlayStatsFieldType { Source2PlayStats_UTCDateTime = 14; Source2PlayStats_SteamIDTrustBucket = 15; Source2PlayStats_SteamIDTrustBucketMin = 16; + Source2PlayStats_SteamID = 17; } message CMsgSource2SystemSpecs { @@ -172,6 +173,7 @@ message CMsgSource2PlayStatsPackedRecordList { repeated fixed32 utcdatetime_vals = 17 [packed = true]; repeated fixed64 steamidtrustbucket_vals = 18 [packed = true]; repeated .CMsgSource2PlayStatsPackedRecordList.SteamIDList trustbucket_vals = 19; + repeated uint64 steamid_vals = 20 [packed = true]; } message CSource2Metrics_RecordPlayStats_Notification { @@ -197,3 +199,13 @@ message CSource2Metrics_FetchMapData_Response { repeated .CSource2Metrics_FetchMapData_Response.MapData results = 1; } + +message CUserMessage_UserSentBugBug { + optional string command_line = 1; + optional string autoexec_cfg = 2; + optional .CMsgSource2SystemSpecs system_specs = 3; + optional uint32 build_id = 4; + optional int32 osversion = 5; + optional string command_logs = 6; + optional int32 bugbug_no = 7; +} diff --git a/packages/dota2/proto/source/usermessages.proto b/packages/dota2/proto/source/usermessages.proto index 4fb81d28..8119ae44 100644 --- a/packages/dota2/proto/source/usermessages.proto +++ b/packages/dota2/proto/source/usermessages.proto @@ -2,8 +2,6 @@ import "networkbasetypes.proto"; enum EBaseUserMessages { UM_AchievementEvent = 101; - UM_CloseCaption = 102; - UM_CloseCaptionDirect = 103; UM_CurrentTimescale = 104; UM_DesiredTimescale = 105; UM_Fade = 106; @@ -51,13 +49,14 @@ enum EBaseUserMessages { UM_ExtraUserData = 164; UM_NotifyResponseFound = 165; UM_PlayResponseConditional = 166; + UM_UserSentBugBug = 167; + UM_UsageReport = 168; UM_MAX_BASE = 200; } enum EBaseEntityMessages { EM_PlayJingle = 136; EM_ScreenOverlay = 137; - EM_RemoveAllDecals = 138; EM_PropagateForce = 139; EM_DoSpark = 140; EM_FixAngle = 141; @@ -126,20 +125,6 @@ message CUserMessageAchievementEvent { optional uint32 achievement = 1; } -message CUserMessageCloseCaption { - optional fixed32 hash = 1; - optional float duration = 2; - optional bool from_player = 3; - optional int32 ent_index = 4 [default = -1]; -} - -message CUserMessageCloseCaptionDirect { - optional fixed32 hash = 1; - optional float duration = 2; - optional bool from_player = 3; - optional int32 ent_index = 4 [default = -1]; -} - message CUserMessageCloseCaptionPlaceholder { optional string string = 1; optional float duration = 2; @@ -304,11 +289,6 @@ message CEntityMessageScreenOverlay { optional .CEntityMsg entity_msg = 2; } -message CEntityMessageRemoveAllDecals { - optional bool remove_decals = 1; - optional .CEntityMsg entity_msg = 2; -} - message CEntityMessagePropagateForce { optional .CMsgVector impulse = 1; optional .CEntityMsg entity_msg = 2; @@ -871,3 +851,7 @@ message CUserMessage_PlayResponseConditional { optional float pre_delay = 5; optional int32 mix_priority = 6; } + +message CUserMessage_UsageReport { + optional string usage = 1; +} diff --git a/packages/dota2/proto/source/valveextensions.proto b/packages/dota2/proto/source/valveextensions.proto new file mode 100644 index 00000000..6df99fee --- /dev/null +++ b/packages/dota2/proto/source/valveextensions.proto @@ -0,0 +1,31 @@ +import "google/protobuf/descriptor.proto"; + +extend .google.protobuf.MessageOptions { + optional bool codegen_delta_encoder = 61000 [default = 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 int32 untrusted_delta_max = 61008 [default = 256]; + 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; +}