1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: This file defines all of our over-the-wire net protocols for the
// global system messages used by the GC. These are usually sent by
// the GC Host so be very careful of versioning issues when you consider
// changing them. Note that we never use types with undefined length
// (like int). Always use an explicit type (like int32).
//
//=============================================================================
#ifndef GCSYSTEMMSGS_H
#define GCSYSTEMMSGS_H
#ifdef _WIN32
#pragma once
#endif
// Protobuf headers interfere with the valve min/max/malloc overrides. so we need to do all
// this funky wrapping to make the include happy.
#include <tier0/valve_minmax_off.h>
#include "gcsystemmsgs.pb.h"
#include <tier0/valve_minmax_on.h>
namespace GCSDK
{
#pragma pack( push, 8 ) // this is a 8 instead of a 1 to maintain backward compatibility with Steam
// generic zero-length message struct
struct MsgGCEmpty_t
{
};
// k_EGCMsgAchievementAwarded
struct MsgGCAchievementAwarded_t
{
uint16 m_usStatID;
uint8 m_ubBit;
// var data:
// string data: name of achievement earned
};
// k_EGCMsgConCommand
struct MsgGCConCommand_t
{
// var data:
// string: the command as typed into the console
};
// k_EGCMsgStartPlaying
struct MsgGCStartPlaying_t
{
CSteamID m_steamID;
CSteamID m_steamIDGS;
uint32 m_unServerAddr;
uint16 m_usServerPort;
};
// k_EGCMsgStartPlaying
// k_EGCMsgStopGameserver
struct MsgGCStopSession_t
{
CSteamID m_steamID;
};
// k_EGCMsgStartGameserver
struct MsgGCStartGameserver_t
{
CSteamID m_steamID;
uint32 m_unServerAddr;
uint16 m_usServerPort;
};
// k_EGCMsgWGRequest
struct MsgGCWGRequest_t
{
uint64 m_ulSteamID; //SteamID of auth'd WG user
uint32 m_unPrivilege; // The EGCWebApiPrivilege value that the request was made with
uint32 m_cubKeyValues; // length of the key values data blob in message (starts after string request name data)
// var data -
// request name
// binary key values of web request
};
// k_EGCMsgWGResponse
struct MsgGCWGResponse_t
{
bool m_bResult; // True if the request was successful
uint32 m_cubKeyValues; // length of the key values data blob in message
// var data -
// binary key values of web response
};
// k_EGCMsgGetUserGameStatsSchemaResponse
struct MsgGetUserGameStatsSchemaResponse_t
{
bool m_bSuccess; // True is the request was successful
// var data -
// binary key values containing the User Game Stats schema
};
// k_EGCMsgGetUserStats
struct MsgGetUserStats_t
{
uint64 m_ulSteamID; // SteamID the stats are requested for
uint16 m_cStatIDs; // A count of the number of statIDs requested
// var data -
// Array of m_cStatIDs 16-bit StatIDs
};
// k_EGCMsgGetUserStatsResponse
struct MsgGetUserStatsResponse_t
{
uint64 m_ulSteamID; // SteamID the stats were requested for
bool m_bSuccess; // True is the request was successful
uint16 m_cStats; // Number of stats returned in the message
// var data -
// m_cStats instances of:
// uint16 usStatID - Stat ID
// uint32 unData - Stat value
};
// k_EGCMsgValidateSession
struct MsgGCValidateSession_t
{
uint64 m_ulSteamID; // SteamID to validate
};
// k_EGCMsgValidateSessionResponse
struct MsgGCValidateSessionResponse_t
{
uint64 m_ulSteamID;
uint64 m_ulSteamIDGS;
uint32 m_unServerAddr;
uint16 m_usServerPort;
bool m_bOnline;
};
// response to k_EGCMsgLookupAccountFromInput
struct MsgGCLookupAccountResponse
{
uint64 m_ulSteamID;
};
// k_EGCMsgSendHTTPRequest
struct MsgGCSendHTTPRequest_t
{
// Variable data:
// - Serialized CHTTPRequest
};
// k_EGCMsgSendHTTPRequestResponse
struct MsgGCSendHTTPRequestResponse_t
{
bool m_bCompleted;
// Variable data:
// - if m_bCompleted is true, Serialized CHTTPResponse
};
// k_EGCMsgRecordSupportAction
struct MsgGCRecordSupportAction_t
{
uint32 m_unAccountID; // which account is affected (object)
uint32 m_unActorID; // who made the change (subject)
// Variable data:
// - string - Custom data for the event
// - string - A note with the reason for the change
};
// k_EGCMsgWebAPIRegisterInterfaces
struct MsgGCWebAPIRegisterInterfaces_t
{
uint32 m_cInterfaces;
// Variable data:
// - KeyValues for interface - one per interface
};
// k_EGCMsgGetAccountDetails
struct MsgGCGetAccountDetails_t
{
uint64 m_ulSteamID; // SteamID to validate
};
// Used by k_EGCMsgFindAccounts
enum EAccountFindType
{
k_EFindAccountTypeInvalid = 0,
k_EFindAccountTypeAccountName = 1,
k_EFindAccountTypeEmail,
k_EFindAccountTypePersonaName,
k_EFindAccountTypeURL,
k_EFindAccountTypeAllOnline,
k_EFindAccountTypeAll,
k_EFindClanTypeClanName,
k_EFindClanTypeURL,
k_EFindClanTypeOfficialURL,
k_EFindClanTypeAppID,
};
} // namespace GCSDK
#pragma pack( pop )
#endif // GCSYSTEMMSGS_H
|