overlook-csgo 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +7 -0
  2. data/.gitattributes +2 -0
  3. data/.gitignore +5 -0
  4. data/.rspec +2 -0
  5. data/.ruby-version +1 -0
  6. data/Gemfile +3 -0
  7. data/Gemfile.lock +115 -0
  8. data/README.md +77 -0
  9. data/Rakefile +6 -0
  10. data/bin/console +7 -0
  11. data/bin/setup +7 -0
  12. data/lib/overlook.rb +20 -0
  13. data/lib/overlook/bit_buffer.rb +52 -0
  14. data/lib/overlook/bit_reader.rb +64 -0
  15. data/lib/overlook/byte_reader.rb +58 -0
  16. data/lib/overlook/csgo.rb +9 -0
  17. data/lib/overlook/csgo/demo.rb +33 -0
  18. data/lib/overlook/csgo/demo/base.rb +20 -0
  19. data/lib/overlook/csgo/demo/command.rb +67 -0
  20. data/lib/overlook/csgo/demo/command_factory.rb +15 -0
  21. data/lib/overlook/csgo/demo/encrypted_data_handler.rb +16 -0
  22. data/lib/overlook/csgo/demo/game_event_list_message_handler.rb +19 -0
  23. data/lib/overlook/csgo/demo/game_event_message_handler.rb +35 -0
  24. data/lib/overlook/csgo/demo/header.rb +45 -0
  25. data/lib/overlook/csgo/demo/key_reader.rb +18 -0
  26. data/lib/overlook/csgo/demo/packet.rb +16 -0
  27. data/lib/overlook/csgo/demo/packet_factory.rb +22 -0
  28. data/lib/overlook/csgo/demo/packet_handler.rb +50 -0
  29. data/lib/overlook/csgo/demo/parser.rb +66 -0
  30. data/lib/overlook/csgo/demo/user_message_message_handler.rb +43 -0
  31. data/lib/overlook/csgo/match_info_decoder.rb +92 -0
  32. data/lib/overlook/csgo/sharecode_decoder.rb +83 -0
  33. data/lib/overlook/version.rb +3 -0
  34. data/lib/proto/.gitkeep +0 -0
  35. data/lib/proto/compiled/cstrike15_gcmessages.pb.rb +1382 -0
  36. data/lib/proto/compiled/cstrike15_usermessages.pb.rb +702 -0
  37. data/lib/proto/compiled/descriptor.pb.rb +280 -0
  38. data/lib/proto/compiled/netmessages.pb.rb +687 -0
  39. data/lib/proto/compiled/steammessages.pb.rb +798 -0
  40. data/overlook-csgo.gemspec +36 -0
  41. metadata +209 -0
@@ -0,0 +1,798 @@
1
+ ## Generated from steammessages.proto
2
+ require "beefcake"
3
+
4
+
5
+ module GCProtoBufMsgSrc
6
+ GCProtoBufMsgSrc_Unspecified = 0
7
+ GCProtoBufMsgSrc_FromSystem = 1
8
+ GCProtoBufMsgSrc_FromSteamID = 2
9
+ GCProtoBufMsgSrc_FromGC = 3
10
+ GCProtoBufMsgSrc_ReplySystem = 4
11
+ end
12
+
13
+ class CMsgProtoBufHeader
14
+ include Beefcake::Message
15
+ end
16
+
17
+ class CMsgWebAPIKey
18
+ include Beefcake::Message
19
+ end
20
+
21
+ class CMsgHttpRequest
22
+ include Beefcake::Message
23
+
24
+ class RequestHeader
25
+ include Beefcake::Message
26
+ end
27
+
28
+ class QueryParam
29
+ include Beefcake::Message
30
+ end
31
+ end
32
+
33
+ class CMsgWebAPIRequest
34
+ include Beefcake::Message
35
+ end
36
+
37
+ class CMsgHttpResponse
38
+ include Beefcake::Message
39
+
40
+ class ResponseHeader
41
+ include Beefcake::Message
42
+ end
43
+ end
44
+
45
+ class CMsgAMFindAccounts
46
+ include Beefcake::Message
47
+ end
48
+
49
+ class CMsgAMFindAccountsResponse
50
+ include Beefcake::Message
51
+ end
52
+
53
+ class CMsgNotifyWatchdog
54
+ include Beefcake::Message
55
+ end
56
+
57
+ class CMsgAMGetLicenses
58
+ include Beefcake::Message
59
+ end
60
+
61
+ class CMsgPackageLicense
62
+ include Beefcake::Message
63
+ end
64
+
65
+ class CMsgAMGetLicensesResponse
66
+ include Beefcake::Message
67
+ end
68
+
69
+ class CMsgAMGetUserGameStats
70
+ include Beefcake::Message
71
+ end
72
+
73
+ class CMsgAMGetUserGameStatsResponse
74
+ include Beefcake::Message
75
+
76
+ class Stats
77
+ include Beefcake::Message
78
+ end
79
+
80
+ class Achievement_Blocks
81
+ include Beefcake::Message
82
+ end
83
+ end
84
+
85
+ class CMsgGCGetCommandList
86
+ include Beefcake::Message
87
+ end
88
+
89
+ class CMsgGCGetCommandListResponse
90
+ include Beefcake::Message
91
+ end
92
+
93
+ class CGCMsgMemCachedGet
94
+ include Beefcake::Message
95
+ end
96
+
97
+ class CGCMsgMemCachedGetResponse
98
+ include Beefcake::Message
99
+
100
+ class ValueTag
101
+ include Beefcake::Message
102
+ end
103
+ end
104
+
105
+ class CGCMsgMemCachedSet
106
+ include Beefcake::Message
107
+
108
+ class KeyPair
109
+ include Beefcake::Message
110
+ end
111
+ end
112
+
113
+ class CGCMsgMemCachedDelete
114
+ include Beefcake::Message
115
+ end
116
+
117
+ class CGCMsgMemCachedStats
118
+ include Beefcake::Message
119
+ end
120
+
121
+ class CGCMsgMemCachedStatsResponse
122
+ include Beefcake::Message
123
+ end
124
+
125
+ class CGCMsgSQLStats
126
+ include Beefcake::Message
127
+ end
128
+
129
+ class CGCMsgSQLStatsResponse
130
+ include Beefcake::Message
131
+ end
132
+
133
+ class CMsgAMAddFreeLicense
134
+ include Beefcake::Message
135
+ end
136
+
137
+ class CMsgAMAddFreeLicenseResponse
138
+ include Beefcake::Message
139
+ end
140
+
141
+ class CGCMsgGetIPLocation
142
+ include Beefcake::Message
143
+ end
144
+
145
+ class CIPLocationInfo
146
+ include Beefcake::Message
147
+ end
148
+
149
+ class CGCMsgGetIPLocationResponse
150
+ include Beefcake::Message
151
+ end
152
+
153
+ class CGCMsgSystemStatsSchema
154
+ include Beefcake::Message
155
+ end
156
+
157
+ class CGCMsgGetSystemStats
158
+ include Beefcake::Message
159
+ end
160
+
161
+ class CGCMsgGetSystemStatsResponse
162
+ include Beefcake::Message
163
+ end
164
+
165
+ class CMsgAMSendEmail
166
+ include Beefcake::Message
167
+
168
+ class ReplacementToken
169
+ include Beefcake::Message
170
+ end
171
+
172
+ class PersonaNameReplacementToken
173
+ include Beefcake::Message
174
+ end
175
+ end
176
+
177
+ class CMsgAMSendEmailResponse
178
+ include Beefcake::Message
179
+ end
180
+
181
+ class CMsgGCGetEmailTemplate
182
+ include Beefcake::Message
183
+ end
184
+
185
+ class CMsgGCGetEmailTemplateResponse
186
+ include Beefcake::Message
187
+ end
188
+
189
+ class CMsgAMGrantGuestPasses2
190
+ include Beefcake::Message
191
+ end
192
+
193
+ class CMsgAMGrantGuestPasses2Response
194
+ include Beefcake::Message
195
+ end
196
+
197
+ class CGCSystemMsg_GetAccountDetails
198
+ include Beefcake::Message
199
+ end
200
+
201
+ class CGCSystemMsg_GetAccountDetails_Response
202
+ include Beefcake::Message
203
+ end
204
+
205
+ class CMsgGCGetPersonaNames
206
+ include Beefcake::Message
207
+ end
208
+
209
+ class CMsgGCGetPersonaNames_Response
210
+ include Beefcake::Message
211
+
212
+ class PersonaName
213
+ include Beefcake::Message
214
+ end
215
+ end
216
+
217
+ class CMsgGCCheckFriendship
218
+ include Beefcake::Message
219
+ end
220
+
221
+ class CMsgGCCheckFriendship_Response
222
+ include Beefcake::Message
223
+ end
224
+
225
+ class CMsgGCMsgMasterSetDirectory
226
+ include Beefcake::Message
227
+
228
+ class SubGC
229
+ include Beefcake::Message
230
+ end
231
+ end
232
+
233
+ class CMsgGCMsgMasterSetDirectory_Response
234
+ include Beefcake::Message
235
+ end
236
+
237
+ class CMsgGCMsgWebAPIJobRequestForwardResponse
238
+ include Beefcake::Message
239
+ end
240
+
241
+ class CGCSystemMsg_GetPurchaseTrust_Request
242
+ include Beefcake::Message
243
+ end
244
+
245
+ class CGCSystemMsg_GetPurchaseTrust_Response
246
+ include Beefcake::Message
247
+ end
248
+
249
+ class CMsgGCHAccountVacStatusChange
250
+ include Beefcake::Message
251
+ end
252
+
253
+ class CMsgGCGetPartnerAccountLink
254
+ include Beefcake::Message
255
+ end
256
+
257
+ class CMsgGCGetPartnerAccountLink_Response
258
+ include Beefcake::Message
259
+ end
260
+
261
+ class CMsgGCRoutingInfo
262
+ include Beefcake::Message
263
+
264
+ module RoutingMethod
265
+ RANDOM = 0
266
+ DISCARD = 1
267
+ CLIENT_STEAMID = 2
268
+ PROTOBUF_FIELD_UINT64 = 3
269
+ WEBAPI_PARAM_UINT64 = 4
270
+ end
271
+ end
272
+
273
+ class CMsgGCMsgMasterSetWebAPIRouting
274
+ include Beefcake::Message
275
+
276
+ class Entry
277
+ include Beefcake::Message
278
+ end
279
+ end
280
+
281
+ class CMsgGCMsgMasterSetClientMsgRouting
282
+ include Beefcake::Message
283
+
284
+ class Entry
285
+ include Beefcake::Message
286
+ end
287
+ end
288
+
289
+ class CMsgGCMsgMasterSetWebAPIRouting_Response
290
+ include Beefcake::Message
291
+ end
292
+
293
+ class CMsgGCMsgMasterSetClientMsgRouting_Response
294
+ include Beefcake::Message
295
+ end
296
+
297
+ class CMsgGCMsgSetOptions
298
+ include Beefcake::Message
299
+
300
+ module Option
301
+ NOTIFY_USER_SESSIONS = 0
302
+ NOTIFY_SERVER_SESSIONS = 1
303
+ NOTIFY_ACHIEVEMENTS = 2
304
+ NOTIFY_VAC_ACTION = 3
305
+ end
306
+
307
+ class MessageRange
308
+ include Beefcake::Message
309
+ end
310
+ end
311
+
312
+ class CMsgGCHUpdateSession
313
+ include Beefcake::Message
314
+
315
+ class ExtraField
316
+ include Beefcake::Message
317
+ end
318
+ end
319
+
320
+ class CMsgNotificationOfSuspiciousActivity
321
+ include Beefcake::Message
322
+
323
+ class MultipleGameInstances
324
+ include Beefcake::Message
325
+ end
326
+ end
327
+
328
+ class CMsgProtoBufHeader
329
+ optional :client_steam_id, :fixed64, 1
330
+ optional :client_session_id, :int32, 2
331
+ optional :source_app_id, :uint32, 3
332
+ optional :job_id_source, :fixed64, 10, :default => 18446744073709551615
333
+ optional :job_id_target, :fixed64, 11, :default => 18446744073709551615
334
+ optional :target_job_name, :string, 12
335
+ optional :eresult, :int32, 13, :default => 2
336
+ optional :error_message, :string, 14
337
+ optional :gc_msg_src, GCProtoBufMsgSrc, 200, :default => GCProtoBufMsgSrc::GCProtoBufMsgSrc_Unspecified
338
+ optional :gc_dir_index_source, :uint32, 201
339
+ end
340
+
341
+ class CMsgWebAPIKey
342
+ optional :status, :uint32, 1, :default => 255
343
+ optional :account_id, :uint32, 2, :default => 0
344
+ optional :publisher_group_id, :uint32, 3, :default => 0
345
+ optional :key_id, :uint32, 4
346
+ optional :domain, :string, 5
347
+ end
348
+
349
+ class CMsgHttpRequest
350
+
351
+ class RequestHeader
352
+ optional :name, :string, 1
353
+ optional :value, :string, 2
354
+ end
355
+
356
+ class QueryParam
357
+ optional :name, :string, 1
358
+ optional :value, :bytes, 2
359
+ end
360
+ optional :request_method, :uint32, 1
361
+ optional :hostname, :string, 2
362
+ optional :url, :string, 3
363
+ repeated :headers, CMsgHttpRequest::RequestHeader, 4
364
+ repeated :get_params, CMsgHttpRequest::QueryParam, 5
365
+ repeated :post_params, CMsgHttpRequest::QueryParam, 6
366
+ optional :body, :bytes, 7
367
+ optional :absolute_timeout, :uint32, 8
368
+ end
369
+
370
+ class CMsgWebAPIRequest
371
+ optional :UNUSED_job_name, :string, 1
372
+ optional :interface_name, :string, 2
373
+ optional :method_name, :string, 3
374
+ optional :version, :uint32, 4
375
+ optional :api_key, CMsgWebAPIKey, 5
376
+ optional :request, CMsgHttpRequest, 6
377
+ optional :routing_app_id, :uint32, 7
378
+ end
379
+
380
+ class CMsgHttpResponse
381
+
382
+ class ResponseHeader
383
+ optional :name, :string, 1
384
+ optional :value, :string, 2
385
+ end
386
+ optional :status_code, :uint32, 1
387
+ repeated :headers, CMsgHttpResponse::ResponseHeader, 2
388
+ optional :body, :bytes, 3
389
+ end
390
+
391
+ class CMsgAMFindAccounts
392
+ optional :search_type, :uint32, 1
393
+ optional :search_string, :string, 2
394
+ end
395
+
396
+ class CMsgAMFindAccountsResponse
397
+ repeated :steam_id, :fixed64, 1
398
+ end
399
+
400
+ class CMsgNotifyWatchdog
401
+ optional :source, :uint32, 1
402
+ optional :alert_type, :uint32, 2
403
+ optional :alert_destination, :uint32, 3
404
+ optional :critical, :bool, 4
405
+ optional :time, :uint32, 5
406
+ optional :appid, :uint32, 6
407
+ optional :text, :string, 7
408
+ end
409
+
410
+ class CMsgAMGetLicenses
411
+ optional :steamid, :fixed64, 1
412
+ end
413
+
414
+ class CMsgPackageLicense
415
+ optional :package_id, :uint32, 1
416
+ optional :time_created, :uint32, 2
417
+ optional :owner_id, :uint32, 3
418
+ end
419
+
420
+ class CMsgAMGetLicensesResponse
421
+ repeated :license, CMsgPackageLicense, 1
422
+ optional :result, :uint32, 2
423
+ end
424
+
425
+ class CMsgAMGetUserGameStats
426
+ optional :steam_id, :fixed64, 1
427
+ optional :game_id, :fixed64, 2
428
+ repeated :stats, :uint32, 3
429
+ end
430
+
431
+ class CMsgAMGetUserGameStatsResponse
432
+
433
+ class Stats
434
+ optional :stat_id, :uint32, 1
435
+ optional :stat_value, :uint32, 2
436
+ end
437
+
438
+ class Achievement_Blocks
439
+ optional :achievement_id, :uint32, 1
440
+ optional :achievement_bit_id, :uint32, 2
441
+ optional :unlock_time, :fixed32, 3
442
+ end
443
+ optional :steam_id, :fixed64, 1
444
+ optional :game_id, :fixed64, 2
445
+ optional :eresult, :int32, 3, :default => 2
446
+ repeated :stats, CMsgAMGetUserGameStatsResponse::Stats, 4
447
+ repeated :achievement_blocks, CMsgAMGetUserGameStatsResponse::Achievement_Blocks, 5
448
+ end
449
+
450
+ class CMsgGCGetCommandList
451
+ optional :app_id, :uint32, 1
452
+ optional :command_prefix, :string, 2
453
+ end
454
+
455
+ class CMsgGCGetCommandListResponse
456
+ repeated :command_name, :string, 1
457
+ end
458
+
459
+ class CGCMsgMemCachedGet
460
+ repeated :keys, :string, 1
461
+ end
462
+
463
+ class CGCMsgMemCachedGetResponse
464
+
465
+ class ValueTag
466
+ optional :found, :bool, 1
467
+ optional :value, :bytes, 2
468
+ end
469
+ repeated :values, CGCMsgMemCachedGetResponse::ValueTag, 1
470
+ end
471
+
472
+ class CGCMsgMemCachedSet
473
+
474
+ class KeyPair
475
+ optional :name, :string, 1
476
+ optional :value, :bytes, 2
477
+ end
478
+ repeated :keys, CGCMsgMemCachedSet::KeyPair, 1
479
+ end
480
+
481
+ class CGCMsgMemCachedDelete
482
+ repeated :keys, :string, 1
483
+ end
484
+
485
+ class CGCMsgMemCachedStats
486
+ end
487
+
488
+ class CGCMsgMemCachedStatsResponse
489
+ optional :curr_connections, :uint64, 1
490
+ optional :cmd_get, :uint64, 2
491
+ optional :cmd_set, :uint64, 3
492
+ optional :cmd_flush, :uint64, 4
493
+ optional :get_hits, :uint64, 5
494
+ optional :get_misses, :uint64, 6
495
+ optional :delete_hits, :uint64, 7
496
+ optional :delete_misses, :uint64, 8
497
+ optional :bytes_read, :uint64, 9
498
+ optional :bytes_written, :uint64, 10
499
+ optional :limit_maxbytes, :uint64, 11
500
+ optional :curr_items, :uint64, 12
501
+ optional :evictions, :uint64, 13
502
+ optional :bytes, :uint64, 14
503
+ end
504
+
505
+ class CGCMsgSQLStats
506
+ optional :schema_catalog, :uint32, 1
507
+ end
508
+
509
+ class CGCMsgSQLStatsResponse
510
+ optional :threads, :uint32, 1
511
+ optional :threads_connected, :uint32, 2
512
+ optional :threads_active, :uint32, 3
513
+ optional :operations_submitted, :uint32, 4
514
+ optional :prepared_statements_executed, :uint32, 5
515
+ optional :non_prepared_statements_executed, :uint32, 6
516
+ optional :deadlock_retries, :uint32, 7
517
+ optional :operations_timed_out_in_queue, :uint32, 8
518
+ optional :errors, :uint32, 9
519
+ end
520
+
521
+ class CMsgAMAddFreeLicense
522
+ optional :steamid, :fixed64, 1
523
+ optional :ip_public, :uint32, 2
524
+ optional :packageid, :uint32, 3
525
+ optional :store_country_code, :string, 4
526
+ end
527
+
528
+ class CMsgAMAddFreeLicenseResponse
529
+ optional :eresult, :int32, 1, :default => 2
530
+ optional :purchase_result_detail, :int32, 2
531
+ optional :transid, :fixed64, 3
532
+ end
533
+
534
+ class CGCMsgGetIPLocation
535
+ repeated :ips, :fixed32, 1
536
+ end
537
+
538
+ class CIPLocationInfo
539
+ optional :ip, :uint32, 1
540
+ optional :latitude, :float, 2
541
+ optional :longitude, :float, 3
542
+ optional :country, :string, 4
543
+ optional :state, :string, 5
544
+ optional :city, :string, 6
545
+ end
546
+
547
+ class CGCMsgGetIPLocationResponse
548
+ repeated :infos, CIPLocationInfo, 1
549
+ end
550
+
551
+ class CGCMsgSystemStatsSchema
552
+ optional :gc_app_id, :uint32, 1
553
+ optional :schema_kv, :bytes, 2
554
+ end
555
+
556
+ class CGCMsgGetSystemStats
557
+ end
558
+
559
+ class CGCMsgGetSystemStatsResponse
560
+ optional :gc_app_id, :uint32, 1
561
+ optional :stats_kv, :bytes, 2
562
+ optional :active_jobs, :uint32, 3
563
+ optional :yielding_jobs, :uint32, 4
564
+ optional :user_sessions, :uint32, 5
565
+ optional :game_server_sessions, :uint32, 6
566
+ optional :socaches, :uint32, 7
567
+ optional :socaches_to_unload, :uint32, 8
568
+ optional :socaches_loading, :uint32, 9
569
+ optional :writeback_queue, :uint32, 10
570
+ optional :steamid_locks, :uint32, 11
571
+ optional :logon_queue, :uint32, 12
572
+ optional :logon_jobs, :uint32, 13
573
+ end
574
+
575
+ class CMsgAMSendEmail
576
+
577
+ class ReplacementToken
578
+ optional :token_name, :string, 1
579
+ optional :token_value, :string, 2
580
+ end
581
+
582
+ class PersonaNameReplacementToken
583
+ optional :steamid, :fixed64, 1
584
+ optional :token_name, :string, 2
585
+ end
586
+ optional :steamid, :fixed64, 1
587
+ optional :email_msg_type, :uint32, 2
588
+ optional :email_format, :uint32, 3
589
+ repeated :persona_name_tokens, CMsgAMSendEmail::PersonaNameReplacementToken, 5
590
+ optional :source_gc, :uint32, 6
591
+ repeated :tokens, CMsgAMSendEmail::ReplacementToken, 7
592
+ end
593
+
594
+ class CMsgAMSendEmailResponse
595
+ optional :eresult, :uint32, 1, :default => 2
596
+ end
597
+
598
+ class CMsgGCGetEmailTemplate
599
+ optional :app_id, :uint32, 1
600
+ optional :email_msg_type, :uint32, 2
601
+ optional :email_lang, :int32, 3
602
+ optional :email_format, :int32, 4
603
+ end
604
+
605
+ class CMsgGCGetEmailTemplateResponse
606
+ optional :eresult, :uint32, 1, :default => 2
607
+ optional :template_exists, :bool, 2
608
+ optional :template, :string, 3
609
+ end
610
+
611
+ class CMsgAMGrantGuestPasses2
612
+ optional :steam_id, :fixed64, 1
613
+ optional :package_id, :uint32, 2
614
+ optional :passes_to_grant, :int32, 3
615
+ optional :days_to_expiration, :int32, 4
616
+ optional :action, :int32, 5
617
+ end
618
+
619
+ class CMsgAMGrantGuestPasses2Response
620
+ optional :eresult, :int32, 1, :default => 2
621
+ optional :passes_granted, :int32, 2, :default => 0
622
+ end
623
+
624
+ class CGCSystemMsg_GetAccountDetails
625
+ optional :steamid, :fixed64, 1
626
+ optional :appid, :uint32, 2
627
+ end
628
+
629
+ class CGCSystemMsg_GetAccountDetails_Response
630
+ optional :eresult_deprecated, :uint32, 1, :default => 2
631
+ optional :account_name, :string, 2
632
+ optional :persona_name, :string, 3
633
+ optional :is_profile_public, :bool, 4
634
+ optional :is_inventory_public, :bool, 5
635
+ optional :is_vac_banned, :bool, 7
636
+ optional :is_cyber_cafe, :bool, 8
637
+ optional :is_school_account, :bool, 9
638
+ optional :is_limited, :bool, 10
639
+ optional :is_subscribed, :bool, 11
640
+ optional :package, :uint32, 12
641
+ optional :is_free_trial_account, :bool, 13
642
+ optional :free_trial_expiration, :uint32, 14
643
+ optional :is_low_violence, :bool, 15
644
+ optional :is_account_locked_down, :bool, 16
645
+ optional :is_community_banned, :bool, 17
646
+ optional :is_trade_banned, :bool, 18
647
+ optional :trade_ban_expiration, :uint32, 19
648
+ optional :accountid, :uint32, 20
649
+ optional :suspension_end_time, :uint32, 21
650
+ optional :currency, :string, 22
651
+ optional :steam_level, :uint32, 23
652
+ end
653
+
654
+ class CMsgGCGetPersonaNames
655
+ repeated :steamids, :fixed64, 1
656
+ end
657
+
658
+ class CMsgGCGetPersonaNames_Response
659
+
660
+ class PersonaName
661
+ optional :steamid, :fixed64, 1
662
+ optional :persona_name, :string, 2
663
+ end
664
+ repeated :succeeded_lookups, CMsgGCGetPersonaNames_Response::PersonaName, 1
665
+ repeated :failed_lookup_steamids, :fixed64, 2
666
+ end
667
+
668
+ class CMsgGCCheckFriendship
669
+ optional :steamid_left, :fixed64, 1
670
+ optional :steamid_right, :fixed64, 2
671
+ end
672
+
673
+ class CMsgGCCheckFriendship_Response
674
+ optional :success, :bool, 1
675
+ optional :found_friendship, :bool, 2
676
+ end
677
+
678
+ class CMsgGCMsgMasterSetDirectory
679
+
680
+ class SubGC
681
+ optional :dir_index, :uint32, 1
682
+ optional :name, :string, 2
683
+ optional :box, :string, 3
684
+ optional :command_line, :string, 4
685
+ optional :gc_binary, :string, 5
686
+ end
687
+ optional :master_dir_index, :uint32, 1
688
+ repeated :dir, CMsgGCMsgMasterSetDirectory::SubGC, 2
689
+ end
690
+
691
+ class CMsgGCMsgMasterSetDirectory_Response
692
+ optional :eresult, :int32, 1, :default => 2
693
+ end
694
+
695
+ class CMsgGCMsgWebAPIJobRequestForwardResponse
696
+ optional :dir_index, :uint32, 1
697
+ end
698
+
699
+ class CGCSystemMsg_GetPurchaseTrust_Request
700
+ optional :steamid, :fixed64, 1
701
+ end
702
+
703
+ class CGCSystemMsg_GetPurchaseTrust_Response
704
+ optional :has_prior_purchase_history, :bool, 1
705
+ optional :has_no_recent_password_resets, :bool, 2
706
+ optional :is_wallet_cash_trusted, :bool, 3
707
+ optional :time_all_trusted, :uint32, 4
708
+ end
709
+
710
+ class CMsgGCHAccountVacStatusChange
711
+ optional :steam_id, :fixed64, 1
712
+ optional :app_id, :uint32, 2
713
+ optional :rtime_vacban_starts, :uint32, 3
714
+ optional :is_banned_now, :bool, 4
715
+ optional :is_banned_future, :bool, 5
716
+ end
717
+
718
+ class CMsgGCGetPartnerAccountLink
719
+ optional :steamid, :fixed64, 1
720
+ end
721
+
722
+ class CMsgGCGetPartnerAccountLink_Response
723
+ optional :pwid, :uint32, 1
724
+ optional :nexonid, :uint32, 2
725
+ end
726
+
727
+ class CMsgGCRoutingInfo
728
+ repeated :dir_index, :uint32, 1
729
+ optional :method, CMsgGCRoutingInfo::RoutingMethod, 2, :default => CMsgGCRoutingInfo::RoutingMethod::RANDOM
730
+ optional :fallback, CMsgGCRoutingInfo::RoutingMethod, 3, :default => CMsgGCRoutingInfo::RoutingMethod::DISCARD
731
+ optional :protobuf_field, :uint32, 4
732
+ optional :webapi_param, :string, 5
733
+ end
734
+
735
+ class CMsgGCMsgMasterSetWebAPIRouting
736
+
737
+ class Entry
738
+ optional :interface_name, :string, 1
739
+ optional :method_name, :string, 2
740
+ optional :routing, CMsgGCRoutingInfo, 3
741
+ end
742
+ repeated :entries, CMsgGCMsgMasterSetWebAPIRouting::Entry, 1
743
+ end
744
+
745
+ class CMsgGCMsgMasterSetClientMsgRouting
746
+
747
+ class Entry
748
+ optional :msg_type, :uint32, 1
749
+ optional :routing, CMsgGCRoutingInfo, 2
750
+ end
751
+ repeated :entries, CMsgGCMsgMasterSetClientMsgRouting::Entry, 1
752
+ end
753
+
754
+ class CMsgGCMsgMasterSetWebAPIRouting_Response
755
+ optional :eresult, :int32, 1, :default => 2
756
+ end
757
+
758
+ class CMsgGCMsgMasterSetClientMsgRouting_Response
759
+ optional :eresult, :int32, 1, :default => 2
760
+ end
761
+
762
+ class CMsgGCMsgSetOptions
763
+
764
+ class MessageRange
765
+ required :low, :uint32, 1
766
+ required :high, :uint32, 2
767
+ end
768
+ repeated :options, CMsgGCMsgSetOptions::Option, 1
769
+ repeated :client_msg_ranges, CMsgGCMsgSetOptions::MessageRange, 2
770
+ end
771
+
772
+ class CMsgGCHUpdateSession
773
+
774
+ class ExtraField
775
+ optional :name, :string, 1
776
+ optional :value, :string, 2
777
+ end
778
+ optional :steam_id, :fixed64, 1
779
+ optional :app_id, :uint32, 2
780
+ optional :online, :bool, 3
781
+ optional :server_steam_id, :fixed64, 4
782
+ optional :server_addr, :uint32, 5
783
+ optional :server_port, :uint32, 6
784
+ optional :os_type, :uint32, 7
785
+ optional :client_addr, :uint32, 8
786
+ repeated :extra_fields, CMsgGCHUpdateSession::ExtraField, 9
787
+ end
788
+
789
+ class CMsgNotificationOfSuspiciousActivity
790
+
791
+ class MultipleGameInstances
792
+ optional :app_instance_count, :uint32, 1
793
+ repeated :other_steamids, :fixed64, 2
794
+ end
795
+ optional :steamid, :fixed64, 1
796
+ optional :appid, :uint32, 2
797
+ optional :multiple_instances, CMsgNotificationOfSuspiciousActivity::MultipleGameInstances, 3
798
+ end