Files
csdemo/Protobufs/dota2/dota_match_metadata.proto
2024-09-15 05:09:15 +02:00

354 lines
12 KiB
Protocol Buffer

import "base_gcmessages.proto";
import "dota_gcmessages_common_match_management.proto";
import "dota_gcmessages_common_lobby.proto";
import "dota_gcmessages_common_overworld.proto";
import "dota_gcmessages_common.proto";
import "dota_shared_enums.proto";
import "gcsdk_gcmessages.proto";
message CDOTAMatchMetadataFile {
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];
}
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 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;
}
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;
}
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;
}
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;
}