initial import from steam-vent repo

This commit is contained in:
Robin Appelman 2025-09-07 17:22:53 +02:00
commit ad1ab4bf54
44 changed files with 168123 additions and 0 deletions

1
.envrc Normal file
View file

@ -0,0 +1 @@
use flake

31
.forgejo/workflows/ci.yml Normal file
View file

@ -0,0 +1,31 @@
name: "CI"
on:
pull_request:
push:
jobs:
check-proto:
runs-on: nix
steps:
- uses: actions/checkout@v4
- uses: https://codeberg.org/icewind/attic-action@v1
with:
name: ci
instance: https://cache.icewind.me
authToken: "${{ secrets.ATTIC_TOKEN }}"
- run: |
nix run .#proto-builder protos src/generated
- run: |
git diff
git diff-index --quiet HEAD --
checks:
runs-on: nix
steps:
- uses: actions/checkout@v4
- uses: https://codeberg.org/icewind/attic-action@v1
with:
name: link
instance: https://cache.icewind.link
authToken: "${{ secrets.ATTIC_TOKEN }}"
- run: nix flake check --keep-going

4
.gitignore vendored Normal file
View file

@ -0,0 +1,4 @@
target
.direnv
result
*.log

107
Cargo.lock generated Normal file
View file

@ -0,0 +1,107 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "bytes"
version = "1.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
[[package]]
name = "once_cell"
version = "1.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
[[package]]
name = "proc-macro2"
version = "1.0.101"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de"
dependencies = [
"unicode-ident",
]
[[package]]
name = "protobuf"
version = "3.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0bcc343da15609eaecd65f8aa76df8dc4209d325131d8219358c0aaaebab0bf6"
dependencies = [
"bytes",
"once_cell",
"protobuf-support",
"thiserror",
]
[[package]]
name = "protobuf-support"
version = "3.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0766e3675a627c327e4b3964582594b0e8741305d628a98a5de75a1d15f99b9"
dependencies = [
"thiserror",
]
[[package]]
name = "quote"
version = "1.0.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
dependencies = [
"proc-macro2",
]
[[package]]
name = "steam-vent-proto-common"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e0bdee4d988ea702f32e5f098f9cded0e0999b04230de3c37d54bf94b3f6fb86"
dependencies = [
"protobuf",
]
[[package]]
name = "steam-vent-proto-tf2"
version = "0.5.0"
dependencies = [
"steam-vent-proto-common",
]
[[package]]
name = "syn"
version = "2.0.106"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
name = "thiserror"
version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "unicode-ident"
version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"

12
Cargo.toml Normal file
View file

@ -0,0 +1,12 @@
[package]
name = "steam-vent-proto-tf2"
version = "0.5.0"
edition = "2021"
rust-version = "1.75.0"
description = "Protobuf structs used by the Steam client protocol"
authors = ["Robin Appelman <robin@icewind.nl>"]
license = "MIT"
repository = "https://codeberg.org/steam-vent/proto-tf2"
[dependencies]
steam-vent-proto-common = "0.5.0"

3
README.md Normal file
View file

@ -0,0 +1,3 @@
# steam-vent-proto-tf2
Protobufs for steam-vent for tf2 specific messages

134
flake.lock generated Normal file
View file

@ -0,0 +1,134 @@
{
"nodes": {
"crane": {
"locked": {
"lastModified": 1756705356,
"narHash": "sha256-dpBFe8SqYKr7W6KN5QOVCr8N76SBKwTslzjw+4BVBVs=",
"owner": "ipetkov",
"repo": "crane",
"rev": "305707bbc27d83aa1039378e91d7dd816f4cac10",
"type": "github"
},
"original": {
"owner": "ipetkov",
"repo": "crane",
"type": "github"
}
},
"flakelight": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1756730985,
"narHash": "sha256-Uv5lLUZfFxQv6RHi1TqLTKso0j0eUVMQQwud29LTV/s=",
"owner": "nix-community",
"repo": "flakelight",
"rev": "950121d809b75c32e73684b32ccba8d4e8a67703",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "flakelight",
"type": "github"
}
},
"mill-scale": {
"inputs": {
"crane": "crane",
"flakelight": [
"flakelight"
],
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1757104647,
"narHash": "sha256-Xd/Y6fmBPvmsluVFSlwKvCBErNWAE+etJ5rOmDA6rPo=",
"ref": "refs/heads/main",
"rev": "15c993e6bd77956f4e0b236bb1bef4010d6594eb",
"revCount": 61,
"type": "git",
"url": "https://codeberg.org/icewind/mill-scale.git"
},
"original": {
"type": "git",
"url": "https://codeberg.org/icewind/mill-scale.git"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1757020766,
"narHash": "sha256-PLoSjHRa2bUbi1x9HoXgTx2AiuzNXs54c8omhadyvp0=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "fe83bbdde2ccdc2cb9573aa846abe8363f79a97a",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixos-25.05",
"type": "indirect"
}
},
"root": {
"inputs": {
"flakelight": "flakelight",
"mill-scale": "mill-scale",
"nixpkgs": "nixpkgs",
"steam-vent": "steam-vent"
}
},
"rust-overlay": {
"inputs": {
"nixpkgs": [
"mill-scale",
"flakelight",
"nixpkgs"
]
},
"locked": {
"lastModified": 1757039615,
"narHash": "sha256-qm53+EUFfzyF8F0MEscHGqf9tx462GV3/zUZrn9wiQU=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "4486e04adbb4b0e39f593767f2c36e2211003d01",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"steam-vent": {
"inputs": {
"flakelight": [
"flakelight"
],
"mill-scale": [
"mill-scale"
],
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1757192559,
"narHash": "sha256-6hkW2wRJ74uCIHlA7wXsSyiGVnZVYUsQJJvZ2HmH6iQ=",
"ref": "refs/heads/main",
"rev": "c03aa0f82cd4a4bccd55de13696f8fd9bffaf2bb",
"revCount": 210,
"type": "git",
"url": "https://codeberg.org/steam-vent/steam-vent.git"
},
"original": {
"type": "git",
"url": "https://codeberg.org/steam-vent/steam-vent.git"
}
}
},
"root": "root",
"version": 7
}

34
flake.nix Normal file
View file

@ -0,0 +1,34 @@
{
inputs = {
nixpkgs.url = "nixpkgs/nixos-25.05";
flakelight = {
url = "github:nix-community/flakelight";
inputs.nixpkgs.follows = "nixpkgs";
};
mill-scale = {
url = "git+https://codeberg.org/icewind/mill-scale.git";
inputs.flakelight.follows = "flakelight";
};
steam-vent = {
url = "git+https://codeberg.org/steam-vent/steam-vent.git";
inputs.nixpkgs.follows = "nixpkgs";
inputs.flakelight.follows = "flakelight";
inputs.mill-scale.follows = "mill-scale";
};
};
outputs = {
mill-scale,
steam-vent,
...
}:
mill-scale ./. {
packages = {
proto-builder = {craneLib, ...}:
craneLib.buildPackage {
src = craneLib.cleanCargoSource (steam-vent + "/protobuf/build");
doCheck = false;
strictDeps = true;
};
};
};
}

View file

@ -0,0 +1,561 @@
import "steammessages.proto";
option optimize_for = SPEED;
option cc_generic_services = false;
enum EGCBaseMsg {
k_EMsgGCSystemMessage = 4001;
k_EMsgGCReplicateConVars = 4002;
k_EMsgGCConVarUpdated = 4003;
k_EMsgGCServerAvailable = 4506;
k_EMsgGCClientConnectToServer = 4507;
k_EMsgGCGameServerInfo = 4508;
k_EMsgGCError = 4509;
k_EMsgGCReplay_UploadedToYouTube = 4510;
k_EMsgGCLANServerAvailable = 4511;
}
enum EGCBaseProtoObjectTypes {
k_EProtoObjectPartyInvite = 1001;
k_EProtoObjectLobbyInvite = 1002;
}
enum GCGoodbyeReason {
GCGoodbyeReason_GC_GOING_DOWN = 1;
GCGoodbyeReason_NO_SESSION = 2;
}
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;
}
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 CMsgSystemBroadcast {
optional string message = 1;
}
message CMsgClientHello {
optional uint32 version = 1;
}
message CMsgServerHello {
optional uint32 version = 1;
}
message CMsgClientWelcome {
optional uint32 version = 1;
optional bytes game_data = 2;
optional string txn_country_code = 3;
}
message CMsgServerWelcome {
optional uint32 min_allowed_version = 1;
optional uint32 active_version = 2;
}
message CMsgClientGoodbye {
optional .GCGoodbyeReason reason = 1 [default = GCGoodbyeReason_GC_GOING_DOWN];
}
message CMsgServerGoodbye {
optional .GCGoodbyeReason reason = 1 [default = GCGoodbyeReason_GC_GOING_DOWN];
}
message CMsgServerAvailable {
}
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 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 uint32 preview_item_def = 8 [default = 0];
optional bool phone_verified = 19 [default = false];
optional uint32 skill_rating_6v6 = 20;
optional uint32 skill_rating_9v9 = 21;
optional bool competitive_access = 23 [default = false];
optional uint32 matchmaking_ranked_ban_expiration = 18;
optional uint32 matchmaking_ranked_low_priority_expiration = 24;
optional uint32 matchmaking_ranked_ban_last_duration = 25;
optional uint32 matchmaking_ranked_low_priority_last_duration = 26;
optional uint32 matchmaking_casual_ban_expiration = 27;
optional uint32 matchmaking_casual_low_priority_expiration = 28;
optional uint32 matchmaking_casual_ban_last_duration = 29;
optional uint32 matchmaking_casual_low_priority_last_duration = 30;
optional bool phone_identifying = 31 [default = false];
optional bool disable_party_quest_progress = 32 [default = false];
optional uint32 quest_reward_credits = 33;
optional uint32 matchmaking_last_casual_excessive_reports_auto_ban_time = 34;
optional uint32 matchmaking_last_comp_excessive_reports_auto_ban_time = 35;
}
message CSOItemCriteriaCondition {
optional int32 op = 1;
optional string field = 2;
optional bool required = 3;
optional float float_value = 4;
optional string string_value = 5;
}
message CSOItemCriteria {
optional uint32 item_level = 1;
optional int32 item_quality = 2;
optional bool item_level_set = 3;
optional bool item_quality_set = 4;
optional uint32 initial_inventory = 5;
optional uint32 initial_quantity = 6;
optional bool ignore_enabled_flag = 8;
repeated .CSOItemCriteriaCondition conditions = 9;
optional bool recent_only = 10;
optional string tags = 11;
optional string equip_regions = 12;
}
message CSOItemRecipe {
optional uint32 def_index = 1;
optional string name = 2;
optional string n_a = 3;
optional string desc_inputs = 4;
optional string desc_outputs = 5;
optional string di_a = 6;
optional string di_b = 7;
optional string di_c = 8;
optional string do_a = 9;
optional string do_b = 10;
optional string do_c = 11;
optional bool requires_all_same_class = 12;
optional bool requires_all_same_slot = 13;
optional int32 class_usage_for_output = 14;
optional int32 slot_usage_for_output = 15;
optional int32 set_for_output = 16;
repeated .CSOItemCriteria input_items_criteria = 20;
repeated .CSOItemCriteria output_items_criteria = 21;
repeated uint32 input_item_dupe_counts = 22;
}
message CMsgDevNewItemRequest {
optional fixed64 receiver = 1;
optional .CSOItemCriteria criteria = 2;
}
message CMsgDevDebugRollLootRequest {
optional fixed64 receiver = 1;
optional string loot_list_name = 2;
}
message CMsgIncrementKillCountAttribute {
optional uint64 killer_steam_id = 1;
optional uint64 victim_steam_id = 2;
optional uint64 item_id = 3;
optional uint32 event_type = 4;
optional uint32 increment_value = 5;
}
message CMsgIncrementKillCountAttribute_Multiple {
repeated .CMsgIncrementKillCountAttribute msgs = 1;
}
message CMsgTrackUniquePlayerPairEvent {
optional uint64 killer_steam_id = 1;
optional uint64 victim_steam_id = 2;
optional uint64 item_id = 3;
optional uint32 event_type = 4;
}
message CMsgApplyStrangeCountTransfer {
optional uint64 tool_item_id = 1;
optional uint64 item_src_item_id = 2;
optional uint64 item_dest_item_id = 3;
}
message CMsgApplyStrangePart {
optional uint64 strange_part_item_id = 1;
optional uint64 item_item_id = 2;
}
message CMsgApplyStrangeRestriction {
optional uint64 strange_part_item_id = 1;
optional uint64 item_item_id = 2;
optional uint32 strange_attr_index = 3;
}
message CMsgApplyUpgradeCard {
optional uint64 upgrade_card_item_id = 1;
optional uint64 subject_item_id = 2;
}
message CSOEconItemAttribute {
optional uint32 def_index = 1;
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;
optional uint32 level = 6;
optional uint32 quality = 7;
optional uint32 flags = 8 [default = 0];
optional uint32 origin = 9;
optional string custom_name = 10;
optional string custom_desc = 11;
repeated .CSOEconItemAttribute attribute = 12;
optional .CSOEconItem interior_item = 13;
optional bool in_use = 14 [default = false];
optional uint32 style = 15 [default = 0];
optional uint64 original_id = 16 [default = 0];
optional bool contains_equipped_state = 17;
repeated .CSOEconItemEquipped equipped_state = 18;
optional bool contains_equipped_state_v2 = 19;
}
message CMsgAdjustItemEquippedState {
optional uint64 item_id = 1;
optional uint32 new_class = 2;
optional uint32 new_slot = 3;
}
message CMsgSortItems {
optional uint32 sort_type = 1;
}
message CSOEconClaimCode {
optional uint32 account_id = 1;
optional uint32 code_type = 2;
optional uint32 time_acquired = 3;
optional string code = 4;
}
message CMsgStoreGetUserData {
optional fixed32 price_sheet_version = 1;
}
message CMsgStoreGetUserDataResponse {
optional int32 result = 1;
optional int32 currency = 2;
optional string country = 3;
optional fixed32 price_sheet_version = 4;
optional uint64 experiment_data = 5 [default = 0];
optional int32 featured_item_idx = 6;
optional bool show_hat_descriptions = 7 [default = true];
optional bytes price_sheet = 8;
optional int32 default_item_sort = 9 [default = 0];
repeated uint32 popular_items = 10;
}
message CMsgUpdateItemSchema {
optional bytes items_game = 1;
optional fixed32 item_schema_version = 2;
optional string items_game_url = 3;
optional bytes signature = 4;
}
message CMsgGCError {
optional string error_text = 1;
}
message CMsgRequestInventoryRefresh {
}
message CMsgConVarValue {
optional string name = 1;
optional string value = 2;
}
message CMsgReplicateConVars {
repeated .CMsgConVarValue convars = 1;
}
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 fixed64 initiator_steam_id = 5;
optional bool itempack__ack_immediately = 6;
}
message CMsgReplayUploadedToYouTube {
optional string youtube_url = 1;
optional string youtube_account_name = 2;
optional uint64 session_id = 3;
}
message CMsgConsumableExhausted {
optional int32 item_def_id = 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;
optional uint32 is_strange = 7;
optional uint32 is_unusual = 8;
optional float wear = 9;
}
message CMsgSetPresetItemPosition {
optional uint32 class_id = 1;
optional uint32 preset_id = 2;
optional uint32 slot_id = 3;
optional uint64 item_id = 4;
}
message CMsgSetItemPositions {
message ItemPosition {
optional uint64 item_id = 1;
optional uint32 position = 2;
}
repeated .CMsgSetItemPositions.ItemPosition item_positions = 1;
}
message CSOEconItemPresetInstance {
optional uint32 class_id = 2 [(key_field) = true];
optional uint32 preset_id = 3 [(key_field) = true];
optional uint32 slot_id = 4 [(key_field) = true];
optional uint64 item_id = 5;
}
message CMsgSelectPresetForClass {
optional uint32 class_id = 1;
optional uint32 preset_id = 2;
}
message CSOClassPresetClientData {
optional uint32 account_id = 1;
optional uint32 class_id = 2;
optional uint32 active_preset_id = 3;
}
message CMsgGCReportAbuse {
optional fixed64 target_steam_id = 1;
optional string description = 4;
optional uint64 gid = 5;
optional uint32 abuse_type = 2;
optional uint32 content_type = 3;
optional fixed32 target_game_server_ip = 6;
optional uint32 target_game_server_port = 7;
}
message CMsgGCReportAbuseResponse {
optional fixed64 target_steam_id = 1;
optional uint32 result = 2;
optional string error_message = 3;
}
message CMsgGCNameItemNotification {
optional fixed64 player_steamid = 1;
optional uint32 item_def_index = 2;
optional string item_name_custom = 3;
}
message CMsgGCClientDisplayNotification {
optional string notification_title_localization_key = 1;
optional string notification_body_localization_key = 2;
repeated string body_substring_keys = 3;
repeated string body_substring_values = 4;
}
message CMsgGCShowItemsPickedUp {
optional fixed64 player_steamid = 1;
}
message CMsgUpdatePeriodicEvent {
optional uint32 account_id = 1;
optional uint32 event_type = 2;
optional uint32 amount = 3;
}
message CMsgGCIncrementKillCountResponse {
optional uint32 killer_account_id = 1 [(key_field) = true];
optional uint32 num_kills = 2;
optional uint32 item_def = 3;
optional uint32 level_type = 4;
}
message CMsgGCRemoveStrangePart {
optional uint64 item_id = 1;
optional uint32 strange_part_score_type = 2;
}
message CMsgGCRemoveUpgradeCard {
optional uint64 item_id = 1;
optional uint32 attribute_index = 2;
}
message CMsgGCRemoveCustomizationAttributeSimple {
optional uint64 item_id = 1;
}
message CMsgGCResetStrangeScores {
optional uint64 item_id = 1;
}
message CMsgGCItemPreviewItemBoughtNotification {
optional uint32 item_def_index = 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 CMsgGCBannedWordListRequest {
optional uint32 ban_list_group_id = 1;
optional uint32 word_id = 2;
}
message CMsgGCGiftedItems {
optional uint64 gifter_steam_id = 1;
optional bool was_random_person = 2;
repeated uint32 recipient_account_ids = 3;
}
message CMsgGCCollectItem {
optional uint64 collection_item_id = 1;
optional uint64 subject_item_id = 2;
}
message CMsgGCClientMarketDataRequest {
optional uint32 user_currency = 1;
}
message CMsgGCClientMarketDataEntry {
optional uint32 item_def_index = 1;
optional uint32 item_quality = 2;
optional uint32 item_sell_listings = 3;
optional uint32 price_in_local_currency = 4;
}
message CMsgGCClientMarketData {
repeated .CMsgGCClientMarketDataEntry entries = 1;
}
message CMsgApplyToolToItem {
optional uint64 tool_item_id = 1;
optional uint64 subject_item_id = 2;
}
message CMsgApplyToolToBaseItem {
optional uint64 tool_item_id = 1;
optional uint32 baseitem_def_index = 2;
}
message CMsgRecipeComponent {
optional uint64 subject_item_id = 1;
optional uint64 attribute_index = 2;
}
message CMsgFulfillDynamicRecipeComponent {
optional uint64 tool_item_id = 1;
repeated .CMsgRecipeComponent consumption_components = 2;
}
message CMsgSetItemEffectVerticalOffset {
optional uint64 item_id = 1;
optional float offset = 2;
}
message CMsgSetHatEffectUseHeadOrigin {
optional uint64 item_id = 1;
optional bool use_head = 2;
}
message CMsgDeliverGiftResponseGiver {
optional uint32 response_code = 1;
optional string receiver_account_name = 2;
}
message CSOEconGameAccountForGameServers {
optional bool disable_party_quest_progress = 6 [default = false];
}
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;
}
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;
}
message CWorkshop_SetItemPaymentRules_Response {
}

View file

@ -0,0 +1,368 @@
import "steammessages.proto";
option optimize_for = SPEED;
option cc_generic_services = false;
enum EGCItemMsg {
k_EMsgGCBase = 1000;
k_EMsgGCSetSingleItemPosition = 1001;
k_EMsgGCCraft = 1002;
k_EMsgGCCraftResponse = 1003;
k_EMsgGCDelete = 1004;
k_EMsgGCVerifyCacheSubscription = 1005;
k_EMsgGCNameItem = 1006;
k_EMsgGCUnlockCrate = 1007;
k_EMsgGCUnlockCrateResponse = 1008;
k_EMsgGCPaintItem = 1009;
k_EMsgGCPaintItemResponse = 1010;
k_EMsgGCGoldenWrenchBroadcast = 1011;
k_EMsgGCMOTDRequest = 1012;
k_EMsgGCMOTDRequestResponse = 1013;
k_EMsgGCNameBaseItem = 1019;
k_EMsgGCNameBaseItemResponse = 1020;
k_EMsgGCRemoveSocketItem_DEPRECATED = 1021;
k_EMsgGCRemoveSocketItemResponse_DEPRECATED = 1022;
k_EMsgGCCustomizeItemTexture = 1023;
k_EMsgGCCustomizeItemTextureResponse = 1024;
k_EMsgGCUseItemRequest = 1025;
k_EMsgGCUseItemResponse = 1026;
k_EMsgGCRespawnPostLoadoutChange = 1029;
k_EMsgGCRemoveItemName = 1030;
k_EMsgGCRemoveItemPaint = 1031;
k_EMsgGCGiftWrapItem = 1032;
k_EMsgGCGiftWrapItemResponse = 1033;
k_EMsgGCDeliverGift = 1034;
k_EMsgGCDeliverGiftResponseReceiver = 1036;
k_EMsgGCUnwrapGiftRequest = 1037;
k_EMsgGCUnwrapGiftResponse = 1038;
k_EMsgGCSetItemStyle = 1039;
k_EMsgGCUsedClaimCodeItem = 1040;
k_EMsgGCSortItems = 1041;
k_EMsgGC_RevolvingLootList_DEPRECATED = 1042;
k_EMsgGCLookupAccount = 1043;
k_EMsgGCLookupAccountResponse = 1044;
k_EMsgGCLookupAccountName = 1045;
k_EMsgGCLookupAccountNameResponse = 1046;
k_EMsgGCUpdateItemSchema = 1049;
k_EMsgGCRequestInventoryRefresh = 1050;
k_EMsgGCRemoveCustomTexture = 1051;
k_EMsgGCRemoveCustomTextureResponse = 1052;
k_EMsgGCRemoveMakersMark = 1053;
k_EMsgGCRemoveMakersMarkResponse = 1054;
k_EMsgGCRemoveUniqueCraftIndex = 1055;
k_EMsgGCRemoveUniqueCraftIndexResponse = 1056;
k_EMsgGCSaxxyBroadcast = 1057;
k_EMsgGCBackpackSortFinished = 1058;
k_EMsgGCAdjustItemEquippedState = 1059;
k_EMsgGCCollectItem = 1061;
k_EMsgGCItemAcknowledged = 1062;
k_EMsgGCPresets_SelectPresetForClass = 1063;
k_EMsgGCPresets_SetItemPosition = 1064;
k_EMsgGC_ReportAbuse = 1065;
k_EMsgGC_ReportAbuseResponse = 1066;
k_EMsgGCPresets_SelectPresetForClassReply = 1067;
k_EMsgGCNameItemNotification = 1068;
k_EMsgGCClientDisplayNotification = 1069;
k_EMsgGCApplyStrangePart = 1070;
k_EMsgGC_IncrementKillCountAttribute = 1071;
k_EMsgGC_IncrementKillCountResponse = 1072;
k_EMsgGCRemoveStrangePart = 1073;
k_EMsgGCResetStrangeScores = 1074;
k_EMsgGCGiftedItems = 1075;
k_EMsgGCApplyUpgradeCard = 1077;
k_EMsgGCRemoveUpgradeCard = 1078;
k_EMsgGCApplyStrangeRestriction = 1079;
k_EMsgGCClientRequestMarketData = 1080;
k_EMsgGCClientRequestMarketDataResponse = 1081;
k_EMsgGCApplyXifier = 1082;
k_EMsgGCApplyXifierResponse = 1083;
k_EMsgGC_TrackUniquePlayerPairEvent = 1084;
k_EMsgGCFulfillDynamicRecipeComponent = 1085;
k_EMsgGCFulfillDynamicRecipeComponentResponse = 1086;
k_EMsgGCSetItemEffectVerticalOffset = 1087;
k_EMsgGCSetHatEffectUseHeadOrigin = 1088;
k_EMsgGCItemEaterRecharger = 1089;
k_EMsgGCItemEaterRechargerResponse = 1090;
k_EMsgGCApplyBaseItemXifier = 1091;
k_EMsgGCApplyClassTransmogrifier = 1092;
k_EMsgGCApplyHalloweenSpellbookPage = 1093;
k_EMsgGCRemoveKillStreak = 1094;
k_EMsgGCRemoveKillStreakResponse = 1095;
k_EMsgGCTFSpecificItemBroadcast = 1096;
k_EMsgGC_IncrementKillCountAttribute_Multiple = 1097;
k_EMsgGCDeliverGiftResponseGiver = 1098;
k_EMsgGCSetItemPositions = 1100;
k_EMsgGCLookupMultipleAccountNames = 1101;
k_EMsgGCLookupMultipleAccountNamesResponse = 1102;
k_EMsgGCTradingBase = 1500;
k_EMsgGCTrading_InitiateTradeRequest = 1501;
k_EMsgGCTrading_InitiateTradeResponse = 1502;
k_EMsgGCTrading_StartSession = 1503;
k_EMsgGCTrading_SessionClosed = 1509;
k_EMsgGCTrading_CancelSession = 1510;
k_EMsgGCTrading_InitiateTradeRequestResponse = 1514;
k_EMsgGCServerBrowser_FavoriteServer = 1601;
k_EMsgGCServerBrowser_BlacklistServer = 1602;
k_EMsgGCServerRentalsBase = 1700;
k_EMsgGCItemPreviewCheckStatus = 1701;
k_EMsgGCItemPreviewStatusResponse = 1702;
k_EMsgGCItemPreviewRequest = 1703;
k_EMsgGCItemPreviewRequestResponse = 1704;
k_EMsgGCItemPreviewExpire = 1705;
k_EMsgGCItemPreviewExpireNotification = 1706;
k_EMsgGCItemPreviewItemBoughtNotification = 1708;
k_EMsgGCDev_NewItemRequest = 2001;
k_EMsgGCDev_NewItemRequestResponse = 2002;
k_EMsgGCDev_DebugRollLootRequest = 2003;
k_EMsgGCStoreGetUserData = 2500;
k_EMsgGCStoreGetUserDataResponse = 2501;
k_EMsgGCStorePurchaseInit_DEPRECATED = 2502;
k_EMsgGCStorePurchaseInitResponse_DEPRECATED = 2503;
k_EMsgGCStorePurchaseFinalize = 2512;
k_EMsgGCStorePurchaseFinalizeResponse = 2513;
k_EMsgGCStorePurchaseCancel = 2514;
k_EMsgGCStorePurchaseCancelResponse = 2515;
k_EMsgGCStorePurchaseQueryTxn = 2508;
k_EMsgGCStorePurchaseQueryTxnResponse = 2509;
k_EMsgGCStorePurchaseInit = 2510;
k_EMsgGCStorePurchaseInitResponse = 2511;
k_EMsgGCToGCDirtySDOCache = 2516;
k_EMsgGCToGCDirtyMultipleSDOCache = 2517;
k_EMsgGCToGCUpdateSQLKeyValue = 2518;
k_EMsgGCToGCBroadcastConsoleCommand = 2521;
k_EMsgGCServerVersionUpdated = 2522;
k_EMsgGCApplyAutograph = 2523;
k_EMsgGCToGCWebAPIAccountChanged = 2524;
k_EMsgGCRequestAnnouncements = 2525;
k_EMsgGCRequestAnnouncementsResponse = 2526;
k_EMsgGCRequestPassportItemGrant = 2527;
k_EMsgGCClientVersionUpdated = 2528;
k_EMsgGCItemPurgatory_FinalizePurchase = 2531;
k_EMsgGCItemPurgatory_FinalizePurchaseResponse = 2532;
k_EMsgGCItemPurgatory_RefundPurchase = 2533;
k_EMsgGCItemPurgatory_RefundPurchaseResponse = 2534;
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_EMsgGCToGCGrantSelfMadeItemToAccount = 2555;
k_EMsgGCToGCThankedByNewUser = 2556;
k_EMsgGCShuffleCrateContents = 2557;
k_EMsgGCQuestObjective_Progress = 2558;
k_EMsgGCQuestCompleted = 2559;
k_EMsgGCApplyDuckToken = 2560;
k_EMsgGCQuestObjective_PointsChange = 2562;
k_EMsgGCQuestObjective_RequestLoanerItems = 2564;
k_EMsgGCQuestObjective_RequestLoanerResponse = 2565;
k_EMsgGCApplyStrangeCountTransfer = 2566;
k_EMsgGCCraftCollectionUpgrade = 2567;
k_EMsgGCCraftHalloweenOffering = 2568;
k_EMsgGCQuestDiscard_Request = 2569;
k_EMsgGCRemoveGiftedBy = 2570;
k_EMsgGCRemoveGiftedByResponse = 2571;
k_EMsgGCRemoveFestivizer = 2572;
k_EMsgGCRemoveFestivizerResponse = 2573;
k_EMsgGCCraftCommonStatClock = 2574;
}
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 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;
}
enum EItemPurgatoryResponse_Finalize {
k_ItemPurgatoryResponse_Finalize_Succeeded = 0;
k_ItemPurgatoryResponse_Finalize_Failed_Incomplete = 1;
k_ItemPurgatoryResponse_Finalize_Failed_ItemsNotInPurgatory = 2;
k_ItemPurgatoryResponse_Finalize_Failed_CouldNotFindItems = 3;
k_ItemPurgatoryResponse_Finalize_Failed_NoSOCache = 4;
k_ItemPurgatoryResponse_Finalize_BackpackFull = 5;
}
enum EItemPurgatoryResponse_Refund {
k_ItemPurgatoryResponse_Refund_Succeeded = 0;
k_ItemPurgatoryResponse_Refund_Failed_ItemNotInPurgatory = 1;
k_ItemPurgatoryResponse_Refund_Failed_CouldNotFindItem = 2;
k_ItemPurgatoryResponse_Refund_Failed_NoSOCache = 3;
k_ItemPurgatoryResponse_Refund_Failed_NoDetail = 4;
k_ItemPurgatoryResponse_Refund_Failed_NexonWebAPI = 5;
}
message CMsgApplyAutograph {
optional uint64 autograph_item_id = 1;
optional uint64 item_item_id = 2;
}
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;
}
message CMsgRequestItemPurgatory_FinalizePurchase {
repeated uint64 item_ids = 1;
}
message CMsgRequestItemPurgatory_FinalizePurchaseResponse {
optional uint32 result = 1;
}
message CMsgRequestItemPurgatory_RefundPurchase {
optional uint64 item_id = 1;
}
message CMsgRequestItemPurgatory_RefundPurchaseResponse {
optional uint32 result = 1;
}
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;
}
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 CMsgGCToGCGrantSelfMadeItemToAccount {
optional uint32 item_def_index = 1;
optional uint32 accountid = 2;
}
message CMsgGCToGCThankedByNewUser {
optional uint32 new_user_accountid = 1;
optional uint32 thanked_user_accountid = 2;
}
message CMsgGCShuffleCrateContents {
optional uint64 crate_item_id = 1;
optional string user_code_string = 2;
}
message CMsgGCQuestObjective_Progress {
optional uint64 quest_id = 1;
optional uint32 quest_attrib_index = 2;
optional uint32 delta = 3;
optional fixed64 owner_steamid = 4;
}
message CMsgGCQuestObjective_PointsChange {
optional uint64 quest_id = 1;
optional fixed64 owner_steamid = 4;
optional bool update_base_points = 5 [default = false];
optional uint32 points_0 = 6;
optional uint32 points_1 = 7;
optional uint32 points_2 = 8;
}
message CMsgGCQuestComplete_Request {
optional uint64 quest_id = 1;
}
message CMsgGCQuestCompleted {
}
message CMsgGCQuestObjective_RequestLoanerItems {
optional uint64 quest_id = 1;
}
message CMsgGCQuestObjective_RequestLoanerResponse {
}
message CMsgCraftCollectionUpgrade {
repeated uint64 item_id = 1;
}
message CMsgCraftHalloweenOffering {
optional uint64 tool_id = 1;
repeated uint64 item_id = 2;
}
message CMsgCraftCommonStatClock {
optional uint64 tool_id = 1;
repeated uint64 item_id = 2;
}
message CMsgGCQuestDiscard_Request {
optional uint64 quest_id = 1;
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,186 @@
import "steammessages.proto";
option optimize_for = SPEED;
option cc_generic_services = false;
enum PartnerAccountType {
PARTNER_NONE = 0;
PARTNER_PERFECT_WORLD = 1;
PARTNER_NEXON = 2;
}
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;
}
message CMsgSOIDOwner {
optional uint32 type = 1;
optional uint64 id = 2;
}
message CMsgSOSingleObject {
optional fixed64 owner = 1;
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 {
optional int32 type_id = 1;
optional bytes object_data = 2;
}
optional fixed64 owner = 1;
repeated .CMsgSOMultipleObjects.SingleObject objects = 2;
optional fixed64 version = 3;
optional .CMsgSOIDOwner owner_soid = 6;
optional uint32 service_id = 7;
}
message CMsgSOCacheSubscribed {
message SubscribedType {
optional int32 type_id = 1;
repeated bytes object_data = 2;
}
optional fixed64 owner = 1;
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 fixed64 owner = 1;
}
message CMsgSOCacheSubscriptionCheck {
optional fixed64 owner = 1;
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 fixed64 owner = 1;
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 CGCToGCMsgMasterAck {
optional uint32 dir_index = 1;
optional string machine_name = 3;
optional string process_name = 4;
repeated uint32 type_instances = 5;
}
message CGCToGCMsgMasterAck_Response {
optional int32 eresult = 1 [default = 2];
}
message CGCToGCMsgMasterStartupComplete {
message GCInfo {
optional uint32 dir_index = 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;
}
message CMsgGCToGCIncrementRecruitmentLevel {
optional fixed64 steamid = 1;
}
message CMsgSOCacheHaveVersion {
optional .CMsgSOIDOwner soid = 1;
optional fixed64 version = 2;
optional uint32 service_id = 3;
}
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 = 2;
optional fixed64 sync_version = 3;
repeated .CMsgGCToGCSOCacheSubscribe.CMsgHaveVersions have_versions = 4;
}
message CMsgGCToGCSOCacheUnsubscribe {
optional fixed64 subscriber = 1;
optional fixed64 unsubscribe_from = 2;
}
message CMsgGCClientPing {
}

178
protos/gcsystemmsgs.proto Normal file
View file

@ -0,0 +1,178 @@
option optimize_for = SPEED;
option cc_generic_services = false;
enum EGCSystemMsg {
k_EGCMsgInvalid = 0;
k_EGCMsgMulti = 1;
k_EGCMsgGenericReply = 10;
k_EGCMsgSystemBase = 50;
k_EGCMsgAchievementAwarded = 51;
k_EGCMsgConCommand = 52;
k_EGCMsgStartPlaying = 53;
k_EGCMsgStopPlaying = 54;
k_EGCMsgStartGameserver = 55;
k_EGCMsgStopGameserver = 56;
k_EGCMsgWGRequest = 57;
k_EGCMsgWGResponse = 58;
k_EGCMsgGetUserGameStatsSchema = 59;
k_EGCMsgGetUserGameStatsSchemaResponse = 60;
k_EGCMsgGetUserStatsDEPRECATED = 61;
k_EGCMsgGetUserStatsResponse = 62;
k_EGCMsgAppInfoUpdated = 63;
k_EGCMsgValidateSession = 64;
k_EGCMsgValidateSessionResponse = 65;
k_EGCMsgLookupAccountFromInput = 66;
k_EGCMsgSendHTTPRequest = 67;
k_EGCMsgSendHTTPRequestResponse = 68;
k_EGCMsgPreTestSetup = 69;
k_EGCMsgRecordSupportAction = 70;
k_EGCMsgGetAccountDetails_DEPRECATED = 71;
k_EGCMsgReceiveInterAppMessage = 73;
k_EGCMsgFindAccounts = 74;
k_EGCMsgPostAlert = 75;
k_EGCMsgGetLicenses = 76;
k_EGCMsgGetUserStats = 77;
k_EGCMsgGetCommands = 78;
k_EGCMsgGetCommandsResponse = 79;
k_EGCMsgAddFreeLicense = 80;
k_EGCMsgAddFreeLicenseResponse = 81;
k_EGCMsgGetIPLocation = 82;
k_EGCMsgGetIPLocationResponse = 83;
k_EGCMsgSystemStatsSchema = 84;
k_EGCMsgGetSystemStats = 85;
k_EGCMsgGetSystemStatsResponse = 86;
k_EGCMsgSendEmail = 87;
k_EGCMsgSendEmailResponse = 88;
k_EGCMsgGetEmailTemplate = 89;
k_EGCMsgGetEmailTemplateResponse = 90;
k_EGCMsgGrantGuestPass = 91;
k_EGCMsgGrantGuestPassResponse = 92;
k_EGCMsgGetAccountDetails = 93;
k_EGCMsgGetAccountDetailsResponse = 94;
k_EGCMsgGetPersonaNames = 95;
k_EGCMsgGetPersonaNamesResponse = 96;
k_EGCMsgMultiplexMsg = 97;
k_EGCMsgWebAPIRegisterInterfaces = 101;
k_EGCMsgWebAPIJobRequest = 102;
k_EGCMsgWebAPIJobRequestHttpResponse = 104;
k_EGCMsgWebAPIJobRequestForwardResponse = 105;
k_EGCMsgMemCachedGet = 200;
k_EGCMsgMemCachedGetResponse = 201;
k_EGCMsgMemCachedSet = 202;
k_EGCMsgMemCachedDelete = 203;
k_EGCMsgMemCachedStats = 204;
k_EGCMsgMemCachedStatsResponse = 205;
k_EGCMsgSQLStats = 210;
k_EGCMsgSQLStatsResponse = 211;
k_EGCMsgMasterSetDirectory = 220;
k_EGCMsgMasterSetDirectoryResponse = 221;
k_EGCMsgMasterSetWebAPIRouting = 222;
k_EGCMsgMasterSetWebAPIRoutingResponse = 223;
k_EGCMsgMasterSetClientMsgRouting = 224;
k_EGCMsgMasterSetClientMsgRoutingResponse = 225;
k_EGCMsgSetOptions = 226;
k_EGCMsgSetOptionsResponse = 227;
k_EGCMsgSystemBase2 = 500;
k_EGCMsgGetPurchaseTrustStatus = 501;
k_EGCMsgGetPurchaseTrustStatusResponse = 502;
k_EGCMsgUpdateSession = 503;
k_EGCMsgGCAccountVacStatusChange = 504;
k_EGCMsgCheckFriendship = 505;
k_EGCMsgCheckFriendshipResponse = 506;
k_EGCMsgGetPartnerAccountLink = 507;
k_EGCMsgGetPartnerAccountLinkResponse = 508;
k_EGCMsgVSReportedSuspiciousActivity = 509;
k_EGCMsgAccountTradeBanStatusChange = 510;
k_EGCMsgAccountLockStatusChange = 511;
k_EGCMsgDPPartnerMicroTxns = 512;
k_EGCMsgDPPartnerMicroTxnsResponse = 513;
k_EGCMsgGetIPASN = 514;
k_EGCMsgGetIPASNResponse = 515;
k_EGCMsgGetAppFriendsList = 516;
k_EGCMsgGetAppFriendsListResponse = 517;
k_EGCMsgVacVerificationChange = 518;
k_EGCMsgAccountPhoneNumberChange = 519;
k_EGCMsgAccountTwoFactorChange = 520;
k_EGCMsgCheckClanMembership = 521;
k_EGCMsgCheckClanMembershipResponse = 522;
k_EGCMsgInviteUserToLobby = 523;
k_EGCMsgGetGamePersonalDataCategoriesRequest = 524;
k_EGCMsgGetGamePersonalDataCategoriesResponse = 525;
k_EGCMsgGetGamePersonalDataEntriesRequest = 526;
k_EGCMsgGetGamePersonalDataEntriesResponse = 527;
k_EGCMsgTerminateGamePersonalDataEntriesRequest = 528;
k_EGCMsgTerminateGamePersonalDataEntriesResponse = 529;
}
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_CacheSubscriptionCheck = 27;
k_ESOMsg_CacheSubscriptionRefresh = 28;
k_ESOMsg_CacheSubscribedUpToDate = 29;
}
enum EGCBaseClientMsg {
k_EMsgGCPingRequest = 3001;
k_EMsgGCPingResponse = 3002;
k_EMsgGCClientWelcome = 4004;
k_EMsgGCServerWelcome = 4005;
k_EMsgGCClientHello = 4006;
k_EMsgGCServerHello = 4007;
k_EMsgGCClientGoodbye = 4008;
k_EMsgGCServerGoodbye = 4009;
}
enum EGCToGCMsg {
k_EGCToGCMsgMasterAck = 150;
k_EGCToGCMsgMasterAckResponse = 151;
k_EGCToGCMsgRouted = 152;
k_EGCToGCMsgRoutedReply = 153;
k_EMsgGCUpdateSubGCSessionInfo = 154;
k_EMsgGCRequestSubGCSessionInfo = 155;
k_EMsgGCRequestSubGCSessionInfoResponse = 156;
k_EGCToGCMsgMasterStartupComplete = 157;
k_EMsgGCToGCSOCacheSubscribe = 158;
k_EMsgGCToGCSOCacheUnsubscribe = 159;
}
message CCommunity_GamePersonalDataCategoryInfo {
optional string type = 1;
optional string localization_token = 2;
optional string template_file = 3;
}
message CCommunity_GetGamePersonalDataCategories_Request {
optional uint32 appid = 1;
}
message CCommunity_GetGamePersonalDataCategories_Response {
repeated .CCommunity_GamePersonalDataCategoryInfo categories = 1;
optional string app_assets_basename = 2;
}
message CCommunity_GetGamePersonalDataEntries_Request {
optional uint32 appid = 1;
optional uint64 steamid = 2;
optional string type = 3;
optional string continue_token = 4;
}
message CCommunity_GetGamePersonalDataEntries_Response {
optional uint32 gceresult = 1;
repeated string entries = 2;
optional string continue_token = 3;
}
message CCommunity_TerminateGamePersonalDataEntries_Request {
optional uint32 appid = 1;
optional uint64 steamid = 2;
}
message CCommunity_TerminateGamePersonalDataEntries_Response {
optional uint32 gceresult = 1;
}

View file

@ -0,0 +1,50 @@
option cc_generic_services = false;
message CMsgSteamDatagramRelayAuthTicket {
message ExtraField {
optional string name = 1;
optional string string_value = 2;
optional sint64 int64_value = 3;
optional fixed64 fixed64_value = 5;
}
optional fixed32 time_expiry = 1;
optional fixed64 authorized_steam_id = 2;
optional fixed32 authorized_public_ip = 3;
optional fixed64 gameserver_steam_id = 4;
optional fixed64 gameserver_net_id = 5;
optional bytes legacy_signature = 6;
optional uint32 app_id = 7;
optional fixed32 gameserver_pop_id = 9;
optional uint32 virtual_port = 10;
repeated .CMsgSteamDatagramRelayAuthTicket.ExtraField extra_fields = 8;
}
message CMsgSteamDatagramSignedRelayAuthTicket {
optional fixed64 reserved_do_not_use = 1;
optional fixed64 key_id = 2;
optional bytes ticket = 3;
optional bytes signature = 4;
}
message CMsgSteamDatagramCertificate {
enum EKeyType {
INVALID = 0;
ED25519 = 1;
}
optional .CMsgSteamDatagramCertificate.EKeyType key_type = 1 [default = INVALID];
optional bytes key_data = 2;
optional fixed64 steam_id = 4;
repeated fixed32 gameserver_datacenter_ids = 5;
optional fixed32 time_created = 8;
optional fixed32 time_expiry = 9;
optional uint32 app_id = 10;
}
message CMsgSteamDatagramCertificateSigned {
optional bytes cert = 4;
optional fixed64 ca_key_id = 5;
optional bytes ca_signature = 6;
}

View file

@ -0,0 +1,598 @@
import "steamdatagram_auth_messages.proto";
option cc_generic_services = false;
enum ESteamDatagramMsgID {
k_ESteamDatagramMsg_Invalid = 0;
k_ESteamDatagramMsg_RouterPingRequest = 1;
k_ESteamDatagramMsg_RouterPingReply = 2;
k_ESteamDatagramMsg_GameserverPingRequest = 3;
k_ESteamDatagramMsg_GameserverPingReply = 4;
k_ESteamDatagramMsg_GameserverSessionRequest = 5;
k_ESteamDatagramMsg_GameserverSessionEstablished = 6;
k_ESteamDatagramMsg_NoSession = 7;
k_ESteamDatagramMsg_Diagnostic = 8;
k_ESteamDatagramMsg_DataClientToRouter = 9;
k_ESteamDatagramMsg_DataRouterToServer = 10;
k_ESteamDatagramMsg_DataServerToRouter = 11;
k_ESteamDatagramMsg_DataRouterToClient = 12;
k_ESteamDatagramMsg_Stats = 13;
k_ESteamDatagramMsg_ClientPingSampleRequest = 14;
k_ESteamDatagramMsg_ClientPingSampleReply = 15;
k_ESteamDatagramMsg_ClientToRouterSwitchedPrimary = 16;
k_ESteamDatagramMsg_RelayHealth = 17;
k_ESteamDatagramMsg_ConnectRequest = 18;
k_ESteamDatagramMsg_ConnectOK = 19;
k_ESteamDatagramMsg_ConnectionClosed = 20;
k_ESteamDatagramMsg_NoConnection = 21;
k_ESteamDatagramMsg_RelayToRelayPingRequest = 22;
k_ESteamDatagramMsg_RelayToRelayPingReply = 23;
k_ESteamDatagramMsg_P2PSessionRequest = 24;
k_ESteamDatagramMsg_P2PSessionEstablished = 25;
}
enum ESteamNetworkingUDPMsgID {
k_ESteamNetworkingUDPMsg_ChallengeRequest = 32;
k_ESteamNetworkingUDPMsg_ChallengeReply = 33;
k_ESteamNetworkingUDPMsg_ConnectRequest = 34;
k_ESteamNetworkingUDPMsg_ConnectOK = 35;
k_ESteamNetworkingUDPMsg_ConnectionClosed = 36;
k_ESteamNetworkingUDPMsg_NoConnection = 37;
k_ESteamNetworkingUDPMsg_Stats = 38;
}
message CMsgSteamDatagramRouterPingReply {
message RouteException {
optional fixed32 data_center_id = 1;
optional uint32 flags = 2;
optional uint32 penalty = 3;
}
optional fixed32 client_timestamp = 1;
repeated fixed32 latency_datacenter_ids = 2 [packed = true];
repeated uint32 latency_ping_ms = 3 [packed = true];
optional fixed32 your_public_ip = 4;
optional fixed32 server_time = 5;
optional fixed64 challenge = 6;
optional uint32 seconds_until_shutdown = 7;
optional fixed32 client_cookie = 8;
optional uint32 scoring_penalty_relay_cluster = 9;
repeated .CMsgSteamDatagramRouterPingReply.RouteException route_exceptions = 10;
}
message CMsgSteamDatagramGameserverPing {
optional uint32 legacy_client_session = 1;
optional fixed64 client_steam_id = 2;
optional fixed32 client_timestamp = 3;
optional fixed32 router_timestamp = 4;
optional uint32 router_gameserver_latency = 5;
optional uint32 seq_number_router = 6;
optional uint32 seq_number_e2e = 7;
optional uint32 relay_session_id = 8;
optional fixed32 connection_id = 9;
}
message CMsgSteamDatagramRelayToRelayPing {
optional fixed32 request_timestamp = 1;
optional fixed32 request_date = 2;
optional fixed32 my_pop_id = 3;
optional fixed32 your_pop_id = 4;
optional fixed32 checksum = 5;
}
message CMsgSteamDatagramSessionCryptInfo {
enum EKeyType {
INVALID = 0;
CURVE25519 = 1;
}
optional .CMsgSteamDatagramSessionCryptInfo.EKeyType key_type = 1 [default = INVALID];
optional bytes key_data = 2;
optional fixed64 nonce = 3;
optional bool is_snp = 4;
}
message CMsgSteamDatagramSessionCryptInfoSigned {
optional bytes info = 1;
optional bytes signature = 2;
}
message CMsgSteamDatagramGameserverSessionRequest {
optional bytes ticket = 1;
optional fixed32 challenge_time = 3;
optional fixed64 challenge = 4;
optional fixed32 client_connection_id = 5;
optional fixed32 server_connection_id = 8;
optional uint32 network_config_version = 6;
optional uint32 protocol_version = 7;
}
message CMsgSteamDatagramGameserverSessionEstablished {
optional fixed32 connection_id = 1;
optional fixed64 gameserver_steam_id = 3;
optional uint32 seconds_until_shutdown = 4;
optional uint32 legacy_relay_session_id = 5;
optional uint32 seq_num_r2c = 6;
}
message CMsgSteamDatagramNoSessionRelayToClient {
optional uint32 legacy_relay_session_id = 1;
optional fixed32 connection_id = 7;
optional fixed32 your_public_ip = 2;
optional fixed32 server_time = 3;
optional fixed64 challenge = 4;
optional uint32 seconds_until_shutdown = 5;
}
message CMsgSteamDatagramNoSessionRelayToServer {
optional uint32 relay_session_id = 1;
optional fixed32 client_connection_id = 7;
optional fixed32 server_connection_id = 8;
optional fixed64 kludge_pad = 99;
}
message CMsgSteamDatagramDiagnostic {
optional uint32 severity = 1;
optional string text = 2;
}
message CMsgSteamDatagramDataCenterState {
message Server {
optional string address = 1;
optional uint32 ping_ms = 2;
}
message DataCenter {
optional string code = 1;
repeated .CMsgSteamDatagramDataCenterState.Server server_sample = 2;
repeated .CMsgSteamDatagramDataCenterState.Server relay_sample = 3;
}
repeated .CMsgSteamDatagramDataCenterState.DataCenter data_centers = 1;
}
message CMsgSteamDatagramLinkInstantaneousStats {
optional uint32 out_packets_per_sec_x10 = 1;
optional uint32 out_bytes_per_sec = 2;
optional uint32 in_packets_per_sec_x10 = 3;
optional uint32 in_bytes_per_sec = 4;
optional uint32 ping_ms = 5;
optional uint32 packets_dropped_pct = 6;
optional uint32 packets_weird_sequence_pct = 7;
optional uint32 peak_jitter_usec = 8;
}
message CMsgSteamDatagramLinkLifetimeStats {
optional uint64 packets_sent = 3;
optional uint64 kb_sent = 4;
optional uint64 packets_recv = 5;
optional uint64 kb_recv = 6;
optional uint64 packets_recv_sequenced = 7;
optional uint64 packets_recv_dropped = 8;
optional uint64 packets_recv_out_of_order = 9;
optional uint64 packets_recv_duplicate = 10;
optional uint64 packets_recv_lurch = 11;
optional uint32 quality_histogram_100 = 21;
optional uint32 quality_histogram_99 = 22;
optional uint32 quality_histogram_97 = 23;
optional uint32 quality_histogram_95 = 24;
optional uint32 quality_histogram_90 = 25;
optional uint32 quality_histogram_75 = 26;
optional uint32 quality_histogram_50 = 27;
optional uint32 quality_histogram_1 = 28;
optional uint32 quality_histogram_dead = 29;
optional uint32 quality_ntile_2nd = 30;
optional uint32 quality_ntile_5th = 31;
optional uint32 quality_ntile_25th = 32;
optional uint32 quality_ntile_50th = 33;
optional uint32 ping_histogram_25 = 41;
optional uint32 ping_histogram_50 = 42;
optional uint32 ping_histogram_75 = 43;
optional uint32 ping_histogram_100 = 44;
optional uint32 ping_histogram_125 = 45;
optional uint32 ping_histogram_150 = 46;
optional uint32 ping_histogram_200 = 47;
optional uint32 ping_histogram_300 = 48;
optional uint32 ping_histogram_max = 49;
optional uint32 ping_ntile_5th = 50;
optional uint32 ping_ntile_50th = 51;
optional uint32 ping_ntile_75th = 52;
optional uint32 ping_ntile_95th = 53;
optional uint32 ping_ntile_98th = 54;
optional uint32 jitter_histogram_negligible = 61;
optional uint32 jitter_histogram_1 = 62;
optional uint32 jitter_histogram_2 = 63;
optional uint32 jitter_histogram_5 = 64;
optional uint32 jitter_histogram_10 = 65;
optional uint32 jitter_histogram_20 = 66;
optional uint32 txspeed_max = 67;
optional uint32 txspeed_histogram_16 = 68;
optional uint32 txspeed_histogram_32 = 69;
optional uint32 txspeed_histogram_64 = 70;
optional uint32 txspeed_histogram_128 = 71;
optional uint32 txspeed_histogram_256 = 72;
optional uint32 txspeed_histogram_512 = 73;
optional uint32 txspeed_histogram_1024 = 74;
optional uint32 txspeed_histogram_max = 75;
optional uint32 txspeed_ntile_5th = 76;
optional uint32 txspeed_ntile_50th = 77;
optional uint32 txspeed_ntile_75th = 78;
optional uint32 txspeed_ntile_95th = 79;
optional uint32 txspeed_ntile_98th = 80;
optional uint32 rxspeed_max = 81;
optional uint32 rxspeed_histogram_16 = 82;
optional uint32 rxspeed_histogram_32 = 83;
optional uint32 rxspeed_histogram_64 = 84;
optional uint32 rxspeed_histogram_128 = 85;
optional uint32 rxspeed_histogram_256 = 86;
optional uint32 rxspeed_histogram_512 = 87;
optional uint32 rxspeed_histogram_1024 = 88;
optional uint32 rxspeed_histogram_max = 89;
optional uint32 rxspeed_ntile_5th = 90;
optional uint32 rxspeed_ntile_50th = 91;
optional uint32 rxspeed_ntile_75th = 92;
optional uint32 rxspeed_ntile_95th = 93;
optional uint32 rxspeed_ntile_98th = 94;
}
message CMsgSteamDatagramConnectionQuality {
optional .CMsgSteamDatagramLinkInstantaneousStats instantaneous = 1;
optional .CMsgSteamDatagramLinkLifetimeStats lifetime = 2;
}
message CMsgSteamDatagramConnectionStatsClientToRouter {
enum Flags {
ACK_REQUEST_RELAY = 1;
ACK_REQUEST_E2E = 2;
ACK_REQUEST_IMMEDIATE = 4;
}
optional .CMsgSteamDatagramConnectionQuality c2r = 1;
optional .CMsgSteamDatagramConnectionQuality c2s = 2;
optional fixed32 legacy_client_timestamp = 3;
repeated fixed32 ack_relay = 4;
repeated fixed32 ack_e2e = 5;
optional uint32 flags = 6;
optional fixed32 client_connection_id = 8;
optional uint32 seq_num_c2r = 9;
optional uint32 seq_num_c2s = 10;
}
message CMsgSteamDatagramConnectionStatsRouterToClient {
enum Flags {
ACK_REQUEST_RELAY = 1;
ACK_REQUEST_E2E = 2;
ACK_REQUEST_IMMEDIATE = 4;
}
optional .CMsgSteamDatagramConnectionQuality r2c = 1;
optional .CMsgSteamDatagramConnectionQuality s2c = 2;
optional fixed32 legacy_client_timestamp_from_router = 3;
optional fixed32 legacy_client_timestamp_from_server = 4;
optional uint32 router_gameserver_latency = 5;
optional uint32 seconds_until_shutdown = 6;
optional fixed32 migrate_request_ip = 10;
optional uint32 migrate_request_port = 11;
optional uint32 scoring_penalty_relay_cluster = 12;
repeated fixed32 ack_relay = 13;
repeated fixed32 ack_e2e = 14;
optional uint32 flags = 15;
optional fixed32 client_connection_id = 7;
optional uint32 seq_num_r2c = 8;
optional uint32 seq_num_s2c = 9;
}
message CMsgSteamDatagramConnectionStatsRouterToServer {
enum Flags {
ACK_REQUEST_RELAY = 1;
ACK_REQUEST_E2E = 2;
ACK_REQUEST_IMMEDIATE = 4;
}
optional .CMsgSteamDatagramConnectionQuality r2s = 1;
optional .CMsgSteamDatagramConnectionQuality c2s = 2;
optional fixed32 legacy_client_timestamp = 3;
optional fixed32 legacy_router_timestamp = 4;
repeated fixed32 ack_relay = 10;
repeated fixed32 ack_e2e = 11;
optional uint32 flags = 12;
optional uint32 seq_num_r2s = 5;
optional uint32 seq_num_c2s = 6;
optional fixed64 client_steam_id = 7;
optional uint32 relay_session_id = 8;
optional fixed32 client_connection_id = 9;
optional fixed32 server_connection_id = 13;
}
message CMsgSteamDatagramConnectionStatsServerToRouter {
enum Flags {
ACK_REQUEST_RELAY = 1;
ACK_REQUEST_E2E = 2;
ACK_REQUEST_IMMEDIATE = 4;
}
optional .CMsgSteamDatagramConnectionQuality s2r = 1;
optional .CMsgSteamDatagramConnectionQuality s2c = 2;
repeated fixed32 ack_relay = 8;
repeated fixed32 ack_e2e = 9;
optional uint32 flags = 10;
optional uint32 seq_num_s2r = 3;
optional uint32 seq_num_s2c = 4;
optional fixed64 client_steam_id = 5;
optional uint32 relay_session_id = 6;
optional fixed32 client_connection_id = 7;
optional fixed32 server_connection_id = 11;
}
message CMsgSteamDatagramClientPingSampleRequest {
optional fixed32 connection_id = 1;
}
message CMsgSteamDatagramClientPingSampleReply {
message RoutingCluster {
optional fixed32 id = 1;
optional uint32 front_ping_ms = 2;
optional uint32 e2e_ping_ms = 3;
}
message DataCenter {
optional fixed32 data_center_id = 1;
optional fixed32 via_relay_id = 2;
optional uint32 e2e_ping_ms = 3;
}
optional fixed32 connection_id = 1;
repeated .CMsgSteamDatagramClientPingSampleReply.RoutingCluster routing_clusters = 2;
repeated .CMsgSteamDatagramClientPingSampleReply.DataCenter data_centers = 3;
}
message CMsgSteamDatagramClientSwitchedPrimary {
message RouterQuality {
optional uint32 score = 1;
optional uint32 front_ping = 2;
optional uint32 back_ping = 3;
optional uint32 seconds_until_down = 4;
}
optional fixed32 connection_id = 1;
optional fixed32 from_ip = 2;
optional uint32 from_port = 3;
optional fixed32 from_router_cluster = 4;
optional uint32 from_active_time = 5;
optional uint32 from_active_packets_recv = 6;
optional string from_dropped_reason = 7;
optional uint32 gap_ms = 8;
optional .CMsgSteamDatagramClientSwitchedPrimary.RouterQuality from_quality_now = 9;
optional .CMsgSteamDatagramClientSwitchedPrimary.RouterQuality to_quality_now = 10;
optional .CMsgSteamDatagramClientSwitchedPrimary.RouterQuality from_quality_then = 11;
optional .CMsgSteamDatagramClientSwitchedPrimary.RouterQuality to_quality_then = 12;
}
message CMsgSteamDatagramRouterHealth {
message DataCenter {
optional fixed32 datacenter_id = 1;
optional uint32 state = 2;
}
optional float cpu_load = 1;
optional uint32 active_sessions = 2;
optional uint32 data_pkts_sec = 3;
optional uint32 other_pkts_sec = 4;
optional uint32 seconds_until_shutdown = 5;
optional float cpu_cost_per_user = 8;
optional float cpu_cost_per_packet = 9;
repeated .CMsgSteamDatagramRouterHealth.DataCenter data_centers = 6;
optional fixed64 magic = 7;
}
message CMsgSteamDatagramConnectRequest {
optional fixed32 connection_id = 1;
optional fixed64 client_steam_id = 3;
optional fixed64 my_timestamp = 4;
optional uint32 ping_est_ms = 5;
optional uint32 virtual_port = 9;
optional uint32 gameserver_relay_session_id = 2;
optional .CMsgSteamDatagramSessionCryptInfoSigned crypt = 6;
optional .CMsgSteamDatagramCertificateSigned cert = 7;
optional uint32 protocol_version = 8;
}
message CMsgSteamDatagramConnectOK {
optional fixed32 client_connection_id = 1;
optional fixed32 server_connection_id = 7;
optional fixed64 your_timestamp = 3;
optional uint32 delay_time_usec = 4;
optional uint32 gameserver_relay_session_id = 2;
optional .CMsgSteamDatagramSessionCryptInfoSigned crypt = 5;
optional .CMsgSteamDatagramCertificateSigned cert = 6;
optional uint32 protocol_version = 8;
}
message CMsgSteamDatagramConnectionClosed {
enum ERelayMode {
None = 0;
EndToEnd = 1;
ClosedByPeer = 2;
}
optional fixed32 legacy_client_connection_id = 1;
optional fixed32 to_connection_id = 7;
optional fixed32 from_connection_id = 8;
optional fixed64 peer_steam_id = 3;
optional uint32 gameserver_relay_session_id = 2;
optional .CMsgSteamDatagramConnectionClosed.ERelayMode relay_mode = 4 [default = None];
optional string debug = 5;
optional uint32 reason_code = 6;
}
message CMsgSteamDatagramNoConnection {
optional fixed32 legacy_client_connection_id = 1;
optional fixed32 to_connection_id = 5;
optional fixed32 from_connection_id = 6;
optional uint32 gameserver_relay_session_id = 2;
optional fixed64 peer_steam_id = 3;
optional bool end_to_end = 4;
optional fixed32 dummy_pad = 1023;
}
message CMsgSteamDatagramP2PSessionRequestBody {
optional fixed32 challenge_time = 1;
optional fixed64 challenge = 2;
optional fixed32 my_connection_id = 3;
optional fixed64 peer_steam_id = 4;
optional fixed32 peer_connection_id = 5;
optional uint32 protocol_version = 8;
optional uint32 network_config_version = 9;
optional fixed32 public_ip = 10;
}
message CMsgSteamDatagramP2PSessionRequest {
optional .CMsgSteamDatagramCertificateSigned cert = 1;
optional bytes body = 2;
optional bytes signature = 3;
}
message CMsgSteamDatagramP2PSessionEstablished {
optional fixed32 connection_id = 1;
optional uint32 seconds_until_shutdown = 3;
optional fixed64 relay_routing_id = 4;
optional uint32 seq_num_r2c = 5;
}
message CMsgSteamDatagramP2PRoutes {
message RelayCluster {
optional fixed32 pop_id = 1;
optional uint32 ping_ms = 2;
optional uint32 score_penalty = 3;
optional fixed64 session_relay_routing_id = 4;
}
message Route {
optional fixed32 my_pop_id = 1;
optional fixed32 your_pop_id = 2;
optional uint32 score = 3;
}
repeated .CMsgSteamDatagramP2PRoutes.RelayCluster relay_clusters = 1;
repeated .CMsgSteamDatagramP2PRoutes.Route routes = 2;
optional uint32 revision = 3;
}
message CMsgSteamDatagramP2PRendezvous {
optional fixed32 to_connection_id = 1;
optional .CMsgSteamDatagramP2PRoutes routes = 2;
optional uint32 ack_peer_routes_revision = 3;
optional .CMsgSteamDatagramConnectRequest connect_request = 4;
optional .CMsgSteamDatagramConnectOK connect_ok = 5;
optional .CMsgSteamDatagramConnectionClosed connection_closed = 6;
}
message CMsgSteamDatagramConnectionStatsP2PClientToRouter {
enum Flags {
ACK_REQUEST_RELAY = 1;
ACK_REQUEST_E2E = 2;
ACK_REQUEST_IMMEDIATE = 4;
}
optional .CMsgSteamDatagramConnectionQuality c2r = 1;
optional .CMsgSteamDatagramConnectionQuality c2s = 2;
repeated fixed32 ack_relay = 3;
repeated fixed32 ack_e2e = 4;
optional uint32 flags = 5;
optional fixed64 forward_target_relay_routing_id = 6;
optional uint32 forward_target_revision = 7;
optional .CMsgSteamDatagramP2PRoutes routes = 8;
optional uint32 ack_peer_routes_revision = 9;
optional fixed32 connection_id = 10;
optional uint32 seq_num_c2r = 11;
optional uint32 seq_num_c2s = 12;
}
message CMsgSteamDatagramConnectionStatsP2PRouterToClient {
enum Flags {
ACK_REQUEST_RELAY = 1;
ACK_REQUEST_E2E = 2;
ACK_REQUEST_IMMEDIATE = 4;
}
optional .CMsgSteamDatagramConnectionQuality r2c = 1;
optional .CMsgSteamDatagramConnectionQuality p2c = 2;
optional uint32 seconds_until_shutdown = 3;
optional fixed32 migrate_request_ip = 4;
optional uint32 migrate_request_port = 5;
optional uint32 scoring_penalty_relay_cluster = 6;
repeated fixed32 ack_relay = 7;
repeated fixed32 ack_e2e = 8;
optional uint32 flags = 9;
optional uint32 ack_forward_target_revision = 10;
optional .CMsgSteamDatagramP2PRoutes routes = 11;
optional uint32 ack_peer_routes_revision = 12;
optional fixed32 connection_id = 13;
optional uint32 seq_num_r2c = 14;
optional uint32 seq_num_p2c = 15;
}
message CMsgSteamSockets_UDP_ChallengeRequest {
optional fixed32 connection_id = 1;
optional fixed64 my_timestamp = 3;
optional uint32 protocol_version = 4;
}
message CMsgSteamSockets_UDP_ChallengeReply {
optional fixed32 connection_id = 1;
optional fixed64 challenge = 2;
optional fixed64 your_timestamp = 3;
optional uint32 protocol_version = 4;
}
message CMsgSteamSockets_UDP_ConnectRequest {
optional fixed32 client_connection_id = 1;
optional fixed64 challenge = 2;
optional fixed64 client_steam_id = 3;
optional fixed64 my_timestamp = 5;
optional uint32 ping_est_ms = 6;
optional .CMsgSteamDatagramSessionCryptInfoSigned crypt = 7;
optional .CMsgSteamDatagramCertificateSigned cert = 4;
optional uint32 protocol_version = 8;
}
message CMsgSteamSockets_UDP_ConnectOK {
optional fixed32 client_connection_id = 1;
optional fixed32 server_connection_id = 5;
optional fixed64 server_steam_id = 2;
optional fixed64 your_timestamp = 3;
optional uint32 delay_time_usec = 4;
optional .CMsgSteamDatagramSessionCryptInfoSigned crypt = 7;
optional .CMsgSteamDatagramCertificateSigned cert = 8;
optional uint32 protocol_version = 9;
}
message CMsgSteamSockets_UDP_ConnectionClosed {
optional fixed32 legacy_client_connection_id = 1;
optional fixed32 to_connection_id = 4;
optional fixed32 from_connection_id = 5;
optional string debug = 2;
optional uint32 reason_code = 3;
}
message CMsgSteamSockets_UDP_NoConnection {
optional fixed32 legacy_client_connection_id = 1;
optional fixed32 from_connection_id = 2;
optional fixed32 to_connection_id = 3;
}
message CMsgSteamSockets_UDP_Stats {
enum Flags {
ACK_REQUEST_E2E = 2;
ACK_REQUEST_IMMEDIATE = 4;
}
optional .CMsgSteamDatagramConnectionQuality stats = 1;
repeated fixed32 ack_e2e = 2;
optional uint32 flags = 3;
optional fixed32 legacy_client_connection_id = 8;
optional fixed32 to_connection_id = 9;
optional fixed32 from_connection_id = 10;
optional uint32 seq_num = 4;
}

View file

@ -0,0 +1,65 @@
import "steamnetworkingsockets_messages_certs.proto";
option optimize_for = SPEED;
option cc_generic_services = false;
message CMsgSteamDatagramRelayAuthTicket {
message ExtraField {
optional string name = 1;
optional string string_value = 2;
optional sint64 int64_value = 3;
optional fixed64 fixed64_value = 5;
}
optional fixed32 time_expiry = 1;
optional string authorized_client_identity_string = 14;
optional string gameserver_identity_string = 15;
optional fixed32 authorized_public_ip = 3;
optional bytes gameserver_address = 11;
optional uint32 app_id = 7;
optional uint32 virtual_port = 10;
repeated .CMsgSteamDatagramRelayAuthTicket.ExtraField extra_fields = 8;
optional fixed64 legacy_authorized_steam_id = 2;
optional fixed64 legacy_gameserver_steam_id = 4;
optional fixed32 legacy_gameserver_pop_id = 9;
optional bytes legacy_authorized_client_identity_binary = 12;
optional bytes legacy_gameserver_identity_binary = 13;
}
message CMsgSteamDatagramSignedRelayAuthTicket {
optional fixed64 reserved_do_not_use = 1;
optional bytes ticket = 3;
optional bytes signature = 4;
optional fixed64 key_id = 2;
repeated .CMsgSteamDatagramCertificateSigned certs = 5;
}
message CMsgSteamDatagramCachedCredentialsForApp {
optional bytes private_key = 1;
optional bytes cert = 2;
repeated bytes relay_tickets = 3;
}
message CMsgSteamDatagramGameCoordinatorServerLogin {
optional uint32 time_generated = 1;
optional uint32 appid = 2;
optional bytes routing = 3;
optional bytes appdata = 4;
optional bytes legacy_identity_binary = 5;
optional string identity_string = 6;
optional fixed64 dummy_steam_id = 99;
}
message CMsgSteamDatagramSignedGameCoordinatorServerLogin {
optional .CMsgSteamDatagramCertificateSigned cert = 1;
optional bytes login = 2;
optional bytes signature = 3;
}
message CMsgSteamDatagramHostedServerAddressPlaintext {
optional fixed32 ipv4 = 1;
optional bytes ipv6 = 2;
optional uint32 port = 3;
optional fixed64 routing_secret = 4;
optional uint32 protocol_version = 5;
}

View file

@ -0,0 +1,518 @@
import "steamnetworkingsockets_messages_certs.proto";
import "steamnetworkingsockets_messages.proto";
option optimize_for = SPEED;
option cc_generic_services = false;
enum ESteamDatagramMsgID {
k_ESteamDatagramMsg_Invalid = 0;
k_ESteamDatagramMsg_RouterPingRequest = 1;
k_ESteamDatagramMsg_RouterPingReply = 2;
k_ESteamDatagramMsg_GameserverPingRequest = 3;
k_ESteamDatagramMsg_GameserverSessionRequest = 5;
k_ESteamDatagramMsg_GameserverSessionEstablished = 6;
k_ESteamDatagramMsg_NoSession = 7;
k_ESteamDatagramMsg_Diagnostic = 8;
k_ESteamDatagramMsg_DataClientToRouter = 9;
k_ESteamDatagramMsg_DataRouterToServer = 10;
k_ESteamDatagramMsg_DataServerToRouter = 11;
k_ESteamDatagramMsg_DataRouterToClient = 12;
k_ESteamDatagramMsg_Stats = 13;
k_ESteamDatagramMsg_ClientPingSampleRequest = 14;
k_ESteamDatagramMsg_ClientPingSampleReply = 15;
k_ESteamDatagramMsg_ClientToRouterSwitchedPrimary = 16;
k_ESteamDatagramMsg_RelayHealth = 17;
k_ESteamDatagramMsg_ConnectRequest = 18;
k_ESteamDatagramMsg_ConnectOK = 19;
k_ESteamDatagramMsg_ConnectionClosed = 20;
k_ESteamDatagramMsg_NoConnection = 21;
k_ESteamDatagramMsg_TicketDecryptRequest = 22;
k_ESteamDatagramMsg_TicketDecryptReply = 23;
k_ESteamDatagramMsg_P2PSessionRequest = 24;
k_ESteamDatagramMsg_P2PSessionEstablished = 25;
k_ESteamDatagramMsg_P2PStatsClient = 26;
k_ESteamDatagramMsg_P2PStatsRelay = 27;
k_ESteamDatagramMsg_P2PBadRoute = 28;
k_ESteamDatagramMsg_GameserverPingReply = 29;
k_ESteamDatagramMsg_LegacyGameserverRegistration = 30;
k_ESteamDatagramMsg_SetSecondaryAddressRequest = 31;
k_ESteamDatagramMsg_SetSecondaryAddressResult = 32;
k_ESteamDatagramMsg_RelayToRelayPingRequest = 33;
k_ESteamDatagramMsg_RelayToRelayPingReply = 34;
}
message CMsgSteamNetworkingIPAddress {
optional fixed32 v4 = 1;
optional bytes v6 = 2;
}
message CMsgSteamDatagramSignedMessageGeneric {
optional .CMsgSteamDatagramCertificateSigned cert = 1;
optional bytes signed_data = 2;
optional bytes signature = 3;
}
message CMsgSteamDatagramRouterPingReply {
message RouteException {
optional fixed32 data_center_id = 1;
optional uint32 flags = 2;
optional uint32 penalty = 3;
}
message AltAddress {
enum Protocol {
DefaultProtocol = 0;
NetworkNext = 1;
}
optional fixed32 ipv4 = 1;
optional uint32 port = 2;
optional uint32 penalty = 3;
optional .CMsgSteamDatagramRouterPingReply.AltAddress.Protocol protocol = 4 [default = DefaultProtocol];
optional string id = 5;
}
enum Flags {
FLAG_MAYBE_MORE_DATA_CENTERS = 1;
FLAG_MAYBE_MORE_ALT_ADDRESSES = 2;
}
optional fixed32 client_timestamp = 1;
repeated fixed32 latency_datacenter_ids = 2 [packed = true];
repeated uint32 latency_ping_ms = 3 [packed = true];
repeated fixed32 latency_datacenter_ids_p2p = 14 [packed = true];
repeated uint32 latency_ping_ms_p2p = 15 [packed = true];
optional fixed32 your_public_ip = 4;
optional fixed32 your_public_port = 11;
optional fixed32 server_time = 5;
optional fixed64 challenge = 6;
optional uint32 seconds_until_shutdown = 7;
optional fixed32 client_cookie = 8;
optional uint32 scoring_penalty_relay_cluster = 9;
optional uint32 flags = 12;
repeated .CMsgSteamDatagramRouterPingReply.RouteException route_exceptions = 10;
repeated .CMsgSteamDatagramRouterPingReply.AltAddress alt_addresses = 13;
}
message CMsgSteamDatagramGameserverPingRequestBody {
optional fixed32 relay_popid = 1;
optional .CMsgSteamNetworkingIPAddress your_public_ip = 2;
optional uint32 your_public_port = 3;
optional uint64 relay_unix_time = 4;
optional fixed64 routing_secret = 5;
repeated .CMsgSteamNetworkingIPAddress my_ips = 6;
optional bytes echo = 8;
}
message CMsgSteamDatagramGameserverPingRequestEnvelope {
optional .CMsgSteamDatagramCertificateSigned cert = 6;
optional bytes signed_data = 7;
optional bytes signature = 8;
optional fixed32 legacy_your_public_ip = 1;
optional fixed32 legacy_your_public_port = 5;
optional fixed32 legacy_relay_unix_time = 2;
optional fixed64 legacy_challenge = 3;
optional fixed32 legacy_router_timestamp = 4;
}
message CMsgSteamDatagramGameserverPingReplyData {
optional fixed32 echo_relay_unix_time = 2;
optional bytes echo = 8;
optional fixed64 legacy_challenge = 3;
optional fixed32 legacy_router_timestamp = 4;
optional fixed32 data_center_id = 5;
optional uint32 appid = 6;
optional uint32 protocol_version = 7;
optional string build = 9;
optional uint32 network_config_version = 10;
optional fixed32 my_unix_time = 11;
}
message CMsgSteamDatagramNoSessionRelayToClient {
optional fixed32 connection_id = 7;
optional fixed32 your_public_ip = 2;
optional fixed32 your_public_port = 6;
optional fixed32 server_time = 3;
optional fixed64 challenge = 4;
optional uint32 seconds_until_shutdown = 5;
}
message CMsgSteamDatagramNoSessionRelayToPeer {
optional uint32 legacy_relay_session_id = 1;
optional fixed32 from_relay_session_id = 2;
optional fixed32 from_connection_id = 7;
optional fixed64 kludge_pad = 99;
}
message CMsgSteamDatagramClientPingSampleRequest {
optional fixed32 connection_id = 1;
}
message CMsgSteamDatagramClientPingSampleReply {
message POP {
message AltAddress {
optional string id = 1;
optional uint32 front_ping_ms = 2;
optional uint32 penalty = 3;
}
optional fixed32 pop_id = 1;
optional uint32 default_front_ping_ms = 2;
optional uint32 cluster_penalty = 4;
repeated .CMsgSteamDatagramClientPingSampleReply.POP.AltAddress alt_addresses = 7;
optional uint32 default_e2e_ping_ms = 3;
optional uint32 default_e2e_score = 5;
optional fixed32 p2p_via_peer_relay_pop_id = 6;
optional uint32 best_dc_ping_ms = 9;
optional uint32 best_dc_score = 10;
optional fixed32 best_dc_via_relay_pop_id = 11;
optional uint32 default_dc_ping_ms = 12;
optional uint32 default_dc_score = 13;
optional fixed32 default_dc_via_relay_pop_id = 14;
optional uint32 test_dc_ping_ms = 15;
optional uint32 test_dc_score = 16;
optional fixed32 test_dc_via_relay_pop_id = 17;
}
message LegacyDataCenter {
optional fixed32 data_center_id = 1;
optional fixed32 best_dc_via_relay_pop_id = 2;
optional uint32 best_dc_ping_ms = 3;
}
optional fixed32 connection_id = 1;
optional bool override_active = 4;
repeated .CMsgSteamDatagramClientPingSampleReply.POP pops = 2;
repeated .CMsgSteamDatagramClientPingSampleReply.LegacyDataCenter legacy_data_centers = 3;
}
message CMsgSteamDatagramClientSwitchedPrimary {
message RouterQuality {
optional uint32 score = 1;
optional uint32 front_ping = 2;
optional uint32 back_ping = 3;
optional uint32 seconds_until_down = 4;
}
optional fixed32 connection_id = 1;
optional fixed32 from_ip = 2;
optional uint32 from_port = 3;
optional fixed32 from_router_cluster = 4;
optional uint32 from_active_time = 5;
optional uint32 from_active_packets_recv = 6;
optional string from_dropped_reason = 7;
optional uint32 gap_ms = 8;
optional .CMsgSteamDatagramClientSwitchedPrimary.RouterQuality from_quality_now = 9;
optional .CMsgSteamDatagramClientSwitchedPrimary.RouterQuality to_quality_now = 10;
optional .CMsgSteamDatagramClientSwitchedPrimary.RouterQuality from_quality_then = 11;
optional .CMsgSteamDatagramClientSwitchedPrimary.RouterQuality to_quality_then = 12;
}
message CMsgSteamDatagramConnectRequest {
optional fixed32 connection_id = 1;
optional fixed64 my_timestamp = 4;
optional uint32 ping_est_ms = 5;
optional uint32 virtual_port = 9;
optional uint32 gameserver_relay_session_id = 2;
optional .CMsgSteamDatagramSessionCryptInfoSigned crypt = 6;
optional .CMsgSteamDatagramCertificateSigned cert = 7;
optional fixed64 routing_secret = 10;
optional fixed64 legacy_client_steam_id = 3;
}
message CMsgSteamDatagramConnectOK {
optional fixed32 client_connection_id = 1;
optional fixed32 server_connection_id = 7;
optional fixed64 your_timestamp = 3;
optional uint32 delay_time_usec = 4;
optional uint32 gameserver_relay_session_id = 2;
optional .CMsgSteamDatagramSessionCryptInfoSigned crypt = 5;
optional .CMsgSteamDatagramCertificateSigned cert = 6;
}
message CMsgSteamNetworkingP2PSDRRoutingSummary {
optional uint32 initial_ping = 1;
optional uint32 initial_ping_front_local = 2;
optional uint32 initial_ping_front_remote = 3;
optional uint32 initial_score = 4;
optional fixed32 initial_pop_local = 5;
optional fixed32 initial_pop_remote = 6;
optional uint32 best_ping = 11;
optional uint32 best_ping_front_local = 12;
optional uint32 best_ping_front_remote = 13;
optional uint32 best_score = 14;
optional fixed32 best_pop_local = 15;
optional fixed32 best_pop_remote = 16;
optional uint32 best_time = 17;
optional uint32 negotiation_ms = 7;
optional uint32 selected_seconds = 8;
}
message CMsgSteamDatagramP2PRoutingSummary {
optional .CMsgSteamNetworkingICESessionSummary ice = 2;
optional .CMsgSteamNetworkingP2PSDRRoutingSummary sdr = 3;
}
message CMsgSteamDatagramConnectionClosed {
enum ERelayMode {
None = 0;
EndToEnd = 1;
ClosedByPeer = 2;
}
optional fixed32 to_connection_id = 7;
optional fixed32 from_connection_id = 8;
optional string from_identity_string = 15;
optional .CMsgSteamNetworkingIdentityLegacyBinary legacy_from_identity_binary = 13;
optional fixed64 legacy_from_steam_id = 3;
optional uint32 legacy_gameserver_relay_session_id = 2;
optional fixed32 to_relay_session_id = 9;
optional fixed32 from_relay_session_id = 10;
optional bytes forward_target_relay_routing_token = 11;
optional uint32 forward_target_revision = 12;
optional .CMsgSteamDatagramConnectionClosed.ERelayMode relay_mode = 4 [default = None];
optional string debug = 5;
optional uint32 reason_code = 6;
optional fixed64 routing_secret = 14;
optional bool not_primary_session = 16;
optional bool not_primary_transport = 19;
optional .CMsgSteamDatagramConnectionQuality quality_relay = 17;
optional .CMsgSteamDatagramConnectionQuality quality_e2e = 18;
optional .CMsgSteamDatagramP2PRoutingSummary p2p_routing_summary = 21;
}
message CMsgSteamDatagramNoConnection {
optional fixed32 to_connection_id = 5;
optional fixed32 from_connection_id = 6;
optional uint32 legacy_gameserver_relay_session_id = 2;
optional fixed32 to_relay_session_id = 9;
optional fixed32 from_relay_session_id = 10;
optional string from_identity_string = 7;
optional fixed64 legacy_from_steam_id = 3;
optional bool end_to_end = 4;
optional bool not_primary_session = 12;
optional bool not_primary_transport = 15;
optional .CMsgSteamDatagramConnectionQuality quality_relay = 13;
optional .CMsgSteamDatagramConnectionQuality quality_e2e = 14;
optional .CMsgSteamDatagramP2PRoutingSummary p2p_routing_summary = 16;
optional fixed64 routing_secret = 11;
optional fixed32 dummy_pad = 1023;
}
message CMsgSteamDatagramGameserverSessionRequest {
optional bytes ticket = 1;
optional fixed32 challenge_time = 3;
optional fixed64 challenge = 4;
optional fixed32 client_connection_id = 5;
optional fixed32 server_connection_id = 8;
optional uint32 network_config_version = 6;
optional uint32 protocol_version = 7;
optional string platform = 9;
optional string build = 10;
}
message CMsgSteamDatagramGameserverSessionEstablished {
optional fixed32 connection_id = 1;
optional string gameserver_identity_string = 2;
optional uint32 seconds_until_shutdown = 4;
optional uint32 seq_num_r2c = 6;
optional bytes dummy_legacy_identity_binary = 7;
optional fixed64 legacy_gameserver_steamid = 3;
}
message CMsgSteamDatagramConnectionStatsClientToRouter {
enum Flags {
ACK_REQUEST_RELAY = 1;
ACK_REQUEST_E2E = 2;
ACK_REQUEST_IMMEDIATE = 4;
NOT_PRIMARY_SESSION = 8;
}
optional .CMsgSteamDatagramConnectionQuality quality_relay = 1;
optional .CMsgSteamDatagramConnectionQuality quality_e2e = 2;
repeated fixed32 ack_relay = 4;
repeated fixed32 legacy_ack_e2e = 5;
optional uint32 flags = 6;
optional fixed32 client_connection_id = 8;
optional uint32 seq_num_c2r = 9;
optional uint32 seq_num_e2e = 10;
}
message CMsgSteamDatagramConnectionStatsRouterToClient {
enum Flags {
ACK_REQUEST_RELAY = 1;
ACK_REQUEST_E2E = 2;
ACK_REQUEST_IMMEDIATE = 4;
}
optional .CMsgSteamDatagramConnectionQuality quality_relay = 1;
optional .CMsgSteamDatagramConnectionQuality quality_e2e = 2;
optional uint32 seconds_until_shutdown = 6;
optional fixed32 migrate_request_ip = 10;
optional uint32 migrate_request_port = 11;
optional uint32 scoring_penalty_relay_cluster = 12;
repeated fixed32 ack_relay = 13;
repeated fixed32 legacy_ack_e2e = 14;
optional uint32 flags = 15;
optional fixed32 client_connection_id = 7;
optional uint32 seq_num_r2c = 8;
optional uint32 seq_num_e2e = 9;
}
message CMsgSteamDatagramConnectionStatsRouterToServer {
enum Flags {
ACK_REQUEST_RELAY = 1;
ACK_REQUEST_E2E = 2;
ACK_REQUEST_IMMEDIATE = 4;
}
optional .CMsgSteamDatagramConnectionQuality quality_relay = 1;
optional .CMsgSteamDatagramConnectionQuality quality_e2e = 2;
repeated fixed32 ack_relay = 10;
repeated fixed32 legacy_ack_e2e = 11;
optional uint32 flags = 12;
optional uint32 seq_num_r2s = 5;
optional uint32 seq_num_e2e = 6;
optional string client_identity_string = 15;
optional fixed64 legacy_client_steam_id = 7;
optional uint32 relay_session_id = 8;
optional fixed32 client_connection_id = 9;
optional fixed32 server_connection_id = 13;
optional fixed64 routing_secret = 14;
}
message CMsgSteamDatagramConnectionStatsServerToRouter {
enum Flags {
ACK_REQUEST_RELAY = 1;
ACK_REQUEST_E2E = 2;
ACK_REQUEST_IMMEDIATE = 4;
}
optional .CMsgSteamDatagramConnectionQuality quality_relay = 1;
optional .CMsgSteamDatagramConnectionQuality quality_e2e = 2;
repeated fixed32 ack_relay = 8;
repeated fixed32 legacy_ack_e2e = 9;
optional uint32 flags = 10;
optional uint32 seq_num_s2r = 3;
optional uint32 seq_num_e2e = 4;
optional uint32 relay_session_id = 6;
optional fixed32 client_connection_id = 7;
optional fixed32 server_connection_id = 11;
}
message CMsgSteamDatagramP2PSessionRequestBody {
optional fixed32 challenge_time = 1;
optional fixed64 challenge = 2;
optional fixed32 client_connection_id = 3;
optional fixed64 legacy_peer_steam_id = 4;
optional string peer_identity_string = 11;
optional fixed32 peer_connection_id = 5;
optional uint32 protocol_version = 8;
optional uint32 network_config_version = 9;
optional fixed32 unused_public_ip = 10;
optional string platform = 12;
optional string build = 13;
}
message CMsgSteamDatagramP2PSessionRequest {
optional .CMsgSteamDatagramCertificateSigned cert = 1;
optional bytes body = 2;
optional bytes signature = 3;
}
message CMsgSteamDatagramP2PSessionEstablished {
optional fixed32 connection_id = 1;
optional uint32 seconds_until_shutdown = 3;
optional bytes relay_routing_token = 4;
optional uint32 seq_num_r2c = 5;
}
message CMsgSteamDatagramConnectionStatsP2PClientToRouter {
enum Flags {
ACK_REQUEST_RELAY = 1;
ACK_REQUEST_E2E = 2;
ACK_REQUEST_IMMEDIATE = 4;
NOT_PRIMARY_SESSION = 8;
NOT_PRIMARY_TRANSPORT_E2E = 16;
}
optional .CMsgSteamDatagramConnectionQuality quality_relay = 1;
optional .CMsgSteamDatagramConnectionQuality quality_e2e = 2;
optional .CMsgSteamDatagramP2PRoutingSummary p2p_routing_summary = 14;
repeated fixed32 ack_relay = 3;
repeated fixed32 legacy_ack_e2e = 4;
optional uint32 flags = 5;
optional bytes forward_target_relay_routing_token = 6;
optional uint32 forward_target_revision = 7;
optional bytes routes = 8;
optional uint32 ack_peer_routes_revision = 9;
optional fixed32 connection_id = 10;
optional uint32 seq_num_c2r = 11;
optional uint32 seq_num_e2e = 12;
}
message CMsgSteamDatagramConnectionStatsP2PRouterToClient {
enum Flags {
ACK_REQUEST_RELAY = 1;
ACK_REQUEST_E2E = 2;
ACK_REQUEST_IMMEDIATE = 4;
NOT_PRIMARY_TRANSPORT_E2E = 16;
}
optional .CMsgSteamDatagramConnectionQuality quality_relay = 1;
optional .CMsgSteamDatagramConnectionQuality quality_e2e = 2;
optional uint32 seconds_until_shutdown = 3;
optional fixed32 migrate_request_ip = 4;
optional uint32 migrate_request_port = 5;
optional uint32 scoring_penalty_relay_cluster = 6;
repeated fixed32 ack_relay = 7;
repeated fixed32 legacy_ack_e2e = 8;
optional uint32 flags = 9;
optional uint32 ack_forward_target_revision = 10;
optional bytes routes = 11;
optional uint32 ack_peer_routes_revision = 12;
optional fixed32 connection_id = 13;
optional uint32 seq_num_r2c = 14;
optional uint32 seq_num_e2e = 15;
}
message CMsgSteamDatagramP2PBadRouteRouterToClient {
optional fixed32 connection_id = 1;
optional bytes failed_relay_routing_token = 2;
optional uint32 ack_forward_target_revision = 3;
optional fixed64 kludge_pad = 99;
}
message CMsgSteamDatagramP2PRoutes {
message RelayCluster {
optional fixed32 pop_id = 1;
optional uint32 ping_ms = 2;
optional uint32 score_penalty = 3;
optional bytes session_relay_routing_token = 4;
}
message Route {
optional fixed32 my_pop_id = 1;
optional fixed32 your_pop_id = 2;
optional uint32 legacy_score = 3;
optional uint32 interior_score = 4;
}
repeated .CMsgSteamDatagramP2PRoutes.RelayCluster relay_clusters = 1;
repeated .CMsgSteamDatagramP2PRoutes.Route routes = 2;
optional uint32 revision = 3;
}
message CMsgSteamDatagramSetSecondaryAddressRequest {
optional fixed32 client_main_ip = 1;
optional fixed32 client_main_port = 2;
optional fixed32 client_connection_id = 3;
optional string client_identity = 4;
optional bool request_send_duplication = 5;
optional bytes kludge_pad = 99;
}
message CMsgSteamDatagramSetSecondaryAddressResult {
optional bool success = 1;
optional string message = 2;
}

577
protos/steammessages.proto Normal file
View file

@ -0,0 +1,577 @@
import "google/protobuf/descriptor.proto";
option optimize_for = SPEED;
option cc_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 GCProtoBufMsgSrc {
GCProtoBufMsgSrc_Unspecified = 0;
GCProtoBufMsgSrc_FromSystem = 1;
GCProtoBufMsgSrc_FromSteamID = 2;
GCProtoBufMsgSrc_FromGC = 3;
GCProtoBufMsgSrc_ReplySystem = 4;
}
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 uint32 gc_dir_index_source = 201;
}
message CMsgWebAPIKey {
optional uint32 status = 1 [default = 255];
optional uint32 account_id = 2 [default = 0];
optional uint32 publisher_group_id = 3 [default = 0];
optional uint32 key_id = 4;
optional string domain = 5;
}
message CMsgHttpRequest {
message RequestHeader {
optional string name = 1;
optional string value = 2;
}
message QueryParam {
optional string name = 1;
optional bytes value = 2;
}
optional uint32 request_method = 1;
optional string hostname = 2;
optional string url = 3;
repeated .CMsgHttpRequest.RequestHeader headers = 4;
repeated .CMsgHttpRequest.QueryParam get_params = 5;
repeated .CMsgHttpRequest.QueryParam post_params = 6;
optional bytes body = 7;
optional uint32 absolute_timeout = 8;
}
message CMsgWebAPIRequest {
optional string UNUSED_job_name = 1;
optional string interface_name = 2;
optional string method_name = 3;
optional uint32 version = 4;
optional .CMsgWebAPIKey api_key = 5;
optional .CMsgHttpRequest request = 6;
optional uint32 routing_app_id = 7;
}
message CMsgHttpResponse {
message ResponseHeader {
optional string name = 1;
optional string value = 2;
}
optional uint32 status_code = 1;
repeated .CMsgHttpResponse.ResponseHeader headers = 2;
optional bytes body = 3;
}
message CMsgAMFindAccounts {
optional uint32 search_type = 1;
optional string search_string = 2;
}
message CMsgAMFindAccountsResponse {
repeated fixed64 steam_id = 1;
}
message CMsgNotifyWatchdog {
optional uint32 source = 1;
optional uint32 alert_type = 2;
optional uint32 alert_destination = 3;
optional bool critical = 4;
optional uint32 time = 5;
optional uint32 appid = 6;
optional string text = 7;
}
message CMsgAMGetLicenses {
optional fixed64 steamid = 1;
}
message CMsgPackageLicense {
optional uint32 package_id = 1;
optional uint32 time_created = 2;
optional uint32 owner_id = 3;
}
message CMsgAMGetLicensesResponse {
repeated .CMsgPackageLicense license = 1;
optional uint32 result = 2;
}
message CMsgAMGetUserGameStats {
optional fixed64 steam_id = 1;
optional fixed64 game_id = 2;
repeated uint32 stats = 3;
}
message CMsgAMGetUserGameStatsResponse {
message Stats {
optional uint32 stat_id = 1;
optional uint32 stat_value = 2;
}
message Achievement_Blocks {
optional uint32 achievement_id = 1;
optional uint32 achievement_bit_id = 2;
optional fixed32 unlock_time = 3;
}
optional fixed64 steam_id = 1;
optional fixed64 game_id = 2;
optional int32 eresult = 3 [default = 2];
repeated .CMsgAMGetUserGameStatsResponse.Stats stats = 4;
repeated .CMsgAMGetUserGameStatsResponse.Achievement_Blocks achievement_blocks = 5;
}
message CMsgGCGetCommandList {
optional uint32 app_id = 1;
optional string command_prefix = 2;
}
message CMsgGCGetCommandListResponse {
repeated string command_name = 1;
}
message CGCMsgMemCachedGet {
repeated string keys = 1;
}
message CGCMsgMemCachedGetResponse {
message ValueTag {
optional bool found = 1;
optional bytes value = 2;
}
repeated .CGCMsgMemCachedGetResponse.ValueTag values = 1;
}
message CGCMsgMemCachedSet {
message KeyPair {
optional string name = 1;
optional bytes value = 2;
}
repeated .CGCMsgMemCachedSet.KeyPair keys = 1;
}
message CGCMsgMemCachedDelete {
repeated string keys = 1;
}
message CGCMsgMemCachedStats {
}
message CGCMsgMemCachedStatsResponse {
optional uint64 curr_connections = 1;
optional uint64 cmd_get = 2;
optional uint64 cmd_set = 3;
optional uint64 cmd_flush = 4;
optional uint64 get_hits = 5;
optional uint64 get_misses = 6;
optional uint64 delete_hits = 7;
optional uint64 delete_misses = 8;
optional uint64 bytes_read = 9;
optional uint64 bytes_written = 10;
optional uint64 limit_maxbytes = 11;
optional uint64 curr_items = 12;
optional uint64 evictions = 13;
optional uint64 bytes = 14;
}
message CGCMsgSQLStats {
optional uint32 schema_catalog = 1;
}
message CGCMsgSQLStatsResponse {
optional uint32 threads = 1;
optional uint32 threads_connected = 2;
optional uint32 threads_active = 3;
optional uint32 operations_submitted = 4;
optional uint32 prepared_statements_executed = 5;
optional uint32 non_prepared_statements_executed = 6;
optional uint32 deadlock_retries = 7;
optional uint32 operations_timed_out_in_queue = 8;
optional uint32 errors = 9;
}
message CMsgAMAddFreeLicense {
optional fixed64 steamid = 1;
optional uint32 ip_public = 2;
optional uint32 packageid = 3;
optional string store_country_code = 4;
}
message CMsgAMAddFreeLicenseResponse {
optional int32 eresult = 1 [default = 2];
optional int32 purchase_result_detail = 2;
optional fixed64 transid = 3;
}
message CGCMsgGetIPLocation {
repeated fixed32 ips = 1;
}
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;
}
message CGCMsgSystemStatsSchema {
optional uint32 gc_app_id = 1;
optional bytes schema_kv = 2;
}
message CGCMsgGetSystemStats {
}
message CGCMsgGetSystemStatsResponse {
optional uint32 gc_app_id = 1;
optional bytes stats_kv = 2;
optional uint32 active_jobs = 3;
optional uint32 yielding_jobs = 4;
optional uint32 user_sessions = 5;
optional uint32 game_server_sessions = 6;
optional uint32 socaches = 7;
optional uint32 socaches_to_unload = 8;
optional uint32 socaches_loading = 9;
optional uint32 writeback_queue = 10;
optional uint32 steamid_locks = 11;
optional uint32 logon_queue = 12;
optional uint32 logon_jobs = 13;
}
message CMsgAMSendEmail {
message ReplacementToken {
optional string token_name = 1;
optional string token_value = 2;
}
message PersonaNameReplacementToken {
optional fixed64 steamid = 1;
optional string token_name = 2;
}
optional fixed64 steamid = 1;
optional uint32 email_msg_type = 2;
optional uint32 email_format = 3;
repeated .CMsgAMSendEmail.PersonaNameReplacementToken persona_name_tokens = 5;
optional uint32 source_gc = 6;
repeated .CMsgAMSendEmail.ReplacementToken tokens = 7;
}
message CMsgAMSendEmailResponse {
optional uint32 eresult = 1 [default = 2];
}
message CMsgGCGetEmailTemplate {
optional uint32 app_id = 1;
optional uint32 email_msg_type = 2;
optional int32 email_lang = 3;
optional int32 email_format = 4;
}
message CMsgGCGetEmailTemplateResponse {
optional uint32 eresult = 1 [default = 2];
optional bool template_exists = 2;
optional string template = 3;
}
message CMsgAMGrantGuestPasses2 {
optional fixed64 steam_id = 1;
optional uint32 package_id = 2;
optional int32 passes_to_grant = 3;
optional int32 days_to_expiration = 4;
optional int32 action = 5;
}
message CMsgAMGrantGuestPasses2Response {
optional int32 eresult = 1 [default = 2];
optional int32 passes_granted = 2 [default = 0];
}
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_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;
}
message CMsgGCCheckClanMembership {
optional fixed64 steamid = 1;
optional uint32 clanid = 2;
}
message CMsgGCCheckClanMembership_Response {
optional bool ismember = 1;
}
message CMsgGCGetPersonaNames {
repeated fixed64 steamids = 1;
}
message CMsgGCGetPersonaNames_Response {
message PersonaName {
optional fixed64 steamid = 1;
optional string persona_name = 2;
}
repeated .CMsgGCGetPersonaNames_Response.PersonaName succeeded_lookups = 1;
repeated fixed64 failed_lookup_steamids = 2;
}
message CMsgGCCheckFriendship {
optional fixed64 steamid_left = 1;
optional fixed64 steamid_right = 2;
}
message CMsgGCCheckFriendship_Response {
optional bool success = 1;
optional bool found_friendship = 2;
}
message CMsgGCMsgMasterSetDirectory {
message SubGC {
optional uint32 dir_index = 1;
optional string name = 2;
optional string box = 3;
optional string command_line = 4;
optional string gc_binary = 5;
}
optional uint32 master_dir_index = 1;
repeated .CMsgGCMsgMasterSetDirectory.SubGC dir = 2;
}
message CMsgGCMsgMasterSetDirectory_Response {
optional int32 eresult = 1 [default = 2];
}
message CMsgGCMsgWebAPIJobRequestForwardResponse {
optional uint32 dir_index = 1;
}
message CGCSystemMsg_GetPurchaseTrust_Request {
optional fixed64 steamid = 1;
}
message CGCSystemMsg_GetPurchaseTrust_Response {
optional bool has_prior_purchase_history = 1;
optional bool has_no_recent_password_resets = 2;
optional bool is_wallet_cash_trusted = 3;
optional uint32 time_all_trusted = 4;
}
message CMsgGCHAccountVacStatusChange {
optional fixed64 steam_id = 1;
optional uint32 app_id = 2;
optional uint32 rtime_vacban_starts = 3;
optional bool is_banned_now = 4;
optional bool is_banned_future = 5;
}
message CMsgGCHAccountTradeBanStatusChange {
optional fixed64 steamid = 1;
optional uint32 appid = 2;
optional bool is_banned = 3;
optional uint32 time_banned_until = 4;
}
message CMsgGCHAccountLockStatusChange {
optional fixed64 steamid = 1;
optional uint32 appid = 2;
optional bool is_locked = 3;
}
message CMsgGCHVacVerificationChange {
optional fixed64 steamid = 1;
optional uint32 appid = 2;
optional bool is_verified = 3;
}
message CMsgGCHAccountPhoneNumberChange {
optional fixed64 steamid = 1;
optional uint32 appid = 2;
optional uint64 phone_id = 3;
optional bool is_verified = 4;
optional bool is_identifying = 5;
}
message CMsgGCHAccountTwoFactorChange {
optional fixed64 steamid = 1;
optional uint32 appid = 2;
optional bool twofactor_enabled = 3;
}
message CMsgGCGetPartnerAccountLink {
optional fixed64 steamid = 1;
}
message CMsgGCGetPartnerAccountLink_Response {
optional uint32 pwid = 1;
optional uint32 nexonid = 2;
}
message CMsgGCRoutingInfo {
enum RoutingMethod {
RANDOM = 0;
DISCARD = 1;
CLIENT_STEAMID = 2;
PROTOBUF_FIELD_UINT64 = 3;
WEBAPI_PARAM_UINT64 = 4;
}
repeated uint32 dir_index = 1;
optional .CMsgGCRoutingInfo.RoutingMethod method = 2 [default = RANDOM];
optional .CMsgGCRoutingInfo.RoutingMethod fallback = 3 [default = DISCARD];
optional uint32 protobuf_field = 4;
optional string webapi_param = 5;
}
message CMsgGCMsgMasterSetWebAPIRouting {
message Entry {
optional string interface_name = 1;
optional string method_name = 2;
optional .CMsgGCRoutingInfo routing = 3;
}
repeated .CMsgGCMsgMasterSetWebAPIRouting.Entry entries = 1;
}
message CMsgGCMsgMasterSetClientMsgRouting {
message Entry {
optional uint32 msg_type = 1;
optional .CMsgGCRoutingInfo routing = 2;
}
repeated .CMsgGCMsgMasterSetClientMsgRouting.Entry entries = 1;
}
message CMsgGCMsgMasterSetWebAPIRouting_Response {
optional int32 eresult = 1 [default = 2];
}
message CMsgGCMsgMasterSetClientMsgRouting_Response {
optional int32 eresult = 1 [default = 2];
}
message CMsgGCMsgSetOptions {
message MessageRange {
required uint32 low = 1;
required uint32 high = 2;
}
enum Option {
NOTIFY_USER_SESSIONS = 0;
NOTIFY_SERVER_SESSIONS = 1;
NOTIFY_ACHIEVEMENTS = 2;
NOTIFY_VAC_ACTION = 3;
}
enum GCSQLVersion {
GCSQL_VERSION_BASELINE = 1;
GCSQL_VERSION_BOOLTYPE = 2;
}
repeated .CMsgGCMsgSetOptions.Option options = 1;
repeated .CMsgGCMsgSetOptions.MessageRange client_msg_ranges = 2;
optional .CMsgGCMsgSetOptions.GCSQLVersion gcsql_version = 3 [default = GCSQL_VERSION_BASELINE];
}
message CMsgGCHUpdateSession {
message ExtraField {
optional string name = 1;
optional string value = 2;
}
optional fixed64 steam_id = 1;
optional uint32 app_id = 2;
optional bool online = 3;
optional fixed64 server_steam_id = 4;
optional uint32 server_addr = 5;
optional uint32 server_port = 6;
optional uint32 os_type = 7;
optional uint32 client_addr = 8;
repeated .CMsgGCHUpdateSession.ExtraField extra_fields = 9;
}
message CMsgNotificationOfSuspiciousActivity {
message MultipleGameInstances {
optional uint32 app_instance_count = 1;
repeated fixed64 other_steamids = 2;
}
optional fixed64 steamid = 1;
optional uint32 appid = 2;
optional .CMsgNotificationOfSuspiciousActivity.MultipleGameInstances multiple_instances = 3;
}

View file

@ -0,0 +1,332 @@
import "google/protobuf/descriptor.proto";
option optimize_for = SPEED;
option cc_generic_services = true;
option (force_php_generation) = true;
extend .google.protobuf.MessageOptions {
optional int32 msgpool_soft_limit = 50000 [default = 32];
optional int32 msgpool_hard_limit = 50001 [default = 384];
}
extend .google.protobuf.FileOptions {
optional bool force_php_generation = 50000 [default = false];
}
extend .google.protobuf.FieldOptions {
optional bool php_output_always_number = 50020 [default = false];
optional bool allow_field_named_steam_id = 50024 [default = false];
}
enum EBanContentCheckResult {
k_EBanContentCheckResult_NotScanned = 0;
k_EBanContentCheckResult_Reset = 1;
k_EBanContentCheckResult_NeedsChecking = 2;
k_EBanContentCheckResult_VeryUnlikely = 5;
k_EBanContentCheckResult_Unlikely = 30;
k_EBanContentCheckResult_Possible = 50;
k_EBanContentCheckResult_Likely = 75;
k_EBanContentCheckResult_VeryLikely = 100;
}
enum EProtoClanEventType {
k_EClanOtherEvent = 1;
k_EClanGameEvent = 2;
k_EClanPartyEvent = 3;
k_EClanMeetingEvent = 4;
k_EClanSpecialCauseEvent = 5;
k_EClanMusicAndArtsEvent = 6;
k_EClanSportsEvent = 7;
k_EClanTripEvent = 8;
k_EClanChatEvent = 9;
k_EClanGameReleaseEvent = 10;
k_EClanBroadcastEvent = 11;
k_EClanSmallUpdateEvent = 12;
k_EClanPreAnnounceMajorUpdateEvent = 13;
k_EClanMajorUpdateEvent = 14;
k_EClanDLCReleaseEvent = 15;
k_EClanFutureReleaseEvent = 16;
k_EClanESportTournamentStreamEvent = 17;
k_EClanDevStreamEvent = 18;
k_EClanFamousStreamEvent = 19;
k_EClanGameSalesEvent = 20;
k_EClanGameItemSalesEvent = 21;
k_EClanInGameBonusXPEvent = 22;
k_EClanInGameLootEvent = 23;
k_EClanInGamePerksEvent = 24;
k_EClanInGameChallengeEvent = 25;
k_EClanInGameContestEvent = 26;
k_EClanIRLEvent = 27;
k_EClanNewsEvent = 28;
k_EClanBetaReleaseEvent = 29;
k_EClanInGameContentReleaseEvent = 30;
k_EClanFreeTrial = 31;
k_EClanSeasonRelease = 32;
k_EClanSeasonUpdate = 33;
k_EClanCrosspostEvent = 34;
k_EClanInGameEventGeneral = 35;
}
enum PartnerEventNotificationType {
k_EEventStart = 0;
k_EEventBroadcastStart = 1;
k_EEventMatchStart = 2;
k_EEventPartnerMaxType = 3;
}
message CMsgIPAddress {
oneof ip {
fixed32 v4 = 1;
bytes v6 = 2;
}
}
message CMsgIPAddressBucket {
optional .CMsgIPAddress original_ip_address = 1;
optional fixed64 bucket = 2;
}
message CMsgGCRoutingProtoBufHeader {
optional uint64 dst_gcid_queue = 1;
optional uint32 dst_gc_dir_index = 2;
}
message CMsgProtoBufHeader {
enum ESessionDisposition {
k_ESessionDispositionNormal = 0;
k_ESessionDispositionDisconnect = 1;
}
optional fixed64 steamid = 1;
optional int32 client_sessionid = 2;
optional uint32 routing_appid = 3;
optional fixed64 jobid_source = 10 [default = 18446744073709551615];
optional fixed64 jobid_target = 11 [default = 18446744073709551615];
optional string target_job_name = 12;
optional int32 seq_num = 24;
optional int32 eresult = 13 [default = 2];
optional string error_message = 14;
optional uint32 auth_account_flags = 16;
optional uint32 token_source = 22;
optional bool admin_spoofing_user = 23;
optional int32 transport_error = 17 [default = 1];
optional uint64 messageid = 18 [default = 18446744073709551615];
optional uint32 publisher_group_id = 19;
optional uint32 sysid = 20;
optional uint64 trace_tag = 21;
optional uint32 webapi_key_id = 25;
optional bool is_from_external_source = 26;
repeated uint32 forward_to_sysid = 27;
optional uint32 cm_sysid = 28;
optional uint32 launcher_type = 31 [default = 0];
optional uint32 realm = 32 [default = 0];
optional int32 timeout_ms = 33 [default = -1];
optional string debug_source = 34;
optional uint32 debug_source_string_index = 35;
optional uint64 token_id = 36;
optional .CMsgGCRoutingProtoBufHeader routing_gc = 37;
optional .CMsgProtoBufHeader.ESessionDisposition session_disposition = 38 [default = k_ESessionDispositionNormal];
optional string wg_token = 39;
optional string webui_auth_key = 40;
oneof ip_addr {
uint32 ip = 15;
bytes ip_v6 = 29;
}
}
message CMsgMulti {
optional uint32 size_unzipped = 1;
optional bytes message_body = 2;
}
message CMsgProtobufWrapped {
optional bytes message_body = 1;
}
message CMsgAuthTicket {
optional uint32 estate = 1;
optional uint32 eresult = 2 [default = 2];
optional fixed64 steamid = 3;
optional fixed64 gameid = 4;
optional uint32 h_steam_pipe = 5;
optional uint32 ticket_crc = 6;
optional bytes ticket = 7;
optional bytes server_secret = 8;
optional uint32 ticket_type = 9;
}
message CCDDBAppDetailCommon {
optional uint32 appid = 1;
optional string name = 2;
optional string icon = 3;
optional bool tool = 6;
optional bool demo = 7;
optional bool media = 8;
optional bool community_visible_stats = 9;
optional string friendly_name = 10;
optional string propagation = 11;
optional bool has_adult_content = 12;
optional bool is_visible_in_steam_china = 13;
optional uint32 app_type = 14;
optional bool has_adult_content_sex = 15;
optional bool has_adult_content_violence = 16;
repeated uint32 content_descriptorids = 17;
}
message CMsgAppRights {
optional bool edit_info = 1;
optional bool publish = 2;
optional bool view_error_data = 3;
optional bool download = 4;
optional bool upload_cdkeys = 5;
optional bool generate_cdkeys = 6;
optional bool view_financials = 7;
optional bool manage_ceg = 8;
optional bool manage_signing = 9;
optional bool manage_cdkeys = 10;
optional bool edit_marketing = 11;
optional bool economy_support = 12;
optional bool economy_support_supervisor = 13;
optional bool manage_pricing = 14;
optional bool broadcast_live = 15;
optional bool view_marketing_traffic = 16;
optional bool edit_store_display_content = 17;
}
message CCuratorPreferences {
optional uint32 supported_languages = 1;
optional bool platform_windows = 2;
optional bool platform_mac = 3;
optional bool platform_linux = 4;
optional bool vr_content = 5;
optional bool adult_content_violence = 6;
optional bool adult_content_sex = 7;
optional uint32 timestamp_updated = 8;
repeated uint32 tagids_curated = 9;
repeated uint32 tagids_filtered = 10;
optional string website_title = 11;
optional string website_url = 12;
optional string discussion_url = 13;
optional bool show_broadcast = 14;
}
message CLocalizationToken {
optional uint32 language = 1;
optional string localized_string = 2;
}
message CClanEventUserNewsTuple {
optional uint32 clanid = 1;
optional fixed64 event_gid = 2;
optional fixed64 announcement_gid = 3;
optional uint32 rtime_start = 4;
optional uint32 rtime_end = 5;
optional uint32 priority_score = 6;
optional uint32 type = 7;
optional uint32 clamp_range_slot = 8;
optional uint32 appid = 9;
optional uint32 rtime32_last_modified = 10;
}
message CClanMatchEventByRange {
optional uint32 rtime_before = 1;
optional uint32 rtime_after = 2;
optional uint32 qualified = 3;
repeated .CClanEventUserNewsTuple events = 4;
}
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;
optional fixed64 event_gid = 13;
optional int32 voteupcount = 14;
optional int32 votedowncount = 15;
optional .EBanContentCheckResult ban_check_result = 16 [default = k_EBanContentCheckResult_NotScanned];
optional bool banned = 17;
}
message CClanEventData {
optional fixed64 gid = 1;
optional fixed64 clan_steamid = 2;
optional string event_name = 3;
optional .EProtoClanEventType event_type = 4 [default = k_EClanOtherEvent];
optional uint32 appid = 5;
optional string server_address = 6;
optional string server_password = 7;
optional uint32 rtime32_start_time = 8;
optional uint32 rtime32_end_time = 9;
optional int32 comment_count = 10;
optional fixed64 creator_steamid = 11;
optional fixed64 last_update_steamid = 12;
optional string event_notes = 13;
optional string jsondata = 14;
optional .CCommunity_ClanAnnouncementInfo announcement_body = 15;
optional bool published = 16;
optional bool hidden = 17;
optional uint32 rtime32_visibility_start = 18;
optional uint32 rtime32_visibility_end = 19;
optional uint32 broadcaster_accountid = 20;
optional uint32 follower_count = 21;
optional uint32 ignore_count = 22;
optional fixed64 forum_topic_id = 23;
optional uint32 rtime32_last_modified = 24;
optional fixed64 news_post_gid = 25;
optional uint32 rtime_mod_reviewed = 26;
optional uint32 featured_app_tagid = 27;
repeated uint32 referenced_appids = 28;
optional uint32 build_id = 29;
optional string build_branch = 30;
}
message CBilling_Address {
optional string first_name = 1;
optional string last_name = 2;
optional string address1 = 3;
optional string address2 = 4;
optional string city = 5;
optional string us_state = 6;
optional string country_code = 7;
optional string postcode = 8;
optional int32 zip_plus4 = 9;
optional string phone = 10;
}
message CPackageReservationStatus {
optional uint32 packageid = 1;
optional int32 reservation_state = 2;
optional int32 queue_position = 3;
optional int32 total_queue_size = 4;
optional string reservation_country_code = 5;
optional bool expired = 6;
optional uint32 time_expires = 7;
optional uint32 time_reserved = 8;
}
message CMsgKeyValuePair {
optional string name = 1;
optional string value = 2;
}
message CMsgKeyValueSet {
repeated .CMsgKeyValuePair pairs = 1;
}
message UserContentDescriptorPreferences {
message ContentDescriptor {
optional uint32 content_descriptorid = 1;
optional uint32 timestamp_added = 2;
}
repeated .UserContentDescriptorPreferences.ContentDescriptor content_descriptors_to_exclude = 1;
}

View file

@ -0,0 +1,42 @@
import "steamnetworkingsockets_messages.proto";
import "steamdatagram_messages_sdr.proto";
option optimize_for = SPEED;
option cc_generic_services = true;
message CGameNetworkingUI_GlobalState {
}
message CGameNetworkingUI_ConnectionState {
optional string connection_key = 1;
optional uint32 appid = 2;
optional fixed32 connection_id_local = 3;
optional string identity_local = 4;
optional string identity_remote = 5;
optional uint32 connection_state = 10;
optional uint32 start_time = 12;
optional uint32 close_time = 13;
optional uint32 close_reason = 14;
optional string close_message = 15;
optional string status_loc_token = 16;
optional uint32 transport_kind = 20;
optional string sdrpopid_local = 21;
optional string sdrpopid_remote = 22;
optional string address_remote = 23;
optional .CMsgSteamDatagramP2PRoutingSummary p2p_routing = 24;
optional uint32 ping_interior = 25;
optional uint32 ping_remote_front = 26;
optional uint32 ping_default_internet_route = 27;
optional .CMsgSteamDatagramConnectionQuality e2e_quality_local = 30;
optional .CMsgSteamDatagramConnectionQuality e2e_quality_remote = 31;
optional uint64 e2e_quality_remote_instantaneous_time = 32;
optional uint64 e2e_quality_remote_lifetime_time = 33;
optional .CMsgSteamDatagramConnectionQuality front_quality_local = 40;
optional .CMsgSteamDatagramConnectionQuality front_quality_remote = 41;
optional uint64 front_quality_remote_instantaneous_time = 42;
optional uint64 front_quality_remote_lifetime_time = 43;
}
message CGameNetworkingUI_Message {
repeated .CGameNetworkingUI_ConnectionState connection_state = 1;
}

View file

@ -0,0 +1,204 @@
import "steamnetworkingsockets_messages_certs.proto";
option optimize_for = SPEED;
option cc_generic_services = false;
enum ESteamNetworkingSocketsCipher {
k_ESteamNetworkingSocketsCipher_INVALID = 0;
k_ESteamNetworkingSocketsCipher_NULL = 1;
k_ESteamNetworkingSocketsCipher_AES_256_GCM = 2;
}
message CMsgSteamDatagramSessionCryptInfo {
enum EKeyType {
INVALID = 0;
CURVE25519 = 1;
}
optional .CMsgSteamDatagramSessionCryptInfo.EKeyType key_type = 1 [default = INVALID];
optional bytes key_data = 2;
optional fixed64 nonce = 3;
optional uint32 protocol_version = 4;
repeated .ESteamNetworkingSocketsCipher ciphers = 5;
}
message CMsgSteamDatagramSessionCryptInfoSigned {
optional bytes info = 1;
optional bytes signature = 2;
}
message CMsgSteamDatagramDiagnostic {
optional uint32 severity = 1;
optional string text = 2;
}
message CMsgSteamDatagramLinkInstantaneousStats {
optional uint32 out_packets_per_sec_x10 = 1;
optional uint32 out_bytes_per_sec = 2;
optional uint32 in_packets_per_sec_x10 = 3;
optional uint32 in_bytes_per_sec = 4;
optional uint32 ping_ms = 5;
optional uint32 packets_dropped_pct = 6;
optional uint32 packets_weird_sequence_pct = 7;
optional uint32 peak_jitter_usec = 8;
}
message CMsgSteamDatagramLinkLifetimeStats {
optional uint32 connected_seconds = 2;
optional uint64 packets_sent = 3;
optional uint64 kb_sent = 4;
optional uint64 packets_recv = 5;
optional uint64 kb_recv = 6;
optional uint64 packets_recv_sequenced = 7;
optional uint64 packets_recv_dropped = 8;
optional uint64 packets_recv_out_of_order = 9;
optional uint64 packets_recv_duplicate = 10;
optional uint64 packets_recv_lurch = 11;
repeated uint64 multipath_packets_recv_sequenced = 12;
repeated uint64 multipath_packets_recv_later = 13;
optional uint32 multipath_send_enabled = 14;
optional uint32 quality_histogram_100 = 21;
optional uint32 quality_histogram_99 = 22;
optional uint32 quality_histogram_97 = 23;
optional uint32 quality_histogram_95 = 24;
optional uint32 quality_histogram_90 = 25;
optional uint32 quality_histogram_75 = 26;
optional uint32 quality_histogram_50 = 27;
optional uint32 quality_histogram_1 = 28;
optional uint32 quality_histogram_dead = 29;
optional uint32 quality_ntile_2nd = 30;
optional uint32 quality_ntile_5th = 31;
optional uint32 quality_ntile_25th = 32;
optional uint32 quality_ntile_50th = 33;
optional uint32 ping_histogram_25 = 41;
optional uint32 ping_histogram_50 = 42;
optional uint32 ping_histogram_75 = 43;
optional uint32 ping_histogram_100 = 44;
optional uint32 ping_histogram_125 = 45;
optional uint32 ping_histogram_150 = 46;
optional uint32 ping_histogram_200 = 47;
optional uint32 ping_histogram_300 = 48;
optional uint32 ping_histogram_max = 49;
optional uint32 ping_ntile_5th = 50;
optional uint32 ping_ntile_50th = 51;
optional uint32 ping_ntile_75th = 52;
optional uint32 ping_ntile_95th = 53;
optional uint32 ping_ntile_98th = 54;
optional uint32 jitter_histogram_negligible = 61;
optional uint32 jitter_histogram_1 = 62;
optional uint32 jitter_histogram_2 = 63;
optional uint32 jitter_histogram_5 = 64;
optional uint32 jitter_histogram_10 = 65;
optional uint32 jitter_histogram_20 = 66;
optional uint32 txspeed_max = 67;
optional uint32 txspeed_histogram_16 = 68;
optional uint32 txspeed_histogram_32 = 69;
optional uint32 txspeed_histogram_64 = 70;
optional uint32 txspeed_histogram_128 = 71;
optional uint32 txspeed_histogram_256 = 72;
optional uint32 txspeed_histogram_512 = 73;
optional uint32 txspeed_histogram_1024 = 74;
optional uint32 txspeed_histogram_max = 75;
optional uint32 txspeed_ntile_5th = 76;
optional uint32 txspeed_ntile_50th = 77;
optional uint32 txspeed_ntile_75th = 78;
optional uint32 txspeed_ntile_95th = 79;
optional uint32 txspeed_ntile_98th = 80;
optional uint32 rxspeed_max = 81;
optional uint32 rxspeed_histogram_16 = 82;
optional uint32 rxspeed_histogram_32 = 83;
optional uint32 rxspeed_histogram_64 = 84;
optional uint32 rxspeed_histogram_128 = 85;
optional uint32 rxspeed_histogram_256 = 86;
optional uint32 rxspeed_histogram_512 = 87;
optional uint32 rxspeed_histogram_1024 = 88;
optional uint32 rxspeed_histogram_max = 89;
optional uint32 rxspeed_ntile_5th = 90;
optional uint32 rxspeed_ntile_50th = 91;
optional uint32 rxspeed_ntile_75th = 92;
optional uint32 rxspeed_ntile_95th = 93;
optional uint32 rxspeed_ntile_98th = 94;
}
message CMsgSteamDatagramConnectionQuality {
optional .CMsgSteamDatagramLinkInstantaneousStats instantaneous = 1;
optional .CMsgSteamDatagramLinkLifetimeStats lifetime = 2;
}
message CMsgICERendezvous {
message Auth {
optional string pwd_frag = 1;
}
message Candidate {
optional string candidate = 3;
}
optional .CMsgICERendezvous.Auth auth = 2;
optional .CMsgICERendezvous.Candidate add_candidate = 1;
}
message CMsgSteamNetworkingP2PRendezvous {
message ConnectRequest {
optional .CMsgSteamDatagramSessionCryptInfoSigned crypt = 6;
optional .CMsgSteamDatagramCertificateSigned cert = 7;
optional uint32 to_virtual_port = 9;
optional uint32 from_virtual_port = 10;
optional string from_fakeip = 11;
}
message ConnectOK {
optional .CMsgSteamDatagramSessionCryptInfoSigned crypt = 5;
optional .CMsgSteamDatagramCertificateSigned cert = 6;
}
message ConnectionClosed {
optional string debug = 5;
optional uint32 reason_code = 6;
}
message ReliableMessage {
optional .CMsgICERendezvous ice = 1;
}
message ApplicationMessage {
optional bytes data = 1;
optional uint64 msg_num = 2;
optional uint32 flags = 3;
optional uint32 lane_idx = 4;
}
optional string from_identity = 8;
optional fixed32 from_connection_id = 9;
optional string to_identity = 10;
optional fixed32 to_connection_id = 1;
optional bytes sdr_routes = 2;
optional uint32 ack_peer_routes_revision = 3;
optional bool ice_enabled = 7;
optional bytes hosted_server_ticket = 14;
optional .CMsgSteamNetworkingP2PRendezvous.ConnectRequest connect_request = 4;
optional .CMsgSteamNetworkingP2PRendezvous.ConnectOK connect_ok = 5;
optional .CMsgSteamNetworkingP2PRendezvous.ConnectionClosed connection_closed = 6;
optional uint32 ack_reliable_msg = 11;
optional uint32 first_reliable_msg = 12;
repeated .CMsgSteamNetworkingP2PRendezvous.ReliableMessage reliable_messages = 13;
repeated .CMsgSteamNetworkingP2PRendezvous.ApplicationMessage application_messages = 15;
}
message CMsgSteamNetworkingICESessionSummary {
optional uint32 failure_reason_code = 7;
optional uint32 local_candidate_types = 1;
optional uint32 remote_candidate_types = 2;
optional uint32 initial_route_kind = 3;
optional uint32 initial_ping = 4;
optional uint32 initial_score = 6;
optional uint32 negotiation_ms = 5;
optional uint32 best_route_kind = 16;
optional uint32 best_ping = 17;
optional uint32 best_score = 18;
optional uint32 best_time = 19;
optional uint32 selected_seconds = 12;
optional uint32 user_settings = 13;
optional uint32 ice_enable_var = 14;
optional uint32 local_candidate_types_allowed = 15;
}

View file

@ -0,0 +1,38 @@
option optimize_for = SPEED;
option cc_generic_services = false;
message CMsgSteamNetworkingIdentityLegacyBinary {
optional fixed64 steam_id = 16;
optional string xbox_pairwise_id = 17;
optional bytes generic_bytes = 2;
optional string generic_string = 3;
optional bytes ipv6_and_port = 4;
}
message CMsgSteamDatagramCertificate {
enum EKeyType {
INVALID = 0;
ED25519 = 1;
}
optional .CMsgSteamDatagramCertificate.EKeyType key_type = 1 [default = INVALID];
optional bytes key_data = 2;
optional fixed64 legacy_steam_id = 4;
optional .CMsgSteamNetworkingIdentityLegacyBinary legacy_identity_binary = 11;
optional string identity_string = 12;
repeated fixed32 gameserver_datacenter_ids = 5;
optional fixed32 time_created = 8;
optional fixed32 time_expiry = 9;
repeated uint32 app_ids = 10;
}
message CMsgSteamDatagramCertificateSigned {
optional bytes cert = 4;
optional fixed64 ca_key_id = 5;
optional bytes ca_signature = 6;
optional bytes private_key_data = 1;
}
message CMsgSteamDatagramCertificateRequest {
optional .CMsgSteamDatagramCertificate cert = 1;
}

View file

@ -0,0 +1,75 @@
import "steamnetworkingsockets_messages_certs.proto";
import "steamnetworkingsockets_messages.proto";
option optimize_for = SPEED;
option cc_generic_services = false;
enum ESteamNetworkingUDPMsgID {
k_ESteamNetworkingUDPMsg_ChallengeRequest = 32;
k_ESteamNetworkingUDPMsg_ChallengeReply = 33;
k_ESteamNetworkingUDPMsg_ConnectRequest = 34;
k_ESteamNetworkingUDPMsg_ConnectOK = 35;
k_ESteamNetworkingUDPMsg_ConnectionClosed = 36;
k_ESteamNetworkingUDPMsg_NoConnection = 37;
}
message CMsgSteamSockets_UDP_ChallengeRequest {
optional fixed32 connection_id = 1;
optional fixed64 my_timestamp = 3;
optional uint32 protocol_version = 4;
}
message CMsgSteamSockets_UDP_ChallengeReply {
optional fixed32 connection_id = 1;
optional fixed64 challenge = 2;
optional fixed64 your_timestamp = 3;
optional uint32 protocol_version = 4;
}
message CMsgSteamSockets_UDP_ConnectRequest {
optional fixed32 client_connection_id = 1;
optional fixed64 challenge = 2;
optional fixed64 my_timestamp = 5;
optional uint32 ping_est_ms = 6;
optional .CMsgSteamDatagramSessionCryptInfoSigned crypt = 7;
optional .CMsgSteamDatagramCertificateSigned cert = 4;
optional uint32 legacy_protocol_version = 8;
optional string identity_string = 10;
optional fixed64 legacy_client_steam_id = 3;
optional .CMsgSteamNetworkingIdentityLegacyBinary legacy_identity_binary = 9;
}
message CMsgSteamSockets_UDP_ConnectOK {
optional fixed32 client_connection_id = 1;
optional fixed32 server_connection_id = 5;
optional fixed64 your_timestamp = 3;
optional uint32 delay_time_usec = 4;
optional .CMsgSteamDatagramSessionCryptInfoSigned crypt = 7;
optional .CMsgSteamDatagramCertificateSigned cert = 8;
optional string identity_string = 11;
optional fixed64 legacy_server_steam_id = 2;
optional .CMsgSteamNetworkingIdentityLegacyBinary legacy_identity_binary = 10;
}
message CMsgSteamSockets_UDP_ConnectionClosed {
optional fixed32 to_connection_id = 4;
optional fixed32 from_connection_id = 5;
optional string debug = 2;
optional uint32 reason_code = 3;
}
message CMsgSteamSockets_UDP_NoConnection {
optional fixed32 from_connection_id = 2;
optional fixed32 to_connection_id = 3;
}
message CMsgSteamSockets_UDP_Stats {
enum Flags {
ACK_REQUEST_E2E = 2;
ACK_REQUEST_IMMEDIATE = 4;
NOT_PRIMARY_TRANSPORT_E2E = 16;
}
optional .CMsgSteamDatagramConnectionQuality stats = 1;
optional uint32 flags = 3;
}

1638
protos/tf_gcmessages.proto Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,598 @@
import "google/protobuf/descriptor.proto";
option optimize_for = SPEED;
option cc_generic_services = false;
extend .google.protobuf.MessageOptions {
optional bool start_expanded = 80000 [default = true];
}
extend .google.protobuf.FieldOptions {
optional .ProtoDefTypes valid_type = 70000 [default = DEF_TYPE_QUEST_MAP_NODE];
optional bool editable = 70001 [default = true];
optional bool localized = 70002 [default = false];
optional bool do_not_inherit = 70003 [default = false];
optional string display_name = 70004;
optional string comment = 70005;
optional uint32 max_count = 70007;
optional bool allow_add = 70008 [default = true];
optional bool allow_delete = 70009 [default = true];
optional string panel_class_override = 70010;
optional string message_inherhitance_key_field_name = 70011;
optional bool inherit_reference_variables = 70012 [default = false];
optional bool self_inherit_only = 70013 [default = false];
optional .EVarFieldType var_field_type = 70014 [default = VAR_TYPE_INVALID];
optional bool merging_key_field = 70015 [default = false];
}
enum LogicalOperation {
AND = 0;
OR = 1;
NOT = 2;
}
enum EValueDefinitionSource {
REFERENCE_DEFINES = 0;
PARENT_DEFINES = 1;
THIS_DEFINES = 2;
VARIABLE_DEFINES = 3;
NOT_DEFINED = 4;
}
enum ProtoDefTypes {
DEF_TYPE_QUEST_MAP_NODE = 0;
DEF_TYPE_QUEST_THEME = 2;
DEF_TYPE_QUEST_MAP_REGION = 3;
DEF_TYPE_QUEST = 4;
DEF_TYPE_QUEST_OBJECTIVE = 5;
DEF_TYPE_PAINTKIT_VARIABLES = 6;
DEF_TYPE_PAINTKIT_OPERATION = 7;
DEF_TYPE_PAINTKIT_ITEM_DEFINITION = 8;
DEF_TYPE_PAINTKIT_DEFINITION = 9;
DEF_TYPE_HEADER_ONLY = 10;
DEF_TYPE_QUEST_MAP_STORE_ITEM = 11;
DEF_TYPE_QUEST_MAP_STAR_TYPE = 12;
}
enum EQuestPoints {
QUEST_POINTS_NOVICE = 0;
QUEST_POINTS_ADVANCED = 1;
QUEST_POINTS_EXPERT = 2;
}
enum EVarFieldType {
VAR_TYPE_INVALID = 1;
VAR_TYPE_FLOAT = 2;
VAR_TYPE_DOUBLE = 3;
VAR_TYPE_UINT32 = 4;
VAR_TYPE_UINT64 = 5;
VAR_TYPE_SINT32 = 6;
VAR_TYPE_SINT64 = 7;
VAR_TYPE_BOOL = 8;
VAR_TYPE_STRING = 9;
}
enum ENodeCashReward {
CASH_REWARD_NONE = 1;
CASH_REWARD_SMALL = 2;
CASH_REWARD_MEDIUM = 3;
CASH_REWARD_LARGE = 4;
}
message CMsgFieldID {
message CMsgField {
optional uint32 field_number = 1;
optional uint32 repeated_index = 2;
}
repeated .CMsgFieldID.CMsgField field = 1;
}
message CMsgUniversalFieldID {
optional .EValueDefinitionSource source_type = 1 [default = REFERENCE_DEFINES];
optional .CMsgProtoDefID defining_obj_id = 2;
optional .CMsgFieldID field_id = 3;
}
message CMsgVariableDefinition {
optional string name = 1 [(merging_key_field) = true];
optional bool inherit = 2 [default = true];
optional string value = 3;
}
message CMsgProtoDefHeader {
required uint32 defindex = 1 [(editable) = false, (display_name) = "Defindex", (comment) = "Autogenerated", (self_inherit_only) = true];
optional string name = 2 [(display_name) = "Name", (comment) = "Name to show in the editor", (self_inherit_only) = true];
repeated .CMsgProtoDefID prefabs = 3 [(display_name) = "Prefab", (comment) = "Inherit the values of these definitions, in order from top to bottom.", (panel_class_override) = "CPrefabFieldEditingPanel", (self_inherit_only) = true];
repeated string tags = 4 [(display_name) = "Tags", (comment) = "Strings used to describe this definition while searching. ie. 'class', 'shotgun', 'easy'"];
optional bool prefab_only = 5 [default = false, (display_name) = "Pure Prefab", (comment) = "If true, this is only a prefab and will not be made into an object", (self_inherit_only) = true];
repeated .CMsgVariableDefinition variables = 6 [(display_name) = "Variables", (comment) = "Variable value definitions", (message_inherhitance_key_field_name) = "name"];
}
message CMsgValidTypes {
repeated .ProtoDefTypes types = 1;
}
message CMsgProtoDefID {
optional uint32 defindex = 1;
optional .ProtoDefTypes type = 2 [default = DEF_TYPE_QUEST_MAP_NODE];
oneof instance {
.CMsgQuestMapNodeDef instance_def_type_quest_map_node = 3;
.CMsgQuestTheme instance_def_type_quest_theme = 5;
.CMsgQuestMapRegionDef instance_def_type_quest_map_region = 6;
.CMsgQuestDef instance_def_type_quest = 7;
.CMsgQuestObjectiveDef instance_def_type_quest_objective = 8;
.CMsgPaintKit_Variables instance_def_type_paintkit_variables = 9;
.CMsgPaintKit_Operation instance_def_type_paintkit_operation = 10;
.CMsgPaintKit_ItemDefinition instance_def_type_paintkit_item_definition = 11;
.CMsgPaintKit_Definition instance_def_type_paintkit_definition = 12;
.CMsgHeaderOnly instance_def_type_header_only = 13;
}
}
message CMsgQuestObjectiveDef {
enum ETF2GameModes {
kGameCategory_Escort = 0;
kGameCategory_CTF = 1;
kGameCategory_AttackDefense = 2;
kGameCategory_Koth = 3;
kGameCategory_CP = 4;
kGameCategory_EscortRace = 5;
kGameCategory_EventMix = 6;
kGameCategory_SD = 7;
kGameCategory_Quickplay = 8;
kGameCategory_Event247 = 9;
kGameCategory_Arena = 10;
kGameCategory_RobotDestruction = 11;
kGameCategory_Powerup = 12;
kGameCategory_Featured = 13;
kGameCategory_Passtime = 14;
kGameCategory_Community_Update = 15;
kGameCategory_Misc = 16;
kGameCategory_Competitive_6v6 = 17;
kGameCategory_Other = 18;
kGameCategory_Halloween = 19;
}
enum ETF2Conditions {
TF_COND_AIMING = 0;
TF_COND_ZOOMED = 1;
TF_COND_DISGUISING = 2;
TF_COND_DISGUISED = 3;
TF_COND_STEALTHED = 4;
TF_COND_INVULNERABLE = 5;
TF_COND_TELEPORTED = 6;
TF_COND_TAUNTING = 7;
TF_COND_INVULNERABLE_WEARINGOFF = 8;
TF_COND_STEALTHED_BLINK = 9;
TF_COND_SELECTED_TO_TELEPORT = 10;
TF_COND_CRITBOOSTED = 11;
TF_COND_TMPDAMAGEBONUS = 12;
TF_COND_FEIGN_DEATH = 13;
TF_COND_PHASE = 14;
TF_COND_STUNNED = 15;
TF_COND_OFFENSEBUFF = 16;
TF_COND_SHIELD_CHARGE = 17;
TF_COND_DEMO_BUFF = 18;
TF_COND_ENERGY_BUFF = 19;
TF_COND_RADIUSHEAL = 20;
TF_COND_HEALTH_BUFF = 21;
TF_COND_BURNING = 22;
TF_COND_HEALTH_OVERHEALED = 23;
TF_COND_URINE = 24;
TF_COND_BLEEDING = 25;
TF_COND_DEFENSEBUFF = 26;
TF_COND_MAD_MILK = 27;
TF_COND_MEGAHEAL = 28;
TF_COND_REGENONDAMAGEBUFF = 29;
TF_COND_MARKEDFORDEATH = 30;
TF_COND_NOHEALINGDAMAGEBUFF = 31;
TF_COND_SPEED_BOOST = 32;
TF_COND_CRITBOOSTED_PUMPKIN = 33;
TF_COND_CRITBOOSTED_USER_BUFF = 34;
TF_COND_CRITBOOSTED_DEMO_CHARGE = 35;
TF_COND_SODAPOPPER_HYPE = 36;
TF_COND_CRITBOOSTED_FIRST_BLOOD = 37;
TF_COND_CRITBOOSTED_BONUS_TIME = 38;
TF_COND_CRITBOOSTED_CTF_CAPTURE = 39;
TF_COND_CRITBOOSTED_ON_KILL = 40;
TF_COND_CANNOT_SWITCH_FROM_MELEE = 41;
TF_COND_DEFENSEBUFF_NO_CRIT_BLOCK = 42;
TF_COND_REPROGRAMMED = 43;
TF_COND_CRITBOOSTED_RAGE_BUFF = 44;
TF_COND_DEFENSEBUFF_HIGH = 45;
TF_COND_SNIPERCHARGE_RAGE_BUFF = 46;
TF_COND_DISGUISE_WEARINGOFF = 47;
TF_COND_MARKEDFORDEATH_SILENT = 48;
TF_COND_DISGUISED_AS_DISPENSER = 49;
TF_COND_SAPPED = 50;
TF_COND_INVULNERABLE_HIDE_UNLESS_DAMAGED = 51;
TF_COND_INVULNERABLE_USER_BUFF = 52;
TF_COND_HALLOWEEN_BOMB_HEAD = 53;
TF_COND_HALLOWEEN_THRILLER = 54;
TF_COND_RADIUSHEAL_ON_DAMAGE = 55;
TF_COND_CRITBOOSTED_CARD_EFFECT = 56;
TF_COND_INVULNERABLE_CARD_EFFECT = 57;
TF_COND_MEDIGUN_UBER_BULLET_RESIST = 58;
TF_COND_MEDIGUN_UBER_BLAST_RESIST = 59;
TF_COND_MEDIGUN_UBER_FIRE_RESIST = 60;
TF_COND_MEDIGUN_SMALL_BULLET_RESIST = 61;
TF_COND_MEDIGUN_SMALL_BLAST_RESIST = 62;
TF_COND_MEDIGUN_SMALL_FIRE_RESIST = 63;
TF_COND_STEALTHED_USER_BUFF = 64;
TF_COND_MEDIGUN_DEBUFF = 65;
TF_COND_STEALTHED_USER_BUFF_FADING = 66;
TF_COND_BULLET_IMMUNE = 67;
TF_COND_BLAST_IMMUNE = 68;
TF_COND_FIRE_IMMUNE = 69;
TF_COND_PREVENT_DEATH = 70;
TF_COND_MVM_BOT_STUN_RADIOWAVE = 71;
TF_COND_HALLOWEEN_SPEED_BOOST = 72;
TF_COND_HALLOWEEN_QUICK_HEAL = 73;
TF_COND_HALLOWEEN_GIANT = 74;
TF_COND_HALLOWEEN_TINY = 75;
TF_COND_HALLOWEEN_IN_HELL = 76;
TF_COND_HALLOWEEN_GHOST_MODE = 77;
TF_COND_MINICRITBOOSTED_ON_KILL = 78;
TF_COND_OBSCURED_SMOKE = 79;
TF_COND_PARACHUTE_ACTIVE = 80;
TF_COND_BLASTJUMPING = 81;
TF_COND_HALLOWEEN_KART = 82;
TF_COND_HALLOWEEN_KART_DASH = 83;
TF_COND_BALLOON_HEAD = 84;
TF_COND_MELEE_ONLY = 85;
TF_COND_SWIMMING_CURSE = 86;
TF_COND_FREEZE_INPUT = 87;
TF_COND_HALLOWEEN_KART_CAGE = 88;
TF_COND_DONOTUSE_0 = 89;
TF_COND_RUNE_STRENGTH = 90;
TF_COND_RUNE_HASTE = 91;
TF_COND_RUNE_REGEN = 92;
TF_COND_RUNE_RESIST = 93;
TF_COND_RUNE_VAMPIRE = 94;
TF_COND_RUNE_REFLECT = 95;
TF_COND_RUNE_PRECISION = 96;
TF_COND_RUNE_AGILITY = 97;
TF_COND_GRAPPLINGHOOK = 98;
TF_COND_GRAPPLINGHOOK_SAFEFALL = 99;
TF_COND_GRAPPLINGHOOK_LATCHED = 100;
TF_COND_GRAPPLINGHOOK_BLEEDING = 101;
TF_COND_AFTERBURN_IMMUNE = 102;
TF_COND_RUNE_KNOCKOUT = 103;
TF_COND_RUNE_IMBALANCE = 104;
TF_COND_CRITBOOSTED_RUNE_TEMP = 105;
TF_COND_PASSTIME_INTERCEPTION = 106;
TF_COND_SWIMMING_NO_EFFECTS = 107;
TF_COND_PURGATORY = 108;
TF_COND_RUNE_KING = 109;
TF_COND_RUNE_PLAGUE = 110;
TF_COND_RUNE_SUPERNOVA = 111;
TF_COND_PLAGUE = 112;
TF_COND_KING_BUFFED = 113;
TF_COND_TEAM_GLOWS = 114;
TF_COND_KNOCKED_INTO_AIR = 115;
TF_COND_COMPETITIVE_WINNER = 116;
TF_COND_COMPETITIVE_LOSER = 117;
TF_COND_HEALING_DEBUFF = 118;
TF_COND_PASSTIME_PENALTY_DEBUFF = 119;
TF_COND_PARACHUTE_DEPLOYED = 120;
TF_COND_NO_COMBAT_SPEED_BOOST = 121;
TF_COND_TRANQ_SPY_BOOST = 122;
TF_COND_TRANQ_MARKED = 123;
TF_COND_ROCKETPACK = 126;
TF_COND_ROCKETPACK_PASSENGER = 127;
TF_COND_STEALTHED_PHASE = 128;
TF_COND_CLIP_OVERLOAD = 129;
TF_COND_SPY_CLASS_STEAL = 130;
TF_COND_GAS = 131;
}
enum ETF2Team {
TF_TEAM_RED = 2;
TF_TEAM_BLUE = 3;
}
required .CMsgProtoDefHeader header = 1;
optional string loc_desctoken = 2 [(localized) = true];
optional uint32 points = 3;
optional uint32 conditions_defindex = 5;
repeated string map = 8 [(display_name) = "Maps Modifier", (comment) = "If set, the player must be on one of the listed maps to get credit."];
repeated .CMsgQuestObjectiveDef.ETF2GameModes game_mode = 9 [(display_name) = "Game Mode Modifier", (comment) = "If set, the player must be in one of the listed game modes to get credit."];
optional .CMsgQuestObjectiveDef.ETF2Team team = 10 [default = TF_TEAM_RED, (display_name) = "Team Modifier", (comment) = "If set, the player must be on the specified team to get credit."];
repeated .CMsgVarField condition_vars = 11 [(display_name) = "Objective Vars", (var_field_type) = VAR_TYPE_STRING];
repeated .CMsgVarField classes_vars = 12 [(display_name) = "Class Modifier", (var_field_type) = VAR_TYPE_STRING];
repeated .CMsgQuestObjectiveDef.ETF2Conditions conditions = 13 [(display_name) = "Required Conds"];
optional .LogicalOperation condition_logic = 14 [default = AND, (display_name) = "Condition Logic", (comment) = "What kind of logic to use when evaluating the player's conditions."];
repeated string item_name = 15 [(display_name) = "Required equipped item", (comment) = "Require that this item be equipped in any slot."];
optional .LogicalOperation item_logic = 16 [default = AND, (display_name) = "Item logic", (comment) = "What kind of logic to use when evaluating the player's items."];
optional uint32 jump_state = 17 [(display_name) = "Jump logic", (comment) = "What state of jumping the player needs to be in."];
}
message CMsgQuestDef {
message MMCriteria {
optional string group_name = 1;
optional string category_name = 2;
optional string map_name = 3;
}
message ObjectiveInstance {
optional .CMsgProtoDefID objective = 1 [(valid_type) = DEF_TYPE_QUEST_OBJECTIVE];
optional .EQuestPoints point_type = 2 [default = QUEST_POINTS_NOVICE];
optional uint32 point_value = 3 [(display_name) = "Points Override", (comment) = "Override value for the point value of the objective. If not set, uses the objective's point value"];
}
required .CMsgProtoDefHeader header = 1;
optional uint32 max_points_0 = 2;
optional uint32 max_points_1 = 3;
optional uint32 max_points_2 = 4;
optional string name_loctoken = 5 [(localized) = true];
optional string operation = 7;
optional .CMsgQuestDef.MMCriteria mm_criteria = 8;
optional string node_image = 12 [(display_name) = "Node Image", (comment) = "Filename of the image to show on the node view"];
optional string icon_image = 13 [(display_name) = "Node Icon", (comment) = "Which icon to show on the map"];
optional .CMsgProtoDefID theme = 14 [(valid_type) = DEF_TYPE_QUEST_THEME];
repeated string loaner_names = 15 [(display_name) = "Loaners", (comment) = "Names of items to give as loaners"];
repeated .CMsgQuestDef.ObjectiveInstance objectives = 16;
repeated string map = 17 [(display_name) = "Maps Modifier", (comment) = "If set, the player must be on one of the listed maps to get credit."];
}
message CMsgQuestMapStoreItem {
required .CMsgProtoDefHeader header = 1;
optional string item_name = 2;
optional string reward_lootlist_name = 6 [(display_name) = "Reward Lootlist", (comment) = "The name of the lootlist to roll as a reward"];
optional .CMsgVarField price = 3 [(var_field_type) = VAR_TYPE_SINT32];
optional uint32 purchase_limit = 4 [(display_name) = "Purchase Limit", (comment) = "How many times this reward can be purchased"];
optional uint32 sort_group = 5 [(display_name) = "Sort group", (comment) = "Sort by this group, then alhpabetically"];
}
message CMsgQuestMapRegionDef {
message RegionLink {
required .CMsgProtoDefID target_region_defid = 1 [(valid_type) = DEF_TYPE_QUEST_MAP_REGION];
optional uint32 xpos = 2;
optional uint32 ypos = 3;
}
required .CMsgProtoDefHeader header = 1;
optional string name = 2 [(localized) = true];
optional string resfile = 3;
repeated .CMsgQuestMapRegionDef.RegionLink links = 4;
optional .CMsgProtoDefID return_link = 5 [(valid_type) = DEF_TYPE_QUEST_MAP_REGION, (display_name) = "Return Link", (comment) = "Which link we go to when right-clicking in this region"];
optional float radio_freq = 6 [(display_name) = "Radio Freq.", (comment) = "Where the radio tuner goes on the CYOA PDA when this region is selection"];
optional float zoom_scale = 7 [(display_name) = "Zoom Scale", (comment) = "How zoomed in this panel should be. Affects the scale of the map grid lines and node link dashed lines"];
optional .CMsgProtoDefID star_type = 8 [(valid_type) = DEF_TYPE_QUEST_MAP_STAR_TYPE, (display_name) = "Star Type", (comment) = "What stars (if any) the nodes within use to unlock"];
}
message CMsgVarField {
optional string variable = 1 [(merging_key_field) = true];
oneof value {
float float = 2;
double double = 3;
uint32 uint32 = 4;
uint64 uint64 = 5;
sint32 sint32 = 6;
sint64 sint64 = 7;
bool bool = 8;
string string = 9;
}
}
message CMsgQuestMapStarType {
required .CMsgProtoDefHeader header = 1;
optional string name = 2 [(localized) = true, (display_name) = "Type Name"];
}
message CMsgQuestMapNodeDef {
required .CMsgProtoDefHeader header = 1;
optional string name_loctoken = 4 [(localized) = true, (display_name) = "Node Name", (comment) = "The name of this node"];
optional float x_pos = 6 [(display_name) = "Map X Pos", (comment) = "X position on the quest map"];
optional float y_pos = 7 [(display_name) = "Map Y Pos", (comment) = "Y position on the quest map"];
optional .CMsgQuestMapNodeCondition condition = 9 [(display_name) = "Conditions", (comment) = "Logic to unlock this node. Can be nested with logic"];
optional .CMsgProtoDefID owning_region = 10 [(valid_type) = DEF_TYPE_QUEST_MAP_REGION, (display_name) = "Region", (comment) = "Which region in the map this node shows up in"];
repeated .CMsgProtoDefID quest_options = 11 [(valid_type) = DEF_TYPE_QUEST, (display_name) = "Offered Quests", (comment) = "Which quests this node offers.", (max_count) = 3];
optional string associated_operation = 16 [(display_name) = "Associated Operation", (comment) = "Operation this node is associated with"];
optional string reward_item_name = 18 [(display_name) = "Reward Item", (comment) = "The name of an item to give as a reward"];
optional string reward_lootlist_name = 22 [(display_name) = "Reward Lootlist", (comment) = "The name of the lootlist to roll as a reward"];
optional .ENodeCashReward cash_reward = 19 [default = CASH_REWARD_NONE, (display_name) = "Cash Reward", (comment) = "How much cash to give when completing the primary objective"];
optional .CMsgProtoDefID star_type = 20 [(valid_type) = DEF_TYPE_QUEST_MAP_STAR_TYPE, (display_name) = "Star Type", (comment) = "Which type of star this node uses"];
optional uint32 stars_to_unlock = 21 [default = 1, (display_name) = "Stars to Unlock", (comment) = "Numbers of stars it costs to unlock"];
}
message CMsgPaintKit_Variables {
required .CMsgProtoDefHeader header = 1;
}
message CMsgPaintKit_Operation_TextureStage {
optional .CMsgVarField texture = 1 [(var_field_type) = VAR_TYPE_STRING];
optional .CMsgVarField texture_red = 2 [(var_field_type) = VAR_TYPE_STRING];
optional .CMsgVarField texture_blue = 3 [(var_field_type) = VAR_TYPE_STRING];
optional .CMsgVarField adjust_black = 4 [(var_field_type) = VAR_TYPE_STRING];
optional .CMsgVarField adjust_offset = 5 [(var_field_type) = VAR_TYPE_STRING];
optional .CMsgVarField adjust_gamma = 6 [(var_field_type) = VAR_TYPE_STRING];
optional .CMsgVarField rotation = 7 [(var_field_type) = VAR_TYPE_STRING];
optional .CMsgVarField translate_u = 8 [(var_field_type) = VAR_TYPE_STRING];
optional .CMsgVarField translate_v = 9 [(var_field_type) = VAR_TYPE_STRING];
optional .CMsgVarField scale_uv = 10 [(var_field_type) = VAR_TYPE_STRING];
optional .CMsgVarField flip_u = 11 [(var_field_type) = VAR_TYPE_STRING];
optional .CMsgVarField flip_v = 12 [(var_field_type) = VAR_TYPE_STRING];
}
message CMsgPaintKit_Operation_CombineStage {
optional .CMsgVarField adjust_black = 1 [(var_field_type) = VAR_TYPE_STRING];
optional .CMsgVarField adjust_offset = 2 [(var_field_type) = VAR_TYPE_STRING];
optional .CMsgVarField adjust_gamma = 3 [(var_field_type) = VAR_TYPE_STRING];
optional .CMsgVarField rotation = 4 [(var_field_type) = VAR_TYPE_STRING];
optional .CMsgVarField translate_u = 5 [(var_field_type) = VAR_TYPE_STRING];
optional .CMsgVarField translate_v = 6 [(var_field_type) = VAR_TYPE_STRING];
optional .CMsgVarField scale_uv = 7 [(var_field_type) = VAR_TYPE_STRING];
optional .CMsgVarField flip_u = 8 [(var_field_type) = VAR_TYPE_STRING];
optional .CMsgVarField flip_v = 9 [(var_field_type) = VAR_TYPE_STRING];
repeated .CMsgPaintKit_OperationNode operation_node = 11;
}
message CMsgPaintKit_Operation_SelectStage {
optional .CMsgVarField groups = 1 [(var_field_type) = VAR_TYPE_STRING];
repeated .CMsgVarField select = 2 [(max_count) = 16, (var_field_type) = VAR_TYPE_STRING];
}
message CMsgPaintKit_Operation_Sticker {
optional .CMsgVarField base = 1 [(comment) = "Name of the base file for the sticker (the albedo)", (var_field_type) = VAR_TYPE_STRING];
optional .CMsgVarField weight = 2 [(comment) = "Random likelihood this one is to be selected", (var_field_type) = VAR_TYPE_STRING];
optional .CMsgVarField spec = 3 [(comment) = "Name of the specular file for the sticker, or if blank we will assume it is baseFilename + _spec + baseExtension", (var_field_type) = VAR_TYPE_STRING];
}
message CMsgPaintKit_Operation_StickerStage {
repeated .CMsgPaintKit_Operation_Sticker sticker = 1;
optional .CMsgVarField dest_tl = 2 [(var_field_type) = VAR_TYPE_STRING];
optional .CMsgVarField dest_tr = 3 [(var_field_type) = VAR_TYPE_STRING];
optional .CMsgVarField dest_bl = 4 [(var_field_type) = VAR_TYPE_STRING];
optional .CMsgVarField adjust_black = 5 [(var_field_type) = VAR_TYPE_STRING];
optional .CMsgVarField adjust_offset = 6 [(var_field_type) = VAR_TYPE_STRING];
optional .CMsgVarField adjust_gamma = 7 [(var_field_type) = VAR_TYPE_STRING];
repeated .CMsgPaintKit_OperationNode operation_node = 9;
}
message CMsgPaintKit_OperationStage {
oneof stage {
.CMsgPaintKit_Operation_TextureStage texture_lookup = 1;
.CMsgPaintKit_Operation_CombineStage combine_add = 2;
.CMsgPaintKit_Operation_CombineStage combine_lerp = 3;
.CMsgPaintKit_Operation_CombineStage combine_multiply = 4;
.CMsgPaintKit_Operation_SelectStage select = 5;
.CMsgPaintKit_Operation_StickerStage apply_sticker = 6;
}
}
message CMsgPaintKit_OperationNode {
oneof node {
.CMsgPaintKit_OperationStage stage = 1;
.CMsgProtoDefID operation_template = 2 [(valid_type) = DEF_TYPE_PAINTKIT_OPERATION, (inherit_reference_variables) = true];
}
}
message CMsgPaintKit_Operation {
required .CMsgProtoDefHeader header = 1;
repeated .CMsgPaintKit_OperationNode operation_node = 2;
}
message CMsgPaintKit_ItemDefinition {
message Definition {
optional .CMsgProtoDefID operation_template = 1 [(valid_type) = DEF_TYPE_PAINTKIT_OPERATION];
repeated .CMsgVarField variable = 2 [(allow_add) = false, (allow_delete) = false, (var_field_type) = VAR_TYPE_STRING];
}
required .CMsgProtoDefHeader header = 1;
required uint32 item_definition_index = 2;
optional .CMsgProtoDefID variable_template = 3 [(valid_type) = DEF_TYPE_PAINTKIT_VARIABLES, (inherit_reference_variables) = true];
repeated .CMsgPaintKit_ItemDefinition.Definition definition = 4 [(max_count) = 5];
}
message CMsgPaintKit_Definition {
message Item {
option (start_expanded) = false;
message ItemData {
optional bool can_apply_paintkit = 2 [default = true];
optional string material_override = 3;
repeated .CMsgVarField variable = 4 [(allow_add) = false, (allow_delete) = false, (var_field_type) = VAR_TYPE_STRING];
}
required .CMsgProtoDefID item_definition_template = 1 [(valid_type) = DEF_TYPE_PAINTKIT_ITEM_DEFINITION, (panel_class_override) = "CPaintKitDefIdFieldProtoEditorField"];
optional .CMsgPaintKit_Definition.Item.ItemData data = 5;
}
required .CMsgProtoDefHeader header = 1;
optional string loc_desctoken = 2 [(localized) = true];
optional .CMsgProtoDefID operation_template = 3 [(valid_type) = DEF_TYPE_PAINTKIT_OPERATION, (comment) = "operation template which all items in the list will use unless there's operation_template specified in an item_definition", (inherit_reference_variables) = true];
optional bool has_team_textures = 4;
repeated .CMsgPaintKit_Definition.Item item = 5;
optional .CMsgPaintKit_Definition.Item paintkit_tool = 6;
optional .CMsgPaintKit_Definition.Item flamethrower = 7;
optional .CMsgPaintKit_Definition.Item grenadelauncher = 8;
optional .CMsgPaintKit_Definition.Item knife = 9;
optional .CMsgPaintKit_Definition.Item medigun = 10;
optional .CMsgPaintKit_Definition.Item minigun = 11;
optional .CMsgPaintKit_Definition.Item pistol = 12;
optional .CMsgPaintKit_Definition.Item revolver = 13;
optional .CMsgPaintKit_Definition.Item rocketlauncher = 14;
optional .CMsgPaintKit_Definition.Item scattergun = 15;
optional .CMsgPaintKit_Definition.Item shotgun = 16;
optional .CMsgPaintKit_Definition.Item smg = 17;
optional .CMsgPaintKit_Definition.Item sniperrifle = 18;
optional .CMsgPaintKit_Definition.Item stickybomb_launcher = 19;
optional .CMsgPaintKit_Definition.Item ubersaw = 20;
optional .CMsgPaintKit_Definition.Item wrench = 21;
optional .CMsgPaintKit_Definition.Item amputator = 22;
optional .CMsgPaintKit_Definition.Item atom_launcher = 23;
optional .CMsgPaintKit_Definition.Item back_scratcher = 24;
optional .CMsgPaintKit_Definition.Item battleaxe = 25;
optional .CMsgPaintKit_Definition.Item bazaar_sniper = 26;
optional .CMsgPaintKit_Definition.Item blackbox = 27;
optional .CMsgPaintKit_Definition.Item claidheamohmor = 28;
optional .CMsgPaintKit_Definition.Item crusaders_crossbow = 29;
optional .CMsgPaintKit_Definition.Item degreaser = 30;
optional .CMsgPaintKit_Definition.Item demo_cannon = 31;
optional .CMsgPaintKit_Definition.Item demo_sultan_sword = 32;
optional .CMsgPaintKit_Definition.Item detonator = 33;
optional .CMsgPaintKit_Definition.Item gatling_gun = 34;
optional .CMsgPaintKit_Definition.Item holymackerel = 35;
optional .CMsgPaintKit_Definition.Item jag = 36;
optional .CMsgPaintKit_Definition.Item lochnload = 37;
optional .CMsgPaintKit_Definition.Item powerjack = 38;
optional .CMsgPaintKit_Definition.Item quadball = 39;
optional .CMsgPaintKit_Definition.Item reserve_shooter = 40;
optional .CMsgPaintKit_Definition.Item riding_crop = 41;
optional .CMsgPaintKit_Definition.Item russian_riot = 42;
optional .CMsgPaintKit_Definition.Item scimitar = 43;
optional .CMsgPaintKit_Definition.Item scorch_shot = 44;
optional .CMsgPaintKit_Definition.Item shortstop = 45;
optional .CMsgPaintKit_Definition.Item soda_popper = 46;
optional .CMsgPaintKit_Definition.Item tele_shotgun = 47;
optional .CMsgPaintKit_Definition.Item tomislav = 48;
optional .CMsgPaintKit_Definition.Item trenchgun = 49;
optional .CMsgPaintKit_Definition.Item winger_pistol = 50;
}
message CMsgQuestTheme {
message WeightedString {
optional string string = 1;
optional uint32 weight = 2;
}
message WeightedStringSet {
repeated .CMsgQuestTheme.WeightedString weighted_strings = 1;
}
required .CMsgProtoDefHeader header = 1;
optional string notification_res = 2;
optional string quest_item_res = 3;
optional string in_game_tracker_res = 4;
repeated .CMsgQuestTheme.WeightedStringSet give_sounds = 5;
repeated .CMsgQuestTheme.WeightedStringSet complete_sounds = 6;
repeated .CMsgQuestTheme.WeightedStringSet fully_complete_sounds = 7;
optional string reward_sound = 8;
optional string discard_sound = 9;
optional string reveal_sound = 10;
}
message CMsgQuestMapNodeCondition_NodeState {
optional uint32 bonus_objectives_required = 1 [default = 0, (display_name) = "Bonus Required", (comment) = "Number of bonus objectives required, on top of the primary objective"];
required .CMsgProtoDefID target_node_defid = 2 [(valid_type) = DEF_TYPE_QUEST_MAP_NODE, (display_name) = "Target Node", (comment) = "Which node is required to have the above number of medals"];
}
message CMsgQuestMapNodeCondition_Logic {
required .LogicalOperation operation = 1 [default = AND, (display_name) = "Logic", (comment) = "Logical operation"];
repeated .CMsgQuestMapNodeCondition sub_conditions = 2 [(display_name) = "Operands", (comment) = "Definitions to use in the logical operation"];
}
message CMsgQuestMapNodeCondition {
oneof operation {
.CMsgQuestMapNodeCondition_NodeState node_state = 1 [(display_name) = "Node State Condition", (comment) = "Returns true if a specific node has a required number of medals"];
.CMsgQuestMapNodeCondition_Logic logical = 2 [(display_name) = "Logical Condition", (comment) = "Performs a specified logical operation to all sub conditions"];
}
}
message CMsgHeaderOnly {
required .CMsgProtoDefHeader header = 1;
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

19
src/generated/mod.rs Normal file
View file

@ -0,0 +1,19 @@
// @generated
pub mod base_gcmessages;
pub mod econ_gcmessages;
pub mod enums_clientserver;
pub mod gcsdk_gcmessages;
pub mod gcsystemmsgs;
pub mod steamdatagram_auth_messages;
pub mod steamdatagram_messages;
pub mod steamdatagram_messages_auth;
pub mod steamdatagram_messages_sdr;
pub mod steammessages;
pub mod steammessages_base;
pub mod steammessages_gamenetworkingui;
pub mod steamnetworkingsockets_messages;
pub mod steamnetworkingsockets_messages_certs;
pub mod steamnetworkingsockets_messages_udp;
pub mod tf_gcmessages;
pub mod tf_proto_def_messages;

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

16732
src/generated/steammessages.rs Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

40827
src/generated/tf_gcmessages.rs Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

5
src/lib.rs Normal file
View file

@ -0,0 +1,5 @@
//! Protobufs for steam-vent for tf2 specific messages
mod generated;
pub use generated::*;