This page documents the client-to-GC (Game Coordinator) message types defined in the Dota 2 protocol, with particular focus on the extensive result code enumerations used to communicate operation outcomes. These messages represent requests initiated by the Dota 2 client and the corresponding response codes that indicate success or various failure conditions.
For general protocol structure and message IDs, see Message Structure and IDs. For server-to-GC messages, see Server Messages. For GC SDK infrastructure messages, see GC SDK Messages.
Client messages are primarily defined in protocol/dota_gcmessages_client.pb.go, which contains the Protocol Buffer generated Go code for client-to-GC communication. This file includes both request/response message structures and result code enumerations. Additional specialized client messages are found in domain-specific files like protocol/dota_gcmessages_client_chat.pb.go.
Title: Client Message Source Organization
Sources: protocol/dota_gcmessages_client.pb.go1-57 protocol/dota_gcmessages_client_chat.pb.go1-113 protocol/dota_gcmessages_client.proto1-14
Result codes are enumerations that communicate the outcome of client-initiated operations. The client message protocol defines numerous result types, each tailored to specific operations.
The following table catalogs the major result code enumerations defined in the client message protocol:
| Enumeration | Purpose | Success Value | Failure Count | File Location |
|---|---|---|---|---|
EItemEditorReservationResult | Item editor reservation outcomes | k_EItemEditorReservationResult_OK (1) | 3 | protocol/dota_gcmessages_client.pb.go92-129 |
EDOTATriviaAnswerResult | Trivia answer submission results | k_EDOTATriviaAnswerResult_Success (0) | 5 | protocol/dota_gcmessages_client.pb.go170-202 |
CMsgGCToClientPrivateChatResponse_Result | Private chat operation results | SUCCESS (0) | 14 | protocol/dota_gcmessages_client_chat.pb.go19-89 |
CMsgDOTAJoinChatChannelResponse_Result | Chat channel join outcomes | JOIN_SUCCESS (0) | 18 | protocol/dota_gcmessages_client_chat.pb.go91-170 |
EPurchaseHeroRelicResult | Hero relic purchase outcomes | k_EPurchaseHeroRelicResult_Success (0) | 7 | protocol/dota_gcmessages_client.proto50-59 |
EDevEventRequestResult | Developer event request results | k_EDevEventRequestResult_Success (0) | 6 | protocol/dota_gcmessages_client.proto61-69 |
ESupportEventRequestResult | Support event request outcomes | k_ESupportEventRequestResult_Success (0) | 13 | protocol/dota_gcmessages_client.proto71-86 |
EUnderDraftResponse | Underdraft operation responses | k_eSuccess (1) | 11 | protocol/dota_gcmessages_client.proto88-101 |
Sources: protocol/dota_gcmessages_client.pb.go92-202 protocol/dota_gcmessages_client_chat.pb.go19-170 protocol/dota_gcmessages_client.proto27-110
Title: Mapping Logical Result Categories to Code Entities
Sources: protocol/dota_gcmessages_client.pb.go170-202 protocol/dota_gcmessages_client.proto41-110
The chat system uses specific result enumerations to handle channel joins and private chat management.
The CMsgDOTAJoinChatChannelResponse_Result enumeration covers the various reasons a join request might fail.
| Result Code | Value | Meaning |
|---|---|---|
JOIN_SUCCESS | 0 | Successfully joined the channel |
USER_IN_TOO_MANY_CHANNELS | 4 | Account has reached the channel limit |
CHANNEL_FULL | 6 | The requested channel is at capacity |
RATE_LIMIT_EXCEEDED | 5 | Too many join requests in a short period |
NEW_PLAYER_USER_BANNED | 18 | Account is restricted from joining new player chat |
Sources: protocol/dota_gcmessages_client_chat.pb.go91-170 protocol/dota_gcmessages_client_chat.proto150-170
Title: Private Chat Result Flow
Sources: protocol/dota_gcmessages_client_chat.pb.go19-89 protocol/dota_gcmessages_client_chat.proto27-43
The EDOTATriviaAnswerResult enumeration handles trivia answer submission in regular matches:
| Result Code | Value | Meaning |
|---|---|---|
k_EDOTATriviaAnswerResult_Success | 0 | Answer recorded successfully |
k_EDOTATriviaAnswerResult_InvalidQuestion | 1 | Question ID not recognized |
k_EDOTATriviaAnswerResult_QuestionLocked | 3 | Question no longer accepting answers |
k_EDOTATriviaAnswerResult_AlreadyAnswered | 4 | User already submitted answer |
Sources: protocol/dota_gcmessages_client.pb.go170-202 protocol/dota_gcmessages_client.proto41-48
The ESupportEventRequestResult enumeration provides extensive error handling for support event operations:
Title: Support Event Error Hierarchy
Sources: protocol/dota_gcmessages_client.proto71-86
The CMsgDOTAPopup_PopupID enumeration defines display messages shown to clients, covering approximately 80 distinct popup types.
| Popup ID | Value | Context |
|---|---|---|
NONE | -1 | No popup |
KICKED_FROM_LOBBY | 0 | Removed from lobby by host |
MATCHMAKING_DISABLED | 12 | Matchmaking temporarily unavailable |
CLIENT_OUT_OF_DATE | 32 | Game client needs update |
VAC_NOT_VERIFIED | 56 | VAC status not confirmed |
COMM_SCORE_TOO_LOW | 79 | Communication score below threshold |
Sources: protocol/dota_gcmessages_client.proto144-208
Client messages follow consistent structural patterns for request-response communication. For example, chat messages include nested structures for complex data:
CMsgDOTAChatMessage includes DiceRoll, TriviaAnswered, and ChatWheelMessage sub-messages protocol/dota_gcmessages_client_chat.proto71-140CMsgDOTAJoinChatChannelResponse includes a list of CMsgDOTAChatMember objects protocol/dota_gcmessages_client_chat.proto149-183Title: Generic Client-to-GC Request Flow
Sources: protocol/dota_gcmessages_client_chat.proto6-25 protocol/dota_gcmessages_client.proto118-127
The result code enumerations documented on this page are used throughout the generated client API methods. Each enumeration type is generated as a Go int32 type with associated helper methods.
Every result code enumeration includes the following generated methods:
Enum() *EnumType - Returns a pointer to the enum value protocol/dota_gcmessages_client.pb.go45-49String() string - Returns string representation protocol/dota_gcmessages_client.pb.go51-57Sources: protocol/dota_gcmessages_client.pb.go45-57 protocol/dota_gcmessages_client_chat.pb.go77-89
Refresh this wiki