Counter-Strike: Global Offensive uses Google's Protocol Buffers instead of Valve's traditional UserMessages.
The data on this page was read from [1].
The initial versions of these files were provided by Valve and updated by the AlliedModders staff.
//====== Copyright (c) 2013, Valve Corporation, All rights reserved. ========//
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
// Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
// THE POSSIBILITY OF SUCH DAMAGE.
//===========================================================================//
//
// Purpose: The file defines our Google Protocol Buffers which are used in over
// the wire messages for the Source engine.
//
//=============================================================================
| Name:
|
VGUIMenu.SubKey
|
| Structure:
|
|
| Name:
|
VGUIMenu
|
| Structure:
|
| string
|
name
|
|
| bool
|
show
|
|
| repeated VGUIMenu.SubKey
|
subkeys
|
|
|
Geiger
Train
HudText
SayText
| Name:
|
SayText
|
| Structure:
|
| int32
|
ent_idx
|
|
| string
|
text
|
|
| bool
|
chat
|
|
| bool
|
textallchat
|
|
|
SayText2
Note: As of this writing, params requires four empty strings or it will crash the client
| Name:
|
SayText2
|
| Structure:
|
| int32
|
ent_idx
|
|
| bool
|
chat
|
|
| string
|
msg_name
|
|
| repeated string
|
params
|
|
| bool
|
textallchat
|
|
|
TextMsg
| Name:
|
TextMsg
|
| Structure:
|
| int32
|
msg_dst
|
|
| repeated string
|
params
|
|
|
HudMsg
| Name:
|
HudMsg
|
| Structure:
|
| int32
|
channel
|
|
| CMsgVector2D
|
pos
|
|
| CMsgRGBA
|
clr1
|
|
| CMsgRGBA
|
clr2
|
|
| int32
|
effect
|
|
| float
|
fade_in_time
|
|
| float
|
fade_out_time
|
|
| float
|
hold_time
|
|
| float
|
fx_time
|
|
| string
|
text
|
|
|
Shake
| Name:
|
Shake
|
| Structure:
|
| int32
|
command
|
|
| float
|
local_amplitude
|
|
| float
|
frequency
|
|
| float
|
duration
|
|
|
Command:
- SHAKE_START = 0 // Starts the screen shake for all players within the radius
- SHAKE_STOP = 1 // Stops the screen shake for all players within the radius
- SHAKE_AMPLITUDE = 2 // Modifies the amplitude of an active screen shake for all players within the radius
- SHAKE_FREQUENCY = 3 // Modifies the frequency of an active screen shake for all players within the radius
- SHAKE_START_RUMBLEONLY = 4 // Starts a shake effect that only rumbles the controller, no screen effect
- SHAKE_START_NORUMBLE = 5 // Starts a shake that does NOT rumble the controller
Fade
| Name:
|
Fade
|
| Structure:
|
| int32
|
duration
|
Time that it will take to fade the screen in or out
|
| int32
|
hold_time
|
Time to hold the faded in/out state
|
| int32
|
flags
|
|
| CMsgRGBA
|
clr
|
|
|
Duration:
Even if an int32 is requested, the value must NOT be superior to 65535 and inferior to 0 (-> like an uint16) !
The value is in seconds and divided into two parts: a fractional one (b0...b8) and an integer one (b9...b15).
-> If for example you want to set 3.5 seconds, use "RoundFloat(3.5 * (1 << 9))".
Hold Time:
Even if an int32 is requested, the value must NOT be superior to 65535 and inferior to 0 (-> like an uint16) !
The value is in seconds and divided into two parts: a fractional one (b0...b8) and an integer one (b9...b15).
-> If for example you want to set 3.5 seconds, use "RoundFloat(3.5 * (1 << 9))".
Flags:
- FFADE_IN = 0x0001 // Fade in
- FFADE_OUT = 0x0002 // Fade out
- FFADE_MODULATE = 0x0004 // Modulate (Don't blend)
- FFADE_STAYOUT = 0x0008 // Ignores the duration, stays faded out until a new fade message is received
- FFADE_PURGE = 0x0010 // Purges all other fades, replacing them with this one
Rumble
| Name:
|
Rumble
|
| Structure:
|
| int32
|
index
|
|
| int32
|
data
|
|
| int32
|
flags
|
|
|
Index:
- RUMBLE_INVALID = -1
- RUMBLE_STOP_ALL = 0 // Cease all current rumbling effects.
- RUMBLE_PISTOL = 1
- RUMBLE_357 = 2
- RUMBLE_SMG1 = 3
- RUMBLE_AR2 = 4
- RUMBLE_SHOTGUN_SINGLE = 5
- RUMBLE_SHOTGUN_DOUBLE = 6
- RUMBLE_AR2_ALT_FIRE = 7
- RUMBLE_RPG_MISSILE = 8
- RUMBLE_CROWBAR_SWING = 9
- RUMBLE_AIRBOAT_GUN = 10
- RUMBLE_JEEP_ENGINE_LOOP = 11
- RUMBLE_FLAT_LEFT = 12
- RUMBLE_FLAT_RIGHT = 13
- RUMBLE_FLAT_BOTH = 14
- RUMBLE_DMG_LOW = 15
- RUMBLE_DMG_MED = 16
- RUMBLE_DMG_HIGH = 17
- RUMBLE_FALL_LONG = 18
- RUMBLE_FALL_SHORT = 19
- RUMBLE_PHYSCANNON_OPEN = 20
- RUMBLE_PHYSCANNON_PUNT = 21
- RUMBLE_PHYSCANNON_LOW = 22
- RUMBLE_PHYSCANNON_MEDIUM = 23
- RUMBLE_PHYSCANNON_HIGH = 24
- RUMBLE_PORTALGUN_LEFT = 25
- RUMBLE_PORTALGUN_RIGHT = 26
- RUMBLE_PORTAL_PLACEMENT_FAILURE = 27
Flags:
- RUMBLE_FLAGS_NONE = 0x0000
- RUMBLE_FLAG_STOP = 0x0001 // Stop any instance of this type of effect that's already playing
- RUMBLE_FLAG_LOOP = 0x0002 // Make this effect loop
- RUMBLE_FLAG_RESTART = 0x0004 // If this effect is already playing, restart it
- RUMBLE_FLAG_UPDATE_SCALE = 0x0008 // Apply DATA to this effect if already playing, but don't restart
- RUMBLE_FLAG_ONLYONE = 0x0010 // Don't play this effect if it is already playing
- RUMBLE_FLAG_RANDOM_AMPLITUDE = 0x0020 // Amplitude scale will be randomly chosen (Between 10% and 100%)
- RUMBLE_FLAG_INITIAL_SCALE = 0x0040 // Data is the initial scale to start this effect (* 100)
CloseCaption
| Name:
|
CloseCaption
|
| Structure:
|
| uint32
|
hash
|
|
| int32
|
duration
|
|
| bool
|
from_player
|
|
| string
|
cctoken
|
|
|
CloseCaptionDirect
| Name:
|
CloseCaptionDirect
|
| Structure:
|
| uint32
|
hash
|
|
| int32
|
duration
|
|
| bool
|
from_player
|
|
|
SendAudio
| Name:
|
SendAudio
|
| Structure:
|
|
RawAudio
| Name:
|
RawAudio
|
| Structure:
|
| int32
|
pitch
|
|
| int32
|
ent_index
|
|
| float
|
duration
|
|
| string
|
voice_filename
|
|
|
VoiceMask
| Name:
|
VoiceMask.PlayerMask
|
| Structure:
|
| int32
|
game_rules_mask
|
|
| int32
|
ban_masks
|
|
|
| Name:
|
VoiceMask
|
| Structure:
|
| repeated VoiceMask.PlayerMask
|
player_masks
|
|
| bool
|
player_mod_enable
|
|
|
Damage
| Name:
|
Damage
|
| Structure:
|
| int32
|
amount
|
|
| CMsgVector
|
inflictor_world_pos
|
|
| int32
|
victim_entindex
|
|
|
RadioText
| Name:
|
RadioText
|
| Structure:
|
| int32
|
msg_dst
|
|
| int32
|
client
|
|
| string
|
msg_name
|
|
| repeated string
|
params
|
|
|
HintText
| Name:
|
HintText
|
| Structure:
|
|
KeyHintText
| Name:
|
KeyHintText
|
| Structure:
|
|
ProcessSpottedEntityUpdate
Note: gurjeets - Message below is slightly bigger in size than the non-protobuf version, by around 8 bits.
| Name:
|
ProcessSpottedEntityUpdate.SpottedEntityUpdate
|
| Structure:
|
| int32
|
entity_idx
|
|
| int32
|
class_id
|
|
| int32
|
origin_x
|
|
| int32
|
origin_y
|
|
| int32
|
origin_z
|
|
| int32
|
angle_y
|
|
| bool
|
defuser
|
|
| bool
|
player_has_defuser
|
|
| bool
|
player_has_c4
|
|
|
| Name:
|
ProcessSpottedEntityUpdate
|
| Structure:
|
| bool
|
new_update
|
|
| repeated ProcessSpottedEntityUpdate.SpottedEntityUpdate
|
entity_updates
|
|
|
SendPlayerItemDrops
| Name:
|
SendPlayerItemDrops
|
| Structure:
|
| repeated ?
|
entity_updates
|
|
|
SendPlayerItemFound
| Name:
|
SendPlayerItemFound
|
| Structure:
|
| ?
|
iteminfo
|
|
| int32
|
entindex
|
|
|
RetakeUpdatePlayerCardList
| Name:
|
RetakeUpdatePlayerCardList
|
| Structure:
|
| bool
|
defuse_kit
|
|
| repeated int32
|
round_idx
|
|
| repeated int32
|
loadout_idx
|
|
| repeated int32
|
card_idx
|
|
| repeated int32
|
type_idx
|
|
| int32
|
mvp_boost_round_idx
|
|
| int32
|
mvp_boost_loadout_idx
|
|
| int32
|
mvp_boost_card_idx
|
|
| int32
|
mvp_boost_extra_utility
|
|
|
RetakeUpdatePlayerCardSelection
| Name:
|
RetakeUpdatePlayerCardSelection
|
| Structure:
|
| int32
|
round_idx
|
|
| int32
|
loadout_idx
|
|
| int32
|
card_idx
|
|
| int32
|
type_idx
|
|
|
ReloadEffect
| Name:
|
ReloadEffect
|
| Structure:
|
| int32
|
entidx
|
|
| int32
|
actanim
|
|
| float
|
origin_x
|
|
| float
|
origin_y
|
|
| float
|
origin_z
|
|
|
WeaponSound
| Name:
|
WeaponSound
|
| Structure:
|
| int32
|
entidx
|
|
| float
|
origin_x
|
|
| float
|
origin_y
|
|
| float
|
origin_z
|
|
| string
|
sound
|
|
| float
|
timestamp
|
|
|
UpdateScreenHealthBar
| Name:
|
UpdateScreenHealthBar
|
| Structure:
|
| int32
|
entidx
|
|
| float
|
healthratio_old
|
|
| float
|
healthratio_new
|
|
| int32
|
style
|
|
|
EntityOutlineHighlight
| Name:
|
EntityOutlineHighlight
|
| Structure:
|
| int32
|
entidx
|
|
| bool
|
removehighlight
|
|
|
AdjustMoney
| Name:
|
AdjustMoney
|
| Structure:
|
|
ReportHit
| Name:
|
ReportHit
|
| Structure:
|
| float
|
pos_x
|
|
| float
|
pos_y
|
|
| float
|
pos_z
|
|
| float
|
timestamp
|
|
|
KillCam
| Name:
|
KillCam
|
| Structure:
|
| int32
|
obs_mode
|
|
| int32
|
first_target
|
|
| int32
|
second_target
|
|
|
DesiredTimescale
| Name:
|
DesiredTimescale
|
| Structure:
|
| float
|
desired_timescale
|
|
| float
|
duration_realtime_sec
|
|
| int32
|
interpolator_type
|
|
| float
|
start_blend_time
|
|
|
CurrentTimescale
| Name:
|
CurrentTimescale
|
| Structure:
|
|
AchievementEvent
| Name:
|
AchievementEvent
|
| Structure:
|
| int32
|
achievement
|
|
| int32
|
count
|
|
| int32
|
user_id
|
|
|
MatchEndConditions
| Name:
|
MatchEndConditions
|
| Structure:
|
| int32
|
fraglimit
|
|
| int32
|
mp_maxrounds
|
|
| int32
|
mp_winlimit
|
|
| int32
|
mp_timelimit
|
|
|
PlayerStatsUpdate
| Name:
|
PlayerStatsUpdate.Stat
|
| Structure:
|
|
| Name:
|
PlayerStatsUpdate
|
| Structure:
|
| int32
|
version
|
|
| repeated PlayerStatsUpdate.Stat
|
stats
|
|
| int32
|
user_id
|
|
| int32
|
crc
|
|
|
DisplayInventory
| Name:
|
DisplayInventory
|
| Structure:
|
| bool
|
display
|
|
| int32
|
user_id
|
|
|
QuestProgress
| Name:
|
QuestProgress
|
| Structure:
|
| uint32
|
quest_id
|
|
| uint32
|
normal_points
|
|
| uint32
|
bonus_points
|
|
| bool
|
is_event_quest
|
|
|
ScoreLeaderboardData
| Name:
|
ScoreLeaderboardData
|
| Structure:
|
|
PlayerDecalDigitalSignature
| Name:
|
PlayerDecalDigitalSignature
|
| Structure:
|
|
XRankGet
Note: Get ELO Rank Value from Client
| Name:
|
XRankGet
|
| Structure:
|
| int32
|
mode_idx
|
|
| int32
|
controller
|
|
|
XRankUpd
Note: Update ELO Rank Value on Client
| Name:
|
XRankUpd
|
| Structure:
|
| int32
|
mode_idx
|
|
| int32
|
controller
|
|
| int32
|
ranking
|
|
|
CallVoteFailed
| Name:
|
CallVoteFailed
|
| Structure:
|
|
VoteStart
| Name:
|
VoteStart
|
| Structure:
|
| int32
|
team
|
|
| int32
|
ent_idx
|
|
| int32
|
vote_type
|
|
| string
|
disp_str
|
|
| string
|
details_str
|
|
| string
|
other_team_str
|
|
| bool
|
is_yes_no_vote
|
|
| int32
|
entidx_target
|
|
|
VotePass
| Name:
|
VotePass
|
| Structure:
|
| int32
|
team
|
|
| int32
|
vote_type
|
|
| string
|
disp_str
|
|
| string
|
details_str
|
|
|
VoteFailed
| Name:
|
VoteFailed
|
| Structure:
|
|
VoteSetup
| Name:
|
VoteSetup
|
| Structure:
|
| repeated string
|
potential_issues
|
|
|
SendLastKillerDamageToClient
| Name:
|
SendLastKillerDamageToClient
|
| Structure:
|
| int32
|
num_hits_given
|
|
| int32
|
damage_given
|
|
| int32
|
num_hits_taken
|
|
| int32
|
damage_taken
|
|
|
ServerRankUpdate
| Name:
|
ServerRankUpdate.RankUpdate
|
| Structure:
|
| int32
|
account_id
|
|
| int32
|
rank_old
|
|
| int32
|
rank_new
|
|
| int32
|
num_wins
|
|
| float
|
rank_change
|
|
| int32
|
rank_type_id
|
|
|
| Name:
|
ServerRankUpdate
|
| Structure:
|
| repeated ServerRankUpdate.RankUpdate
|
rank_update
|
|
|
XpUpdate
| Name:
|
XpUpdate
|
| Structure:
|
|
ItemPickup
| Name:
|
ItemPickup
|
| Structure:
|
|
Note: show hud menu
| Name:
|
ShowMenu
|
| Structure:
|
| int32
|
bits_valid_slots
|
|
| int32
|
display_time
|
|
| string
|
menu_string
|
|
|
BarTime
Note: For the C4 progress bar
AmmoDenied
| Name:
|
AmmoDenied
|
| Structure:
|
|
MarkAchievement
| Name:
|
MarkAchievement
|
| Structure:
|
|
MatchStatsUpdate
| Name:
|
MatchStatsUpdate
|
| Structure:
|
|
ItemDrop
| Name:
|
ItemDrop
|
| Structure:
|
|
GlowPropTurnOff
| Name:
|
GlowPropTurnOff
|
| Structure:
|
|
RoundBackupFilenames
| Name:
|
RoundBackupFilenames
|
| Structure:
|
| int32
|
count
|
|
| int32
|
index
|
|
| string
|
filename
|
|
| string
|
nicename
|
|
|
SSUI
| Name:
|
SSUI
|
| Structure:
|
| bool
|
show
|
|
| float
|
start_time
|
|
| float
|
end_time
|
|
|
SurvivalStats
| Name:
|
SurvivalStats.Fact
|
| Structure:
|
| int32
|
type
|
|
| int32
|
display
|
|
| int32
|
value
|
|
| float
|
interestingness
|
|
|
| Name:
|
SurvivalStats.Placement
|
| Structure:
|
| uint64
|
xuid
|
|
| int32
|
teamnumber
|
|
| int32
|
placement
|
|
|
| Name:
|
SurvivalStats.Damage
|
| Structure:
|
| uint64
|
xuid
|
|
| int32
|
to
|
|
| int32
|
to_hits
|
|
| int32
|
from
|
|
| int32
|
from_hits
|
|
|
| Name:
|
SurvivalStats
|
| Structure:
|
| uint64
|
xuid
|
|
| repeated SurvivalStats.Fact
|
facts
|
|
| repeated SurvivalStats.Placement
|
users
|
|
| repeated SurvivalStats.Damage
|
damages
|
|
| int32
|
ticknumber
|
|
|
EndOfMatchAllPlayersData
| Name:
|
EndOfMatchAllPlayersData.Accolade
|
| Structure:
|
| int32
|
eaccolade
|
|
| float
|
value
|
|
| int32
|
position
|
|
|
| Name:
|
EndOfMatchAllPlayersData.PlayerData
|
| Structure:
|
| int32
|
entindex
|
|
| uint64
|
xuid
|
|
| string
|
name
|
|
| int32
|
teamnumber
|
|
| EndOfMatchAllPlayersData.Accolade
|
nomination
|
|
| repeated ?
|
items
|
|
| int32
|
playercolor
|
|
| bool
|
isbot
|
|
|
| Name:
|
EndOfMatchAllPlayersData
|
| Structure:
|
| repeated EndOfMatchAllPlayersData.PlayerData
|
allplayerdata
|
|
| int32
|
scene
|
|
|
RoundImpactScoreData
| Name:
|
RoundImpactScoreData.RisEvent.Victim
|
| Structure:
|
| int32
|
team_number
|
|
| int32
|
entindex
|
|
| uint64
|
xuid
|
|
| int32
|
color
|
|
| bool
|
is_bot
|
|
| bool
|
is_dead
|
|
|
| Name:
|
RoundImpactScoreData.RisEvent.Objective
|
| Structure:
|
|
| Name:
|
RoundImpactScoreData.RisEvent.Damage
|
| Structure:
|
| int32
|
target_entindex
|
|
| uint64
|
target_xuid
|
|
| int32
|
health_removed
|
|
| int32
|
num_hits
|
|
| int32
|
return_health_removed
|
|
| int32
|
num_return_hits
|
|
|
| Name:
|
RoundImpactScoreData.RisEvent
|
| Structure:
|
| float
|
timestamp
|
|
| int32
|
terrorist_odds
|
|
| int32
|
ct_alive
|
|
| int32
|
t_alive
|
|
| RoundImpactScoreData.RisEvent.Victim
|
victim_data
|
|
| RoundImpactScoreData.RisEvent.Objective
|
objective_data
|
|
| repeated RoundImpactScoreData.RisEvent.Damage
|
all_damage_data
|
|
|
| Name:
|
RoundImpactScoreData.InitialConditions
|
| Structure:
|
| int32
|
ct_equip_value
|
|
| int32
|
t_equip_value
|
|
| int32
|
terrorist_odds
|
|
|
| Name:
|
RoundImpactScoreData
|
| Structure:
|
| RoundImpactScoreData.InitialConditions
|
init_conditions
|
|
| repeated RoundImpactScoreData.RisEvent
|
all_ris_event_data
|
|
|
CurrentRoundOdds
| Name:
|
CurrentRoundOdds
|
| Structure:
|
|
DeepStats
| Name:
|
DeepStats
|
| Structure:
|
|
ResetHud
| Name:
|
ResetHud
|
| Structure:
|
|
GameTitle
| Name:
|
GameTitle
|
| Structure:
|
|
RequestState
| Name:
|
RequestState
|
| Structure:
|
|
StopSpectatorMode
| Name:
|
StopSpectatorMode
|
| Structure:
|
|
DisconnectToLobby
| Name:
|
DisconnectToLobby
|
| Structure:
|
|
WarmupHasEnded
| Name:
|
WarmupHasEnded
|
| Structure:
|
|
ClientInfo
| Name:
|
ClientInfo
|
| Structure:
|
|
ServerRankRevealAll
| Name:
|
ServerRankRevealAll
|
| Structure:
|
| int32
|
seconds_till_shutdown
|
|
| ?
|
reservation
|
|
|