Skip to main content

steam_protos/messages/
gc.rs

1//! Game Coordinator protobuf messages
2
3use prost::Message;
4
5/// Game Coordinator client message
6#[derive(Clone, PartialEq, Message)]
7pub struct CMsgGCClient {
8    #[prost(uint32, optional, tag = "1")]
9    pub appid: Option<u32>,
10    #[prost(uint32, optional, tag = "2")]
11    pub msgtype: Option<u32>,
12    #[prost(bytes = "vec", optional, tag = "3")]
13    pub payload: Option<Vec<u8>>,
14    #[prost(fixed64, optional, tag = "4")]
15    pub steamid: Option<u64>,
16    #[prost(string, optional, tag = "5")]
17    pub gcname: Option<String>,
18    #[prost(uint32, optional, tag = "6")]
19    pub ip: Option<u32>,
20    #[prost(uint32, optional, tag = "7")]
21    pub flags: Option<u32>,
22}
23
24pub mod cmsg_gc_client {
25    /// GC Client flags
26    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, prost::Enumeration)]
27    #[repr(i32)]
28    pub enum EFlag {
29        ValveDs = 1,
30    }
31}
32
33/// GC Client Hello (k_EMsgGCClientHello)
34#[derive(Clone, PartialEq, Message)]
35pub struct CMsgGCClientHello {
36    #[prost(uint32, optional, tag = "1")]
37    pub version: Option<u32>,
38    #[prost(uint32, optional, tag = "3")]
39    pub client_session_need: Option<u32>,
40    #[prost(uint32, optional, tag = "4")]
41    pub client_launcher: Option<u32>,
42    #[prost(uint32, optional, tag = "6")]
43    pub steam_launcher: Option<u32>,
44}
45
46/// GC Client Welcome message (k_EMsgGCClientWelcome)
47#[derive(Clone, PartialEq, Message)]
48pub struct CMsgClientWelcome {
49    #[prost(uint32, optional, tag = "1")]
50    pub version: Option<u32>,
51    #[prost(bytes = "vec", optional, tag = "2")]
52    pub game_data: Option<Vec<u8>>,
53    #[prost(message, repeated, tag = "3")]
54    pub outofdate_subscribed_caches: Vec<CMsgClientWelcomeOutOfDateSubscribedCache>,
55}
56
57#[derive(Clone, PartialEq, Message)]
58pub struct CMsgClientWelcomeOutOfDateSubscribedCache {
59    #[prost(message, repeated, tag = "2")]
60    pub objects: Vec<CMsgClientWelcomeOutOfDateSubscribedCacheObject>,
61}
62
63#[derive(Clone, PartialEq, Message)]
64pub struct CMsgClientWelcomeOutOfDateSubscribedCacheObject {
65    #[prost(uint32, optional, tag = "1")]
66    pub type_id: Option<u32>,
67    #[prost(bytes = "vec", repeated, tag = "2")]
68    pub object_data: Vec<Vec<u8>>,
69}
70
71/// CS:GO Econ Game Account Client
72#[derive(Clone, PartialEq, Message)]
73pub struct CSOEconGameAccountClient {
74    #[prost(uint32, optional, tag = "13")]
75    pub bonus_xp_usedflags: Option<u32>,
76    #[prost(uint32, optional, tag = "14")]
77    pub elevated_state: Option<u32>,
78}
79
80/// k_EMsgGCCStrike15_v2_MatchmakingClient2GCHello = 9109
81#[derive(Clone, PartialEq, Message)]
82pub struct CMsgGccStrike15V2MatchmakingClient2GcHello {}
83
84//=============================================================================
85// CS:GO Client Hello Response (k_EMsgGCCStrike15_v2_MatchmakingGC2ClientHello =
86// 9110)
87//=============================================================================
88
89/// Player ranking information
90#[derive(Clone, PartialEq, Message)]
91pub struct PlayerRankingInfo {
92    #[prost(uint32, optional, tag = "1")]
93    pub account_id: Option<u32>,
94    #[prost(uint32, optional, tag = "2")]
95    pub rank_id: Option<u32>,
96    #[prost(uint32, optional, tag = "3")]
97    pub wins: Option<u32>,
98    #[prost(float, optional, tag = "4")]
99    pub rank_change: Option<f32>,
100    #[prost(uint32, optional, tag = "6")]
101    pub rank_type_id: Option<u32>,
102    #[prost(uint32, optional, tag = "7")]
103    pub tv_control: Option<u32>,
104}
105
106/// Player commendation information
107#[derive(Clone, PartialEq, Message)]
108pub struct PlayerCommendationInfo {
109    #[prost(uint32, optional, tag = "1")]
110    pub cmd_friendly: Option<u32>,
111    #[prost(uint32, optional, tag = "2")]
112    pub cmd_teaching: Option<u32>,
113    #[prost(uint32, optional, tag = "4")]
114    pub cmd_leader: Option<u32>,
115}
116
117/// Player medals information
118#[derive(Clone, PartialEq, Message)]
119pub struct PlayerMedalsInfo {
120    #[prost(uint32, repeated, tag = "7")]
121    pub display_items_defidx: Vec<u32>,
122    #[prost(uint32, optional, tag = "8")]
123    pub featured_display_item_defidx: Option<u32>,
124}
125
126/// Global CS:GO statistics
127#[derive(Clone, PartialEq, Message)]
128pub struct GlobalStatistics {
129    #[prost(uint32, optional, tag = "1")]
130    pub players_online: Option<u32>,
131    #[prost(uint32, optional, tag = "2")]
132    pub servers_online: Option<u32>,
133    #[prost(uint32, optional, tag = "3")]
134    pub players_searching: Option<u32>,
135    #[prost(uint32, optional, tag = "4")]
136    pub servers_available: Option<u32>,
137    #[prost(uint32, optional, tag = "5")]
138    pub ongoing_matches: Option<u32>,
139    #[prost(uint32, optional, tag = "6")]
140    pub search_time_avg: Option<u32>,
141    #[prost(string, optional, tag = "8")]
142    pub main_post_url: Option<String>,
143    #[prost(uint32, optional, tag = "9")]
144    pub required_appid_version: Option<u32>,
145    #[prost(uint32, optional, tag = "10")]
146    pub pricesheet_version: Option<u32>,
147}
148
149/// k_EMsgGCCStrike15_v2_MatchmakingGC2ClientHello = 9110
150/// Response from CS:GO GC with player profile data
151#[derive(Clone, PartialEq, Message)]
152pub struct CMsgGccStrike15V2MatchmakingGc2ClientHello {
153    #[prost(uint32, optional, tag = "1")]
154    pub account_id: Option<u32>,
155    #[prost(message, optional, tag = "3")]
156    pub global_stats: Option<GlobalStatistics>,
157    #[prost(uint32, optional, tag = "4")]
158    pub penalty_seconds: Option<u32>,
159    #[prost(uint32, optional, tag = "5")]
160    pub penalty_reason: Option<u32>,
161    #[prost(int32, optional, tag = "6")]
162    pub vac_banned: Option<i32>,
163    #[prost(message, optional, tag = "7")]
164    pub ranking: Option<PlayerRankingInfo>,
165    #[prost(message, optional, tag = "8")]
166    pub commendation: Option<PlayerCommendationInfo>,
167    #[prost(message, optional, tag = "9")]
168    pub medals: Option<PlayerMedalsInfo>,
169    #[prost(uint32, optional, tag = "14")]
170    pub survey_vote: Option<u32>,
171    #[prost(int32, optional, tag = "17")]
172    pub player_level: Option<i32>,
173    #[prost(int32, optional, tag = "18")]
174    pub player_cur_xp: Option<i32>,
175    #[prost(int32, optional, tag = "19")]
176    pub player_xp_bonus_flags: Option<i32>,
177    #[prost(message, repeated, tag = "20")]
178    pub rankings: Vec<PlayerRankingInfo>,
179}
180
181/// k_EMsgGCCStrike15_v2_ClientRequestPlayersProfile = 9127
182#[derive(Clone, PartialEq, Message)]
183pub struct CMsgGccStrike15V2ClientRequestPlayersProfile {
184    #[prost(uint32, optional, tag = "1")]
185    pub account_id: Option<u32>,
186    #[prost(uint32, optional, tag = "2")]
187    pub request_level: Option<u32>,
188}
189
190/// k_EMsgGCCStrike15_v2_PlayersProfile = 9128
191#[derive(Clone, PartialEq, Message)]
192pub struct CMsgGccStrike15V2PlayersProfile {
193    #[prost(message, repeated, tag = "1")]
194    pub account_profiles: Vec<CMsgGccStrike15V2MatchmakingGc2ClientHello>,
195}