Stormlikez

Почетный пользователь

Регистрация: 25.07.2014

Сообщения: 7594

Рейтинг: 8811

Stormlikez

Регистрация: 25.07.2014

Сообщения: 7594

Рейтинг: 8811

Хедшот68 сказал(а):

А как же ставки? 

 

Нажмите, чтобы раскрыть...

да чо ставки то? Я ставлю и мне руинят всегда дауны, так что придется именно в ранкеде ставки отрабатывать.

Хедшот68

Пользователь

Регистрация: 17.06.2014

Сообщения: 30746

Рейтинг: 17130

Хедшот68

Регистрация: 17.06.2014

Сообщения: 30746

Рейтинг: 17130

Stormlike- сказал(а):

да чо ставки то? Я ставлю и мне руинят всегда дауны, так что придется именно в ранкеде ставки отрабатывать.

Нажмите, чтобы раскрыть...

Там тоже могут заруинить

Stormlikez

Почетный пользователь

Регистрация: 25.07.2014

Сообщения: 7594

Рейтинг: 8811

Stormlikez

Регистрация: 25.07.2014

Сообщения: 7594

Рейтинг: 8811

Хедшот68 сказал(а):

Там тоже могут заруинить

Нажмите, чтобы раскрыть...

кек ну пусть руинят, главное, чтоб не меня репортили в случае чего

Задоначу до 615 и буду чилофлэксить.

agrail-PiRat

Пользователь

Регистрация: 05.04.2013

Сообщения: 12918

Рейтинг: 9175

agrail-PiRat

Регистрация: 05.04.2013

Сообщения: 12918

Рейтинг: 9175

123 лвл, абузнул где-то 20 лвлов, до этого все компендосы абузил через пати, было пофиг как-то на эти темки с нытьём про бан, т.к не верю местным вбросерам и школоте, но щас челик скинул ответ саппорта по поводу бана за абуз, скрину верю, поэтому перестану абузить

Хедшот68

Пользователь

Регистрация: 17.06.2014

Сообщения: 30746

Рейтинг: 17130

Хедшот68

Регистрация: 17.06.2014

Сообщения: 30746

Рейтинг: 17130

Stormlike- сказал(а):

кек ну пусть руинят, главное, чтоб не меня репортили в случае чего

 

Задоначу до 615 и буду чилофлэксить.

Нажмите, чтобы раскрыть...

Так ты не будешь абузить? NotLikeThis.png

AgraiL-Pirat сказал(а):

123 лвл, абузнул где-то 20 лвлов, до этого все компендосы абузил через пати, было пофиг как-то на эти темки с нытьём про бан, т.к не верю местным вбросерам и школоте, но щас челик скинул ответ саппорта по поводу бана за абуз, скрину верю, поэтому перестану абузить

Нажмите, чтобы раскрыть...

Что? Кинь ссылку!!roflanPominki.pngну на тему с ответом 

Stormlikez

Почетный пользователь

Регистрация: 25.07.2014

Сообщения: 7594

Рейтинг: 8811

Stormlikez

Регистрация: 25.07.2014

Сообщения: 7594

Рейтинг: 8811

Хедшот68 сказал(а):

Так ты не будешь абузить? NotLikeThis.png

Нажмите, чтобы раскрыть...

я не хочу бан на свой мейн, зачем. Да и абузить это для даунов, мне приятнее в соло.

agrail-PiRat

Пользователь

Регистрация: 05.04.2013

Сообщения: 12918

Рейтинг: 9175

agrail-PiRat

Регистрация: 05.04.2013

Сообщения: 12918

Рейтинг: 9175

Хедшот68 сказал(а):

Так ты не будешь абузить? NotLikeThis.png

 

Что? Кинь ссылку!!roflanPominki.pngну на тему с ответом 

Нажмите, чтобы раскрыть...

https://dota2.ru/forum/threads/ban-za-abuz-battle-pass.1279037/page-5#post-21765630

Мягкий Енотик

Пользователь

Регистрация: 24.07.2013

Сообщения: 55495

Рейтинг: 31190

Мягкий Енотик

Регистрация: 24.07.2013

Сообщения: 55495

Рейтинг: 31190

проабузил 2 круга с золотом на прошлой неделе

пока думаю, есть ли смысл рисковать по 2 круга в неделю ради недельных фишуль FeelsCoffeeMan.png?1552738457

 

до 9 сентября осталось 17 недель

 

по 1000 в неделю (после 120 лвла там по 1500 давать будут), то есть 17000(+500 в неделю после 120) фишек, абузный профит составит ~34-40 лвл.

 

если ставить в обычных играх, то, скажем, половину будешь выигрывать, возьмем даже меньше половины, честные ставки 15-17 лвлов

 

стоит ли рисковать ради 20-25 уровней (~700 рублей)? dankpepe.png

Хедшот68

Пользователь

Регистрация: 17.06.2014

Сообщения: 30746

Рейтинг: 17130

Хедшот68

Регистрация: 17.06.2014

Сообщения: 30746

Рейтинг: 17130

Stormlike- сказал(а):

я не хочу бан на свой мейн, зачем. Да и абузить это для даунов, мне приятнее в соло.

Нажмите, чтобы раскрыть...

А зачем ты в этой теме пишешь?? CoolStoryBob.png

Ищу Лолеров

Пользователь

Регистрация: 19.06.2018

Сообщения: 2689

Рейтинг: 1047

Нарушения: 100

Ищу Лолеров

Регистрация: 19.06.2018

Сообщения: 2689

Рейтинг: 1047

Нарушения: 100

Stormlike- сказал(а):

1 лвл апнул за 3 дня. Я считаю это успех roflanBuldiga.png

Нажмите, чтобы раскрыть...

бан инкомингroflanPominki.png

Хедшот68

Пользователь

Регистрация: 17.06.2014

Сообщения: 30746

Рейтинг: 17130

Хедшот68

Регистрация: 17.06.2014

Сообщения: 30746

Рейтинг: 17130

AgraiL-Pirat сказал(а):
Нажмите, чтобы раскрыть...

Это ответ на абуз д+, это разные абузы, и за абуз д+ почти всех наказали. При чем тут это? Ты меня обманул. 

FireFly5

Пользователь

Регистрация: 29.04.2019

Сообщения: 190

Рейтинг: -127

Нарушения: 130

FireFly5

Регистрация: 29.04.2019

Сообщения: 190

Рейтинг: -127

Нарушения: 130

Абузил бы и дальше если бы не поймал бан на 1 годroflanPominki.png больше никогда не куплю компед CoolNut.png  играю онли Авточес теперь 

Хедшот68

Пользователь

Регистрация: 17.06.2014

Сообщения: 30746

Рейтинг: 17130

Хедшот68

Регистрация: 17.06.2014

Сообщения: 30746

Рейтинг: 17130

AgraiL-Pirat сказал(а):
Нажмите, чтобы раскрыть...

Извинись за обман

Мягкий Енотик сказал(а):

проабузил 2 круга с золотом на прошлой неделе

пока думаю, есть ли смысл рисковать по 2 круга в неделю ради недельных фишуль FeelsCoffeeMan.png?1552738457

 

до 9 сентября осталось 17 недель

 

по 1000 в неделю (после 120 лвла там по 1500 давать будут), то есть 17000(+500 в неделю после 120) фишек, абузный профит составит ~34-40 лвл.

 

если ставить в обычных играх, то, скажем, половину будешь выигрывать, возьмем даже меньше половины, честные ставки 15-17 лвлов

 

стоит ли рисковать ради 20-25 уровней (~700 рублей)? dankpepe.png

Нажмите, чтобы раскрыть...

А дают ли баны? Темы заглохли, а абузеров куча

agrail-PiRat

Пользователь

Регистрация: 05.04.2013

Сообщения: 12918

Рейтинг: 9175

agrail-PiRat

Регистрация: 05.04.2013

Сообщения: 12918

Рейтинг: 9175

Хедшот68 сказал(а):

Это ответ на абуз д+, это разные абузы, и за абуз д+ почти всех наказали. При чем тут это? Ты меня обманул. 

Нажмите, чтобы раскрыть...

разные абузы.. а компендиум обьектив в ответе ты не заметил?да и для валв нет разницы между дота + и компендиум опять же исходя из их ответа

Хедшот68

Пользователь

Регистрация: 17.06.2014

Сообщения: 30746

Рейтинг: 17130

Хедшот68

Регистрация: 17.06.2014

Сообщения: 30746

Рейтинг: 17130

FireFly5 сказал(а):

Абузил бы и дальше если бы не поймал бан на 1 годroflanPominki.png больше никогда не куплю компед CoolNut.png  играю онли Авточес теперь 

Нажмите, чтобы раскрыть...

А пруфы? И что именоо за абуз? И темы от тебя не видел

AgraiL-Pirat сказал(а):

разные абузы.. а компендиум обьектив в ответе ты не заметил?да и для валв нет разницы между дота + и компендиум опять же исходя из их ответа

Нажмите, чтобы раскрыть...

Компендиум объектив это как абуз рулетки, если ты не понял

Мягкий Енотик

Пользователь

Регистрация: 24.07.2013

Сообщения: 55495

Рейтинг: 31190

Мягкий Енотик

Регистрация: 24.07.2013

Сообщения: 55495

Рейтинг: 31190

Хедшот68 сказал(а):

А дают ли баны? Темы заглохли, а абузеров куча

Нажмите, чтобы раскрыть...

хз. но вот я изучил голд фишки и сейчас недельные посчитал, и смысла рисковать не вижу, как минимум пару недель надо посмотреть за ситуацией. по сути 3 дня прошло с начала этой истерии, рано делать выводы

Хедшот68

Пользователь

Регистрация: 17.06.2014

Сообщения: 30746

Рейтинг: 17130

Хедшот68

Регистрация: 17.06.2014

Сообщения: 30746

Рейтинг: 17130

Мягкий Енотик сказал(а):

хз. но вот я изучил голд фишки и сейчас недельные посчитал, и смысла рисковать не вижу, как минимум пару недель надо посмотреть за ситуацией. по сути 3 дня прошло с начала этой истерии, рано делать выводы

Нажмите, чтобы раскрыть...

Я тоже буду ждать, да и вообще мне карту бы на 160 взять, остальные шмотки не нужны, не играю на них. Пока тоже не буду абузить эххх. 

Roofio228

Пользователь

Регистрация: 13.07.2014

Сообщения: 1564

Рейтинг: 1069

Roofio228

Регистрация: 13.07.2014

Сообщения: 1564

Рейтинг: 1069

Хедшот68 сказал(а):

Тебе не кажется что лучше не менять айпишники по кд? Это по моему как раз таки очень много сомнений наведет, лучше гонять со своими родным айпишником и все. А так знаешь будто ты с разных компов заходишь на акк, можно подумать, и вызывать сомнения. Да не на песок сомнения, но то что 1 аккаунт запускают то там то там, вдруг они не могут чекнуть железо, они же его чекают только с твоего согласия и все. 

Нажмите, чтобы раскрыть...

я абужу только фишки - это 4-6 игр в неделю. Не буду делать всё в один день. На джунгли мне уже всё равно. Думаю Валв таки чекают железо без твоего согласия. Всё дело в том что алгоритм который выдаёт баны, анализирует игры по опеределённым критериям

Хедшот68

Пользователь

Регистрация: 17.06.2014

Сообщения: 30746

Рейтинг: 17130

Хедшот68

Регистрация: 17.06.2014

Сообщения: 30746

Рейтинг: 17130

Roofio228 сказал(а):

я абужу только фишки - это 4-6 игр в неделю. Не буду делать всё в один день. На джунгли мне уже всё равно. Думаю Валв таки чекают железо без твоего согласия. Всё дело в том что алгоритм который выдаёт баны, анализирует игры по опеределённым критериям

Нажмите, чтобы раскрыть...

И что же за критерии? Хотя-бы примерно. Заметь что забанили каплю в море, при чем чисто нью акки. 

Roofio228

Пользователь

Регистрация: 13.07.2014

Сообщения: 1564

Рейтинг: 1069

Roofio228

Регистрация: 13.07.2014

Сообщения: 1564

Рейтинг: 1069

Хедшот68 сказал(а):

Я тоже буду ждать, да и вообще мне карту бы на 160 взять, остальные шмотки не нужны, не играю на них. Пока тоже не буду абузить эххх. 

Нажмите, чтобы раскрыть...

В директории доты есть файл server_log.txt - "\SteamApps\common\dota 2 beta\game\dota". Этот файл логгирует следующие данные - время запуска игры ид лобби, ид игроков доты в пати, режим игры и наверное ид игр.

 

Пример:

05/11/2019 - 19:46:09: =[A:1:3653891074:12510] (Lobby 26131046210328570 DOTA_GAMEMODE_ALL_DRAFT 0:[U:1:359307198] 1:[U:1:130771058] 2:[U:1:93384294] 3:[U:1:67715545] 4:[U:1:835276882] 5:[U:1:179492577] 6:[U:1:125533203] 7:[U:1:441967104] 8:[U:1:335268207] 9:[U:1:196677234]) (Party 26131046103926007 0:[U:1:359307198] 1:[U:1:130771058] 2:[U:1:93384294] 3:[U:1:67715545] 4:[U:1:835276882])

 

 

 

ИД лобби и идишники игроков в лобби - тут лобби уже в самой игре, когда все подключились

Lobby 26131046210328570 DOTA_GAMEMODE_ALL_DRAFT 0:[U:1:359307198] 1:[U:1:130771058] 2:[U:1:93384294] 3:[U:1:67715545] 4:[U:1:835276882] 5:[U:1:179492577] 6:[U:1:125533203] 7:[U:1:441967104] 8:[U:1:335268207] 9:[U:1:196677234])

 

 

Непосредственно пати с ИД когда искали игры

(Party 26131046103926007 0:[U:1:359307198] 1:[U:1:130771058] 2:[U:1:93384294] 3:[U:1:67715545] 4:[U:1:835276882])

 

Вот это я пока понять не могу

[A:1:3653891074:12510]

 

Как я себе представляю, данный файл скорее всего зеркально хранится у валв, а не только у тебя на машине. Возможно в твоём облаке, в возможно и нет. Возможно алгоритм и анализирует эту статистику.

 

Посмотри у себя этот файл файл и что он там хранит. У меня такой файл собирал данные с игр с апреля 2017 года.

 

 

Хедшот68 сказал(а):

И что же за критерии? Хотя-бы примерно. Заметь что забанили каплю в море, при чем чисто нью акки. 

Нажмите, чтобы раскрыть...

 

Нашел пост на реддите от чела, которого забанило после абуза дота+. Он приводит в пример обнаружение подозрительных действий в матчах

Спойлер: "тык"

 

import "steammessages.proto";

import "dota_shared_enums.proto";

import "dota_gcmessages_common.proto";

import "econ_gcmessages.proto";

import "network_connection.proto";

import "dota_gcmessages_common_match_management.proto";

option optimize_for = SPEED;

option cc_generic_services = false;

enum EPoorNetworkConditionsType {

k_EPoorNetworkConditions_None = 0;

k_EPoorNetworkConditions_Unknown = 1;

k_EPoorNetworkConditions_MassDisconnect = 2;

k_EPoorNetworkConditions_ExcessBadQosIntervals = 3;

}

enum EAbilityAbuseType {

k_EAbilityAbuseType_None = 0;

k_EAbilityAbuseType_Io_Relocate = 1;

k_EAbilityAbuseType_Chen_Test_Of_Faith = 2;

k_EAbilityAbuseType_Bane_Nightmare = 3;

k_EAbilityAbuseType_Bloodseeker_Bloodrage = 4;

k_EAbilityAbuseType_Outworld_Astral_Imprisonment = 5;

k_EAbilityAbuseType_Shadow_Demon_Disruption = 6;

k_EAbilityAbuseType_Grimstroke_InkSwell = 7;

}

enum EIntentionalFeedingType {

k_EIntentionalFeedingType_None = 0;

k_EIntentionalFeedingType_ExcessiveDeaths = 1;

k_EIntentionalFeedingType_MultipleCourierPurchases = 2;

k_EIntentionalFeedingType_MultipleCourierDeaths = 4;

k_EIntentionalFeedingType_LowActivity = 8;

k_EIntentionalFeedingType_LowDamage = 16;

k_EIntentionalFeedingType_HighUnspentGold = 32;

k_EIntentionalFeedingType_SoldTooMuchItemValue = 64;

k_EIntentionalFeedingType_TooManyDroppedItems = 128;

k_EIntentionalFeedingType_ExcessiveTowerDamage = 256;

k_EIntentionalFeedingType_LastHitsDenies = 512;

k_EIntentionalFeedingType_XPPM = 1024;

k_EIntentionalFeedingType_SuspiciousOrders = 2048;

}

enum ESuspiciousActivity {

k_ESuspiciousActivity_VAC_MultipleInstances = 1;

k_ESuspiciousActivity_IntentionalFeeding = 100;

k_ESuspiciousActivity_SuspectedBotFarming = 101;

}

enum ESuspiciousBuildType {

k_ESuspiciousBuildType_None = 0;

k_ESuspiciousBuildType_NoGoldSpent = 1;

k_ESuspiciousBuildType_NoItems = 2;

k_ESuspiciousBuildType_NoSignificantItems = 3;

k_ESuspiciousBuildType_TooManyBoots = 4;

k_ESuspiciousBuildType_Bot1 = 101;

k_ESuspiciousBuildType_Bot2 = 102;

k_ESuspiciousBuildType_Bot3 = 103;

k_ESuspiciousBuildType_Bot4 = 104;

k_ESuspiciousBuildType_Bot5 = 105;

}

message CMsgPoorNetworkConditions {message Player {optional uint32 account_id = 1;optional .ENetworkDisconnectionReason disconnect_reason = 2 [default = NETWORK_DISCONNECT_INVALID];optional uint32 num_bad_intervals = 3;optional uint32 peak_loss_pct = 4;} optional .EPoorNetworkConditionsType detection_type = 1 [default = k_EPoorNetworkConditions_None];repeated .CMsgPoorNetworkConditions.Player players = 2;} message CMsgGameserverCrash {optional uint64 match_id = 1;optional fixed64 lobby_id = 2;optional .DOTA_GameState game_state = 3 [default = DOTA_GAMERULES_STATE_INIT];optional fixed32 sentinel_save_time = 4;optional fixed64 custom_game_id = 11;optional uint32 tournament_id = 12;optional fixed64 server_steam_id = 5;optional fixed32 server_public_ip_addr = 6;optional uint32 server_port = 7;optional uint32 server_cluster = 8;optional uint32 pid = 9;optional uint32 engine = 10;} message CMsgConnectedPlayers {message Player {optional fixed64 steam_id = 1;optional uint32 hero_id = 2;optional .CMsgLeaverState leaver_state = 3;optional .ENetworkDisconnectionReason disconnect_reason = 4 [default = NETWORK_DISCONNECT_INVALID];}

enum SendReason {

INVALID = 0;

HEARTBEAT = 1;

GAME_STATE = 2;

FIRST_BLOOD = 3;

PLAYER_CONNECTED = 4;

PLAYER_HERO = 5;

PLAYER_DISCONNECTED_CONSEQUENCES = 6;

PLAYER_DISCONNECTED_NOCONSEQUENCES = 7;

GAMESTATE_TIMEOUT = 10;

MASS_DISCONNECT = 11;

KILLS = 13;

BUILDING_STATE = 14;

}

repeated .CMsgConnectedPlayers.Player connected_players = 1;repeated .CMsgConnectedPlayers.Player disconnected_players = 7;optional .DOTA_GameState game_state = 2 [default = DOTA_GAMERULES_STATE_INIT];optional bool first_blood_happened = 6;optional bool legacy_mass_disconnect = 9;optional .CMsgPoorNetworkConditions poor_network_conditions = 10;optional .CMsgConnectedPlayers.SendReason send_reason = 8 [default = INVALID];optional uint32 radiant_kills = 11;optional uint32 dire_kills = 12;optional int32 radiant_lead = 14;optional uint32 building_state = 15;}

message CMsgGameServerInfo {

enum ServerType {

UNSPECIFIED = 0;

GAME = 1;

PROXY = 2;

TENSORFLOW = 3;

DOTA_ONLY = 4;

CUSTOM_GAME_ONLY = 5;

}

enum CustomGames {

BOTH = 0;

NONE = 1;

ONLY = 2;

}

optional fixed32 server_public_ip_addr = 1;optional fixed32 server_private_ip_addr = 2;optional uint32 server_port = 3;optional uint32 server_tv_port = 4;optional uint32 assigned_server_tv_port = 22;optional bytes legacy_server_steamdatagram_address = 27;optional string server_key = 5;optional bool server_hibernation = 6;optional .CMsgGameServerInfo.ServerType server_type = 7 [default = UNSPECIFIED];optional uint32 server_region = 8;optional float server_loadavg = 9;optional float server_tv_broadcast_time = 10;optional float server_game_time = 11;optional fixed64 server_relay_connected_steam_id = 12;optional uint32 relay_slots_max = 13;optional int32 relays_connected = 14;optional int32 relay_clients_connected = 15;optional fixed64 relayed_game_server_steam_id = 16;optional uint32 parent_relay_count = 17;optional fixed64 tv_secret_code = 18;optional uint32 server_version = 19;optional uint32 server_cluster = 20;optional .CMsgGameServerInfo.CustomGames allow_custom_games = 23 [default = BOTH];optional uint32 build_version = 24;optional uint32 tf_server_count = 25;optional uint32 srcds_instance = 26;} message CMsgLeaverDetected {optional fixed64 steam_id = 1;optional .DOTALeaverStatus_t leaver_status = 2 [default = DOTA_LEAVER_NONE];optional .CMsgLeaverState leaver_state = 4;optional uint32 server_cluster = 5;optional .ENetworkDisconnectionReason disconnect_reason = 6 [default = NETWORK_DISCONNECT_INVALID];optional .CMsgPoorNetworkConditions poor_network_conditions = 7;}

message CMsgLeaverDetectedResponse {

optional uint32 result = 1;

}

message CMsgDOTAFantasyFinalPlayerStats {

repeated .CMsgDOTAFantasyPlayerStats stats = 2;

}

message CMsgDOTAFantasyLivePlayerStats {

repeated .CMsgDOTAFantasyPlayerStats stats = 2;

}

message CMsgDOTAFantasyMatch {

optional uint64 match_id = 1;

optional uint32 league_id = 2;

optional uint32 series_id = 3;

optional uint32 start_time = 4;

optional uint32 series_type = 5;

optional uint32 team_1 = 6;

optional uint32 team_2 = 7;

}

message CMsgDOTAUpdateClippy {

repeated uint32 good_team_hero_ids = 1;

repeated uint32 bad_team_hero_ids = 2;

}

message CMsgServerToGCRealtimeStats {

optional .CMsgDOTARealtimeGameStatsTerse delayed = 1;

}

message CMsgGCToServerRealtimeStatsStartStop {

optional bool delayed = 1;

}

message CMsgGCToServerUpdateSteamBroadcasting {

optional bool active = 1;

}

message CMsgGameMatchSignOut {

message CTeam {

message CPlayer {

message CCustomGameData {

optional uint32 dota_team = 1;

optional bool winner = 2;

}

message HeroDamageReceived {optional uint32 pre_reduction = 1;optional uint32 post_reduction = 2;optional .CMsgGameMatchSignOut.CTeam.CPlayer.HeroDamageType damage_type = 3 [default = HERO_DAMAGE_PHYSICAL];}

enum HeroDamageType {

HERO_DAMAGE_PHYSICAL = 0;

HERO_DAMAGE_MAGICAL = 1;

HERO_DAMAGE_PURE = 2;

}

optional fixed64 steam_id = 1;

optional uint32 hero_id = 3;

repeated uint32 items = 4;

optional uint32 gold = 5;

optional uint32 kills = 6;

optional uint32 deaths = 7;

optional uint32 assists = 8;

optional uint32 leaver_status = 9;

optional uint32 last_hits = 10;

optional uint32 denies = 11;

optional uint32 gold_per_min = 12;

optional uint32 xp_per_minute = 13;

optional uint32 gold_spent = 14;

optional uint32 level = 15;

optional uint32 scaled_hero_damage = 16;

optional uint32 scaled_tower_damage = 17;

optional uint32 scaled_hero_healing = 18;

optional uint32 time_last_seen = 19;

optional uint32 support_ability_value = 20;

optional uint64 party_id = 21;

optional float scaled_kills = 24;

optional float scaled_deaths = 25;

optional float scaled_assists = 26;

optional uint32 claimed_farm_gold = 27;

optional uint32 support_gold = 28;

optional uint32 claimed_denies = 29;

optional uint32 claimed_misses = 30;

optional uint32 misses = 31;

optional uint32 net_worth = 34;

optional uint32 hero_damage = 37;

optional uint32 tower_damage = 38;

optional uint32 hero_healing = 39;

repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 32;

repeated .CMatchAdditionalUnitInventory additional_units_inventory = 33;

repeated .CMatchPlayerPermanentBuff permanent_buffs = 40;

optional .CMsgGameMatchSignOut.CTeam.CPlayer.CCustomGameData custom_game_data = 35;

optional uint32 match_player_flags = 36;

repeated uint32 talent_ability_ids = 41;

optional uint32 hero_pick_order = 42;

optional bool hero_was_randomed = 43;

optional bool hero_was_dota_plus_suggestion = 50;

optional uint32 lane = 45;

repeated .CMatchPlayerTimedStats timed_stats = 46;

optional bool is_using_plus_guide = 47;

repeated .CMsgGameMatchSignOut.CTeam.CPlayer.HeroDamageReceived hero_damage_received = 48;

optional uint32 seconds_dead = 51;

optional uint32 gold_lost_to_death = 52;

}

repeated .CMsgGameMatchSignOut.CTeam.CPlayer players = 1;

}

message CAdditionalSignoutMsg {

optional uint32 id = 1;

optional bytes contents = 2;

}

message CSocialFeedMatchEvent {

optional uint32 account_id = 1;

optional uint32 timestamp = 2;

optional uint32 event_type = 3;

optional int32 game_time = 4;

optional uint32 replay_time = 5;

}

message CCustomGameData {

optional uint32 publish_timestamp = 1;

}

message EventGameLeaderboardEntry {

optional string name_suffix = 1;

optional int32 score = 2;

optional uint32 extra_data_1 = 3;

optional uint32 extra_data_2 = 4;

optional uint32 extra_data_3 = 5;

optional uint32 extra_data_4 = 6;

optional uint32 extra_data_5 = 7;

}

message WardPlacement {

optional uint32 player_id = 1;

optional uint32 team_id = 2;

optional uint32 placed_time = 3;

optional uint32 building_state = 4;

optional uint32 creep_state = 5;

optional bool roshan_alive = 6;

optional uint32 position_x = 7;

optional uint32 position_y = 8;

}

optional uint64 match_id = 1 [(key_field) = true];optional uint32 duration = 2;optional bool good_guys_win = 3;optional fixed32 date = 4;repeated uint32 num_players = 5;repeated .CMsgGameMatchSignOut.CTeam teams = 6;repeated uint32 tower_status = 8;repeated uint32 barracks_status = 9;optional uint32 cluster = 10;optional string server_addr = 11;optional uint32 first_blood_time = 12;optional float game_balance = 13;optional uint32 event_score = 14;repeated .CMatchHeroSelectEvent picks_bans = 15;repeated .CMsgDOTAFantasyPlayerStats fantasy_stats = 41;repeated .CMsgEconPlayerStrangeCountAdjustment player_strange_count_adjustments = 17;optional bool automatic_surrender = 18;optional uint32 server_version = 19;optional bool legacy_mass_disconnect = 21;optional .CMsgPoorNetworkConditions poor_network_conditions = 35;repeated .CMsgGameMatchSignOut.CAdditionalSignoutMsg additional_msgs = 20;repeated .CMsgGameMatchSignOut.CSocialFeedMatchEvent social_feed_events = 36;optional sint32 average_networth_delta = 22;optional sint32 networth_delta_min10 = 23;optional sint32 networth_delta_min20 = 24;optional sint32 maximum_losing_networth_lead = 25;optional sint32 average_experience_delta = 26;optional sint32 experience_delta_min10 = 27;optional sint32 experience_delta_min20 = 28;optional sint32 bonus_gold_winner_min10 = 29;optional sint32 bonus_gold_winner_min20 = 30;optional uint32 bonus_gold_winner_total = 31;optional sint32 bonus_gold_loser_min10 = 32;optional sint32 bonus_gold_loser_min20 = 33;optional uint32 bonus_gold_loser_total = 34;optional .CMsgGameMatchSignOut.CCustomGameData custom_game_data = 37;optional uint32 match_flags = 38;repeated uint32 team_scores = 39;optional uint32 pre_game_duration = 40;repeated .CMsgGameMatchSignOut.EventGameLeaderboardEntry event_game_leaderboard_entries = 42;repeated .CMsgGameMatchSignOut.WardPlacement ward_placements = 43;optional uint32 bounty_rune_gold_winners = 44;optional uint32 bounty_rune_gold_losers = 45;optional uint32 range_creep_upgrade_gold_winners = 46;optional uint32 range_creep_upgrade_gold_losers = 47;}

message CMsgSignOutDraftInfo {

optional uint32 radiant_captain_account_id = 1;

optional uint32 dire_captain_account_id = 2;

repeated .CMatchHeroSelectEvent picks_bans = 3;

}

message CMsgSignOutBotInfo {optional bool allow_cheats = 1;optional .DOTABotDifficulty bot_difficulty_radiant = 2 [default = BOT_DIFFICULTY_PASSIVE];optional bool created_lobby = 3;optional .DOTABotDifficulty bot_difficulty_dire = 5 [default = BOT_DIFFICULTY_PASSIVE];}

message CMsgSignOutPlayerStats {

optional int32 account_id = 1;

optional uint64 match_id = 2;

optional uint32 rank = 3;

optional uint32 hero_id = 4;

optional uint32 rampages = 5;

optional uint32 triple_kills = 6;

optional uint32 first_blood_claimed = 7;

optional uint32 first_blood_given = 8;

optional uint32 couriers_killed = 9;

optional uint32 aegises_snatched = 10;

optional uint32 cheeses_eaten = 11;

optional uint32 creeps_stacked = 12;

optional float fight_score = 13;

optional float farm_score = 14;

optional float support_score = 15;

optional float push_score = 16;

optional uint32 kills = 17;

optional uint32 deaths = 18;

optional uint32 assists = 19;

optional uint32 last_hits = 20;

optional uint32 denies = 21;

optional float gpm = 22;

optional float xppm = 23;

optional float net_worth = 24;

optional float damage = 25;

optional float heals = 26;

optional uint32 rapiers_purchased = 27;

optional uint32 observer_wards_placed = 28;

optional uint32 wards_destroyed = 29;

}

message CMsgSignOutCommunicationSummary {

message PlayerCommunication {

optional uint32 account_id = 1;

optional uint32 pings = 2;

optional uint32 max_pings_per_interval = 3;

optional uint32 teammate_pings = 4;

optional uint32 max_teammate_pings_per_interval = 5;

optional uint32 team_chat_messages = 6;

optional uint32 all_chat_messages = 7;

optional uint32 chat_wheel_messages = 8;

optional uint32 pauses = 9;

optional uint32 unpauses = 10;

optional uint32 lines_drawn = 11;

optional uint32 voice_chat_seconds = 12;

optional uint32 chat_mutes = 13;

optional uint32 voice_mutes = 14;

}

repeated .CMsgSignOutCommunicationSummary.PlayerCommunication players = 1;

}

message CMsgGameMatchSignoutResponse {

message PlayerMetadata {

optional uint32 hero_id = 1;

optional uint32 avg_kills_x16 = 2;

optional uint32 avg_deaths_x16 = 3;

optional uint32 avg_assists_x16 = 4;

optional uint32 avg_gpm_x16 = 5;

optional uint32 avg_xpm_x16 = 6;

optional uint32 best_kills_x16 = 7;

optional uint32 best_assists_x16 = 8;

optional uint32 best_gpm_x16 = 9;

optional uint32 best_xpm_x16 = 10;

optional uint32 win_streak = 11;

optional uint32 best_win_streak = 12;

optional uint32 games_played = 13;

}

optional uint64 match_id = 1;

optional fixed32 replay_salt = 2;

repeated .CLobbyTimedRewardDetails timed_reward_details = 3;

repeated .CDOTALobbyMember xp_reward_details = 4;

optional uint32 leagueid = 5;

optional fixed32 metadata_private_key = 7;

optional .CMsgDOTAMatch match_details = 8;

repeated .CMsgGameMatchSignoutResponse.PlayerMetadata players_metadata = 9;

}

message CMsgTimedRewardContainer {

repeated .CLobbyTimedRewardDetails timed_reward_details = 1;

}

message CMsgGameMatchSignOutPermissionRequest {

optional uint32 server_version = 1;

optional uint32 local_attempt = 2;

optional uint32 total_attempt = 3;

optional uint32 seconds_waited = 4;

}

message CMsgGameMatchSignOutPermissionResponse {optional bool permission_granted = 1 [default = false];optional bool abandon_signout = 2 [default = false];optional uint32 retry_delay_seconds = 3 [default = 0];} message CMsgGameMatchSignOutEventGameData {optional .EEvent event_id = 1 [default = EVENT_ID_NONE];optional string game_name = 2;optional string map_name = 3;optional bytes event_game_data = 4;optional uint32 start_time = 5;}

message CMsgDOTALiveScoreboardUpdate {

message Team {

message Player {

message HeroAbility {

optional uint32 ability_id = 1;

optional uint32 ability_level = 2;

}

enum DOTAUltimateState {

k_EDOTAUltimateStateNotLearned = 0;

k_EDOTAUltimateStateCooldown = 1;

k_EDOTAUltimateStateNeedsMana = 2;

k_EDOTAUltimateStateReady = 3;

}

optional uint32 player_slot = 1;optional string player_name = 2;optional string hero_name = 3;optional uint32 hero_id = 4;optional uint32 kills = 5;optional uint32 deaths = 6;optional uint32 assists = 7;optional uint32 last_hits = 8;optional uint32 denies = 9;optional uint32 gold = 10;optional uint32 level = 11;optional float gold_per_min = 12;optional float xp_per_min = 13;optional .CMsgDOTALiveScoreboardUpdate.Team.Player.DOTAUltimateState ultimate_state = 14 [default = k_EDOTAUltimateStateNotLearned];optional float ultimate_cooldown = 15;optional uint32 item0 = 16;optional uint32 item1 = 17;optional uint32 item2 = 18;optional uint32 item3 = 19;optional uint32 item4 = 20;optional uint32 item5 = 21;optional uint32 respawn_timer = 22;optional uint32 account_id = 23;optional float position_x = 24;optional float position_y = 25;optional uint32 net_worth = 26;repeated .CMsgDOTALiveScoreboardUpdate.Team.Player.HeroAbility abilities = 27;}

repeated .CMsgDOTALiveScoreboardUpdate.Team.Player players = 1;

optional uint32 score = 2;

optional uint32 tower_state = 3;

optional uint32 barracks_state = 4;

repeated uint32 hero_picks = 5;

repeated uint32 hero_bans = 6;

}

optional uint32 tournament_id = 1;

optional uint32 tournament_game_id = 2;

optional float duration = 3;

optional int32 hltv_delay = 4;

optional .CMsgDOTALiveScoreboardUpdate.Team team_good = 5;

optional .CMsgDOTALiveScoreboardUpdate.Team team_bad = 6;

optional uint32 roshan_respawn_timer = 7;

optional uint32 league_id = 8;

optional uint64 match_id = 9;

}

message CMsgDOTARequestPlayerResources {

optional fixed64 steam_id = 1;

optional uint32 player_id = 2;

}

message CMsgDOTARequestPlayerResourcesResponse {

optional fixed64 steam_id = 1;

optional uint32 rank = 2;

optional uint32 player_id = 3;

optional bool prevent_text_chat = 4;

optional bool prevent_voice_chat = 5;

optional bool low_priority = 6;

}

message CMsgDOTARequestBatchPlayerResources {repeated uint32 account_ids = 1 [packed = true];repeated uint32 rank_types = 4 [packed = true];}

message CMsgDOTARequestBatchPlayerResourcesResponse {

message Result {

optional uint32 account_id = 1;

optional bool prevent_text_chat = 2;

optional bool prevent_voice_chat = 3;

optional uint32 rank = 4;

optional bool rank_calibrated = 5;

optional bool low_priority = 6;

}

repeated .CMsgDOTARequestBatchPlayerResourcesResponse.Result results = 6;

}

message CMsgDOTAPlayerFailedToConnect {

repeated fixed64 failed_loaders = 1;

repeated fixed64 abandoned_loaders = 2;

}

message CMsgGCToRelayConnect {

optional uint32 source_tv_public_addr = 1;

optional uint32 source_tv_private_addr = 2;

optional uint32 source_tv_port = 3;

optional uint64 game_server_steam_id = 4;

optional uint32 parent_count = 5;

optional fixed64 tv_unique_secret_code = 6;

optional fixed64 source_tv_steamid = 7;

}

message CMsgGCGCToLANServerRelayConnect {

optional fixed64 relay_steamid = 1;

}

message CMsgGCToRelayConnectResponse {

}

message CMsgGCBanStatusRequest {

optional uint32 account_id = 1;

}

message CMsgGCBanStatusResponse {

optional uint32 result = 1;

optional bool low_priority = 2;

optional bool text_chat_banned = 3;

optional bool voice_chat_banned = 4;

}

message CMsgTournamentItemEvent {optional fixed32 killer_account_id = 1;optional fixed32 victim_account_id = 2;optional .DOTA_TournamentEvents event_type = 3 [default = TE_FIRST_BLOOD];optional int32 tv_delay = 4;optional int32 dota_time = 5;optional float replay_time = 6;optional string loot_list = 7;optional uint32 event_team = 8;optional uint32 multi_kill_count = 9;optional uint32 winner_score = 10;optional uint32 loser_score = 11;repeated .CProtoItemHeroStatue hero_statues = 12;} message CMsgTournamentItemEventResponse {optional .DOTA_TournamentEvents event_type = 1 [default = TE_FIRST_BLOOD];optional uint32 viewers_granted = 6;}

message CMsgTeamFanfare {

optional uint64 match_id = 1;

}

message CMsgResponseTeamFanfare {

optional uint32 fanfare_goodguys = 1;

optional uint32 fanfare_badguys = 2;

}

message CMsgGameServerUploadSaveGame {

optional uint32 game_time = 1;

optional bytes save_game_data = 2;

optional uint64 lobby_id = 3;

repeated uint64 player_steam_ids = 4;

}

message CMsgGameServerSaveGameResult {

enum Result {

SaveSuccessful = 0;

SessionNotFound = 1;

DatabaseError = 2;

TooBig = 3;

}

optional .CMsgGameServerSaveGameResult.Result result = 1 [default = SaveSuccessful];}

message CMsgGameServerGetLoadGame {

optional uint32 save_id = 1;

}

message CMsgGameServerGetLoadGameResult {

optional bytes save_game_data = 1;

}

message CMsgDOTAGenerateDiretidePrizeList {

optional uint32 prize_list = 1;

optional uint32 highest_roshan_level = 2;

}

message CMsgDOTAGenerateDiretidePrizeListResponse {

repeated uint32 item_defs = 1;

repeated fixed64 steam_ids = 2;

optional uint32 prize_list = 3;

}

message CMsgDOTARewardDiretidePrizes {

optional uint32 team = 1;

optional uint32 prize_list = 2;

}

message CMsgDOTADiretidePrizesRewardedResponse {

optional uint32 prize_list = 1;

}

message CMsgDOTAAwardEventPoints {message AwardPoints {optional uint32 account_id = 1;optional int32 points = 2;optional int32 premium_points = 3;optional uint32 trade_ban_time = 5;optional bool eligible_for_periodic_adjustment = 6 [default = false];} repeated .CMsgDOTAAwardEventPoints.AwardPoints award_points = 1;optional uint64 match_id = 2;optional .EEvent event_id = 4 [default = EVENT_ID_NONE];optional uint32 timestamp = 5;optional uint32 audit_action = 6;}

message CMsgServerToGCSignoutAwardAdditionalDrops {

message AdditionalDrops {

optional string loot_list = 1;

repeated uint32 player_account_ids = 2;

optional bool no_trade = 3;

optional bool randomize_reward = 4;

}

repeated .CMsgServerToGCSignoutAwardAdditionalDrops.AdditionalDrops drops = 1;

optional uint64 match_id = 2;

}

message CMsgDOTAFrostivusTimeElapsed {

message User {

optional uint32 account_id = 1;

optional uint32 time_elapsed_s = 2;

}

optional uint32 seconds = 1;

repeated .CMsgDOTAFrostivusTimeElapsed.User users = 2;

optional uint64 match_id = 3;

}

message CMsgGCToServerPingRequest {

optional fixed64 request_id = 1;

optional uint64 request_time = 2;

}

message CMsgGCToServerPingResponse {

optional fixed64 request_id = 1;

optional uint64 request_time = 2;

optional uint32 cluster = 3;

}

message CMsgGCToServerConsoleCommand {

optional string console_command = 1;

}

message CMsgServerGetEventPoints {optional .EEvent event_id = 1 [default = EVENT_ID_NONE];repeated uint32 account_id = 2;}

message CMsgServerGetEventPointsResponse {

message Points {

optional uint32 account_id = 1;

optional uint32 points_total = 2;

optional bool owned = 4;

}

optional .EEvent event_id = 1 [default = EVENT_ID_NONE];repeated .CMsgServerGetEventPointsResponse.Points points = 2;}

message CMsgServerGrantSurveyPermission {

message Survey {

optional uint32 account_id = 1;

optional uint32 question_id = 2;

optional uint32 expire_time = 3;

optional uint64 survey_key = 4;

optional uint64 extra_data = 5;

optional uint64 extra_data_32 = 6;

}

repeated .CMsgServerGrantSurveyPermission.Survey surveys = 1;

}

message CMsgServerGrantSurveyPermissionResponse {

optional uint32 result = 1;

}

message CMsgServerToGCMatchConnectionStats {

message Player {

optional uint32 account_id = 1;

optional fixed32 ip = 2;

optional uint32 avg_ping_ms = 3;

optional float packet_loss = 5;

optional float ping_deviation = 6;

optional uint32 full_resends = 7;

}

optional uint64 match_id = 1;

optional uint32 region_id = 2;

optional uint32 league_id = 3;

repeated .CMsgServerToGCMatchConnectionStats.Player players = 4;

optional uint32 cluster_id = 5;

}

message CMsgServerGCUpdateSpectatorCount {

optional uint32 spectator_count = 1;

}

message CSerializedCombatLog {

message Dictionary {

message DictString {

required uint32 id = 1;

required string value = 2;

}

repeated .CSerializedCombatLog.Dictionary.DictString strings = 1;

}

optional uint32 version = 1;

optional .CSerializedCombatLog.Dictionary dictionary = 2;

repeated .CMsgDOTACombatLogEntry entries = 3;

}

message CMsgServerToGCGetAdditionalEquips {

repeated uint32 account_ids = 1;

}

message CMsgServerToGCGetAdditionalEquipsResponse {

message CUserEquips {

optional uint32 account_id = 1;

repeated .CAdditionalEquipSlot equips = 2;

}

repeated .CMsgServerToGCGetAdditionalEquipsResponse.CUserEquips equips = 1;

}

message CMsgServerToGCGetProfileCard {

repeated uint32 account_ids = 1;

}

message CMsgServerToGCGetProfileCardResponse {

repeated .CMsgDOTAProfileCard cards = 1;

}

message CMsgServerToGCVictoryPredictions {

message Record {

optional uint32 account_id = 1;

optional uint64 item_id = 2;

repeated uint64 item_ids = 5;

}

repeated .CMsgServerToGCVictoryPredictions.Record records = 1;

}

message CMsgSuspiciousActivity {optional uint32 account_id = 1;optional .ESuspiciousActivity activity = 2 [default = k_ESuspiciousActivity_VAC_MultipleInstances];optional sint32 intdata1 = 3;optional sint32 intdata2 = 4;optional uint32 time = 5;}

message CMsgServerToGCRequestStatus {

}

message CMsgServerToGCRequestStatus_Response {

optional uint32 response = 1;

}

message CMsgSignOutAssassinMiniGameInfo {

repeated fixed64 winning_players = 1;

repeated fixed64 losing_players = 2;

repeated fixed64 arcana_owners = 3;

optional bool assassin_won = 4;

optional uint32 target_hero_id = 5;

optional bool contract_completed = 6;

optional float contract_complete_time = 7;

optional bool pa_is_radiant = 8;

}

message CMsgServerToGCGetIngameEventData {optional .EEvent event = 1 [default = EVENT_ID_NONE];}

message CMsgGCToServerIngameEventDataOraclePA {

repeated uint32 target_hero_ids = 1;

}

message CMsgServerToGCKillSummaries {

message KillSummary {

optional uint32 killer_hero_id = 1;

optional uint32 victim_hero_id = 2;

optional uint32 kill_count = 3;

}

optional uint32 ingameevent_id = 1;

repeated .CMsgServerToGCKillSummaries.KillSummary summaries = 2;

}

message CMsgGCToServerPredictionResult {

message Prediction {

enum EResult {

k_eResult_ItemGranted = 1;

k_eResult_Destroyed = 2;

}

optional uint32 item_def = 1;optional uint32 num_correct = 2;optional uint32 num_fails = 3;optional .CMsgGCToServerPredictionResult.Prediction.EResult result = 4 [default = k_eResult_ItemGranted];repeated uint32 granted_item_defs = 6;}

optional uint32 account_id = 1;

optional uint64 match_id = 2;

optional bool correct = 3;

repeated .CMsgGCToServerPredictionResult.Prediction predictions = 4;

}

message CMsgServerToGCLockCharmTrading {

optional uint32 account_id = 1;

optional uint64 item_id = 2;

}

message CMsgSignOutUpdatePlayerChallenge {message Challenge {optional .EEvent event_id = 1 [default = EVENT_ID_NONE];optional uint32 slot_id = 2;optional uint32 sequence_id = 3;optional uint32 progress = 4;optional uint32 challenge_rank = 5;}

optional uint32 account_id = 1;

repeated .CMsgSignOutUpdatePlayerChallenge.Challenge completed = 2;

repeated .CMsgSignOutUpdatePlayerChallenge.Challenge rerolled = 3;

optional uint64 match_id = 4;

optional uint32 hero_id = 5;

}

message CMsgServerToGCRerollPlayerChallenge {

optional uint32 account_id = 1;

optional .CMsgClientToGCRerollPlayerChallenge reroll_msg = 2;

}

message CMsgServerToGCHoldEventPoints {

message HoldRequest {

optional uint32 account_id = 1;

optional uint32 points_held = 2;

optional uint32 premium_held = 3;

}

repeated .CMsgServerToGCHoldEventPoints.HoldRequest holds = 1;optional .EEvent event_id = 2 [default = EVENT_ID_NONE];optional uint64 hold_key = 3;optional uint32 hold_until = 4;} message CMsgSignOutReleaseEventPointHolds {repeated uint32 account_ids = 1;optional .EEvent event_id = 2 [default = EVENT_ID_NONE];optional uint64 hold_key = 3;}

message CMsgSignOutWagerStats {

message Player {

optional uint32 account_id = 1;

optional uint32 winnings = 2;

optional uint32 max_wager = 3;

optional uint32 wager = 4;

}

repeated .CMsgSignOutWagerStats.Player players = 1;optional .EEvent event_id = 2 [default = EVENT_ID_NONE];}

message CMsgSpendWager {

message Player {

optional uint32 account_id = 1;

optional uint32 wager = 2;

optional uint64 wager_token_item_id = 3;

}

repeated .CMsgSpendWager.Player players = 1;optional .EEvent event_id = 2 [default = EVENT_ID_NONE];optional uint32 timestamp = 3;optional uint64 match_id = 4;optional uint64 server_steam_id = 5;}

message CMsgSignOutXPCoins {

message Player {

optional uint32 account_id = 1;

optional uint32 xp_gained = 2;

optional uint32 coins_spent = 3;

optional uint64 wager_token_item_id = 4;

optional uint32 rank_wager = 5;

}

repeated .CMsgSignOutXPCoins.Player players = 1;optional .EEvent event_id = 2 [default = EVENT_ID_NONE];optional uint64 match_id = 3;optional uint32 timestamp = 4;}

message CMsgSignOutCommunityGoalProgress {

message EventGoalIncrement {

optional uint32 event_goal_id = 1;

optional uint32 increment_amount = 2;

}

optional .EEvent event_id = 1 [default = EVENT_ID_NONE];repeated .CMsgSignOutCommunityGoalProgress.EventGoalIncrement event_increments = 2;} message CMsgServerToGCPostMatchTip {optional .EEvent event_id = 1 [default = EVENT_ID_NONE];optional uint64 match_id = 2;optional uint32 tipper_account_id = 3;optional uint32 recipient_account_id = 4;optional uint32 tip_amount = 5;}

message CMsgServerToGCPostMatchTipResponse {

enum Result {

SUCCESS = 0;

FAILURE = 1;

}

optional uint64 match_id = 1;optional uint32 tipper_account_id = 2;optional uint32 recipient_account_id = 3;optional .CMsgServerToGCPostMatchTipResponse.Result result = 4 [default = SUCCESS];}

message CMsgServerToGCCloseCompendiumInGamePredictionVoting {

optional uint64 match_id = 1;

optional uint32 hltv_delay = 2;

}

message CMsgServerToGCCloseCompendiumInGamePredictionVotingResponse {

optional bool result = 1;

}

message CMsgServerToGCCompendiumInGamePredictionResults {

message PredictionResult {

optional uint32 prediction_id = 1;

optional uint32 prediction_value = 2;

optional bool prediction_value_is_mask = 3;

}

optional uint64 match_id = 1;

repeated .CMsgServerToGCCompendiumInGamePredictionResults.PredictionResult results = 2;

optional uint32 league_id = 3;

optional uint32 league_node_id = 4;

}

message CMsgServerToGCCompendiumInGamePredictionResultsResponse {

optional bool result = 1;

}

message CMsgGCToGCCompendiumInGamePredictionResults {

optional .CMsgServerToGCCompendiumInGamePredictionResults results = 1;

}

message CMsgServerToGCMatchPlayerItemPurchaseHistory {

message ItemPurchase {

optional uint32 item = 1;

optional uint32 gold = 2;

optional uint32 net_worth = 3;

optional uint32 game_time = 4;

repeated uint32 inventory_items = 5;

repeated bool talents_skilled = 7;

}

message Player {

optional uint32 player_slot = 1;

optional uint32 account_id = 2;

optional uint32 hero_id = 3;

repeated uint32 allied_hero_ids = 4;

repeated uint32 enemy_hero_ids = 5;

repeated .CMsgServerToGCMatchPlayerItemPurchaseHistory.ItemPurchase item_purchases = 6;

}

optional uint64 match_id = 1;

optional uint32 mmr = 2;

repeated .CMsgServerToGCMatchPlayerItemPurchaseHistory.Player players = 3;

}

message CMsgServerToGCMatchStateHistory {

message PlayerState {

optional uint32 hero_id = 1;

optional uint32 net_worth = 2;

optional uint32 level = 3;

optional uint32 deaths = 4;

optional uint32 respawn_time = 5;

optional bool has_buyback = 6;

optional bool has_aegis = 7;

optional bool has_rapier = 8;

optional uint32 distance = 9;

}

message TeamState {

optional uint32 team = 1;

repeated .CMsgServerToGCMatchStateHistory.PlayerState player_states = 2;

repeated uint32 tower_health_pct = 3;

repeated uint32 barracks_health_pct = 4;

optional uint32 ancient_health_pct = 5;

optional uint32 glyph_cooldown = 6;

optional uint32 kills = 7;

optional uint32 creep_distance_safe = 8;

optional uint32 creep_distance_mid = 9;

optional uint32 creep_distance_off = 10;

}

message MatchState {

optional uint32 game_time = 1;

optional .CMsgServerToGCMatchStateHistory.TeamState radiant_state = 2;

optional .CMsgServerToGCMatchStateHistory.TeamState dire_state = 3;

}

optional uint64 match_id = 1;

optional bool radiant_won = 2;

optional uint32 mmr = 3;

repeated .CMsgServerToGCMatchStateHistory.MatchState match_states = 4;

}

message CMsgServerToGCCavernCrawlIsHeroActive {

optional uint32 event_id = 1;

optional uint32 account_id = 2;

optional uint32 hero_id = 3;

optional bool turbo_mode = 4;

}

message CMsgServerToGCCavernCrawlIsHeroActiveResponse {

message MapResults {

optional uint32 path_id_completed = 1;

optional uint32 room_id_claimed = 2;

}

optional bool result = 1;

optional uint32 potential_winnings = 2;

repeated .CMsgServerToGCCavernCrawlIsHeroActiveResponse.MapResults map_results = 3;

optional uint32 potential_plus_shard_winnings = 4;

}

message CMsgGCtoServerTensorflowInstance {

optional uint32 server_instance = 1;

}

[/SPOILER]

 

[/SPOILER]

Хедшот68

Пользователь

Регистрация: 17.06.2014

Сообщения: 30746

Рейтинг: 17130

Хедшот68

Регистрация: 17.06.2014

Сообщения: 30746

Рейтинг: 17130

Roofio228 сказал(а):

В директории доты есть файл server_log.txt - "\SteamApps\common\dota 2 beta\game\dota". Этот файл логгирует следующие данные - время запуска игры ид лобби, ид игроков доты в пати, режим игры и наверное ид игр.

 

Пример:

05/11/2019 - 19:46:09: =[A:1:3653891074:12510] (Lobby 26131046210328570 DOTA_GAMEMODE_ALL_DRAFT 0:[U:1:359307198] 1:[U:1:130771058] 2:[U:1:93384294] 3:[U:1:67715545] 4:[U:1:835276882] 5:[U:1:179492577] 6:[U:1:125533203] 7:[U:1:441967104] 8:[U:1:335268207] 9:[U:1:196677234]) (Party 26131046103926007 0:[U:1:359307198] 1:[U:1:130771058] 2:[U:1:93384294] 3:[U:1:67715545] 4:[U:1:835276882])

 

 

ИД лобби и идишники игроков в лобби - тут лобби уже в самой игре, когда все подключились

Lobby 26131046210328570 DOTA_GAMEMODE_ALL_DRAFT 0:[U:1:359307198] 1:[U:1:130771058] 2:[U:1:93384294] 3:[U:1:67715545] 4:[U:1:835276882] 5:[U:1:179492577] 6:[U:1:125533203] 7:[U:1:441967104] 8:[U:1:335268207] 9:[U:1:196677234])

 

Непосредственно пати с ИД когда искали игры

(Party 26131046103926007 0:[U:1:359307198] 1:[U:1:130771058] 2:[U:1:93384294] 3:[U:1:67715545] 4:[U:1:835276882])

Вот это я пока понять не могу

[A:1:3653891074:12510]

 

Как я себе представляю, данный файл скорее всего зеркально хранится у валв, а не только у тебя на машине. Возможно в твоём облаке, в возможно и нет. Возможно алгоритм и анализирует эту статистику.

 

Посмотри у себя этот файл файл и что он там хранит. У меня такой файл собирал данные с игр с апреля 2017 года.

 

 

 

Нашел пост на реддите от чела, которого забанило после абуза дота+. Он приводит в пример обнаружение подозрительных действий в матчах

Спойлер: "тык"

 

import "steammessages.proto";

import "dota_shared_enums.proto";

import "dota_gcmessages_common.proto";

import "econ_gcmessages.proto";

import "network_connection.proto";

import "dota_gcmessages_common_match_management.proto";

option optimize_for = SPEED;

option cc_generic_services = false;

enum EPoorNetworkConditionsType {

k_EPoorNetworkConditions_None = 0;

k_EPoorNetworkConditions_Unknown = 1;

k_EPoorNetworkConditions_MassDisconnect = 2;

k_EPoorNetworkConditions_ExcessBadQosIntervals = 3;

}

enum EAbilityAbuseType {

k_EAbilityAbuseType_None = 0;

k_EAbilityAbuseType_Io_Relocate = 1;

k_EAbilityAbuseType_Chen_Test_Of_Faith = 2;

k_EAbilityAbuseType_Bane_Nightmare = 3;

k_EAbilityAbuseType_Bloodseeker_Bloodrage = 4;

k_EAbilityAbuseType_Outworld_Astral_Imprisonment = 5;

k_EAbilityAbuseType_Shadow_Demon_Disruption = 6;

k_EAbilityAbuseType_Grimstroke_InkSwell = 7;

}

enum EIntentionalFeedingType {

k_EIntentionalFeedingType_None = 0;

k_EIntentionalFeedingType_ExcessiveDeaths = 1;

k_EIntentionalFeedingType_MultipleCourierPurchases = 2;

k_EIntentionalFeedingType_MultipleCourierDeaths = 4;

k_EIntentionalFeedingType_LowActivity = 8;

k_EIntentionalFeedingType_LowDamage = 16;

k_EIntentionalFeedingType_HighUnspentGold = 32;

k_EIntentionalFeedingType_SoldTooMuchItemValue = 64;

k_EIntentionalFeedingType_TooManyDroppedItems = 128;

k_EIntentionalFeedingType_ExcessiveTowerDamage = 256;

k_EIntentionalFeedingType_LastHitsDenies = 512;

k_EIntentionalFeedingType_XPPM = 1024;

k_EIntentionalFeedingType_SuspiciousOrders = 2048;

}

enum ESuspiciousActivity {

k_ESuspiciousActivity_VAC_MultipleInstances = 1;

k_ESuspiciousActivity_IntentionalFeeding = 100;

k_ESuspiciousActivity_SuspectedBotFarming = 101;

}

enum ESuspiciousBuildType {

k_ESuspiciousBuildType_None = 0;

k_ESuspiciousBuildType_NoGoldSpent = 1;

k_ESuspiciousBuildType_NoItems = 2;

k_ESuspiciousBuildType_NoSignificantItems = 3;

k_ESuspiciousBuildType_TooManyBoots = 4;

k_ESuspiciousBuildType_Bot1 = 101;

k_ESuspiciousBuildType_Bot2 = 102;

k_ESuspiciousBuildType_Bot3 = 103;

k_ESuspiciousBuildType_Bot4 = 104;

k_ESuspiciousBuildType_Bot5 = 105;

}

message CMsgPoorNetworkConditions {message Player {optional uint32 account_id = 1;optional .ENetworkDisconnectionReason disconnect_reason = 2 [default = NETWORK_DISCONNECT_INVALID];optional uint32 num_bad_intervals = 3;optional uint32 peak_loss_pct = 4;} optional .EPoorNetworkConditionsType detection_type = 1 [default = k_EPoorNetworkConditions_None];repeated .CMsgPoorNetworkConditions.Player players = 2;} message CMsgGameserverCrash {optional uint64 match_id = 1;optional fixed64 lobby_id = 2;optional .DOTA_GameState game_state = 3 [default = DOTA_GAMERULES_STATE_INIT];optional fixed32 sentinel_save_time = 4;optional fixed64 custom_game_id = 11;optional uint32 tournament_id = 12;optional fixed64 server_steam_id = 5;optional fixed32 server_public_ip_addr = 6;optional uint32 server_port = 7;optional uint32 server_cluster = 8;optional uint32 pid = 9;optional uint32 engine = 10;} message CMsgConnectedPlayers {message Player {optional fixed64 steam_id = 1;optional uint32 hero_id = 2;optional .CMsgLeaverState leaver_state = 3;optional .ENetworkDisconnectionReason disconnect_reason = 4 [default = NETWORK_DISCONNECT_INVALID];}

enum SendReason {

INVALID = 0;

HEARTBEAT = 1;

GAME_STATE = 2;

FIRST_BLOOD = 3;

PLAYER_CONNECTED = 4;

PLAYER_HERO = 5;

PLAYER_DISCONNECTED_CONSEQUENCES = 6;

PLAYER_DISCONNECTED_NOCONSEQUENCES = 7;

GAMESTATE_TIMEOUT = 10;

MASS_DISCONNECT = 11;

KILLS = 13;

BUILDING_STATE = 14;

}

repeated .CMsgConnectedPlayers.Player connected_players = 1;repeated .CMsgConnectedPlayers.Player disconnected_players = 7;optional .DOTA_GameState game_state = 2 [default = DOTA_GAMERULES_STATE_INIT];optional bool first_blood_happened = 6;optional bool legacy_mass_disconnect = 9;optional .CMsgPoorNetworkConditions poor_network_conditions = 10;optional .CMsgConnectedPlayers.SendReason send_reason = 8 [default = INVALID];optional uint32 radiant_kills = 11;optional uint32 dire_kills = 12;optional int32 radiant_lead = 14;optional uint32 building_state = 15;}

message CMsgGameServerInfo {

enum ServerType {

UNSPECIFIED = 0;

GAME = 1;

PROXY = 2;

TENSORFLOW = 3;

DOTA_ONLY = 4;

CUSTOM_GAME_ONLY = 5;

}

enum CustomGames {

BOTH = 0;

NONE = 1;

ONLY = 2;

}

optional fixed32 server_public_ip_addr = 1;optional fixed32 server_private_ip_addr = 2;optional uint32 server_port = 3;optional uint32 server_tv_port = 4;optional uint32 assigned_server_tv_port = 22;optional bytes legacy_server_steamdatagram_address = 27;optional string server_key = 5;optional bool server_hibernation = 6;optional .CMsgGameServerInfo.ServerType server_type = 7 [default = UNSPECIFIED];optional uint32 server_region = 8;optional float server_loadavg = 9;optional float server_tv_broadcast_time = 10;optional float server_game_time = 11;optional fixed64 server_relay_connected_steam_id = 12;optional uint32 relay_slots_max = 13;optional int32 relays_connected = 14;optional int32 relay_clients_connected = 15;optional fixed64 relayed_game_server_steam_id = 16;optional uint32 parent_relay_count = 17;optional fixed64 tv_secret_code = 18;optional uint32 server_version = 19;optional uint32 server_cluster = 20;optional .CMsgGameServerInfo.CustomGames allow_custom_games = 23 [default = BOTH];optional uint32 build_version = 24;optional uint32 tf_server_count = 25;optional uint32 srcds_instance = 26;} message CMsgLeaverDetected {optional fixed64 steam_id = 1;optional .DOTALeaverStatus_t leaver_status = 2 [default = DOTA_LEAVER_NONE];optional .CMsgLeaverState leaver_state = 4;optional uint32 server_cluster = 5;optional .ENetworkDisconnectionReason disconnect_reason = 6 [default = NETWORK_DISCONNECT_INVALID];optional .CMsgPoorNetworkConditions poor_network_conditions = 7;}

message CMsgLeaverDetectedResponse {

optional uint32 result = 1;

}

message CMsgDOTAFantasyFinalPlayerStats {

repeated .CMsgDOTAFantasyPlayerStats stats = 2;

}

message CMsgDOTAFantasyLivePlayerStats {

repeated .CMsgDOTAFantasyPlayerStats stats = 2;

}

message CMsgDOTAFantasyMatch {

optional uint64 match_id = 1;

optional uint32 league_id = 2;

optional uint32 series_id = 3;

optional uint32 start_time = 4;

optional uint32 series_type = 5;

optional uint32 team_1 = 6;

optional uint32 team_2 = 7;

}

message CMsgDOTAUpdateClippy {

repeated uint32 good_team_hero_ids = 1;

repeated uint32 bad_team_hero_ids = 2;

}

message CMsgServerToGCRealtimeStats {

optional .CMsgDOTARealtimeGameStatsTerse delayed = 1;

}

message CMsgGCToServerRealtimeStatsStartStop {

optional bool delayed = 1;

}

message CMsgGCToServerUpdateSteamBroadcasting {

optional bool active = 1;

}

message CMsgGameMatchSignOut {

message CTeam {

message CPlayer {

message CCustomGameData {

optional uint32 dota_team = 1;

optional bool winner = 2;

}

message HeroDamageReceived {optional uint32 pre_reduction = 1;optional uint32 post_reduction = 2;optional .CMsgGameMatchSignOut.CTeam.CPlayer.HeroDamageType damage_type = 3 [default = HERO_DAMAGE_PHYSICAL];}

enum HeroDamageType {

HERO_DAMAGE_PHYSICAL = 0;

HERO_DAMAGE_MAGICAL = 1;

HERO_DAMAGE_PURE = 2;

}

optional fixed64 steam_id = 1;

optional uint32 hero_id = 3;

repeated uint32 items = 4;

optional uint32 gold = 5;

optional uint32 kills = 6;

optional uint32 deaths = 7;

optional uint32 assists = 8;

optional uint32 leaver_status = 9;

optional uint32 last_hits = 10;

optional uint32 denies = 11;

optional uint32 gold_per_min = 12;

optional uint32 xp_per_minute = 13;

optional uint32 gold_spent = 14;

optional uint32 level = 15;

optional uint32 scaled_hero_damage = 16;

optional uint32 scaled_tower_damage = 17;

optional uint32 scaled_hero_healing = 18;

optional uint32 time_last_seen = 19;

optional uint32 support_ability_value = 20;

optional uint64 party_id = 21;

optional float scaled_kills = 24;

optional float scaled_deaths = 25;

optional float scaled_assists = 26;

optional uint32 claimed_farm_gold = 27;

optional uint32 support_gold = 28;

optional uint32 claimed_denies = 29;

optional uint32 claimed_misses = 30;

optional uint32 misses = 31;

optional uint32 net_worth = 34;

optional uint32 hero_damage = 37;

optional uint32 tower_damage = 38;

optional uint32 hero_healing = 39;

repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 32;

repeated .CMatchAdditionalUnitInventory additional_units_inventory = 33;

repeated .CMatchPlayerPermanentBuff permanent_buffs = 40;

optional .CMsgGameMatchSignOut.CTeam.CPlayer.CCustomGameData custom_game_data = 35;

optional uint32 match_player_flags = 36;

repeated uint32 talent_ability_ids = 41;

optional uint32 hero_pick_order = 42;

optional bool hero_was_randomed = 43;

optional bool hero_was_dota_plus_suggestion = 50;

optional uint32 lane = 45;

repeated .CMatchPlayerTimedStats timed_stats = 46;

optional bool is_using_plus_guide = 47;

repeated .CMsgGameMatchSignOut.CTeam.CPlayer.HeroDamageReceived hero_damage_received = 48;

optional uint32 seconds_dead = 51;

optional uint32 gold_lost_to_death = 52;

}

repeated .CMsgGameMatchSignOut.CTeam.CPlayer players = 1;

}

message CAdditionalSignoutMsg {

optional uint32 id = 1;

optional bytes contents = 2;

}

message CSocialFeedMatchEvent {

optional uint32 account_id = 1;

optional uint32 timestamp = 2;

optional uint32 event_type = 3;

optional int32 game_time = 4;

optional uint32 replay_time = 5;

}

message CCustomGameData {

optional uint32 publish_timestamp = 1;

}

message EventGameLeaderboardEntry {

optional string name_suffix = 1;

optional int32 score = 2;

optional uint32 extra_data_1 = 3;

optional uint32 extra_data_2 = 4;

optional uint32 extra_data_3 = 5;

optional uint32 extra_data_4 = 6;

optional uint32 extra_data_5 = 7;

}

message WardPlacement {

optional uint32 player_id = 1;

optional uint32 team_id = 2;

optional uint32 placed_time = 3;

optional uint32 building_state = 4;

optional uint32 creep_state = 5;

optional bool roshan_alive = 6;

optional uint32 position_x = 7;

optional uint32 position_y = 8;

}

optional uint64 match_id = 1 [(key_field) = true];optional uint32 duration = 2;optional bool good_guys_win = 3;optional fixed32 date = 4;repeated uint32 num_players = 5;repeated .CMsgGameMatchSignOut.CTeam teams = 6;repeated uint32 tower_status = 8;repeated uint32 barracks_status = 9;optional uint32 cluster = 10;optional string server_addr = 11;optional uint32 first_blood_time = 12;optional float game_balance = 13;optional uint32 event_score = 14;repeated .CMatchHeroSelectEvent picks_bans = 15;repeated .CMsgDOTAFantasyPlayerStats fantasy_stats = 41;repeated .CMsgEconPlayerStrangeCountAdjustment player_strange_count_adjustments = 17;optional bool automatic_surrender = 18;optional uint32 server_version = 19;optional bool legacy_mass_disconnect = 21;optional .CMsgPoorNetworkConditions poor_network_conditions = 35;repeated .CMsgGameMatchSignOut.CAdditionalSignoutMsg additional_msgs = 20;repeated .CMsgGameMatchSignOut.CSocialFeedMatchEvent social_feed_events = 36;optional sint32 average_networth_delta = 22;optional sint32 networth_delta_min10 = 23;optional sint32 networth_delta_min20 = 24;optional sint32 maximum_losing_networth_lead = 25;optional sint32 average_experience_delta = 26;optional sint32 experience_delta_min10 = 27;optional sint32 experience_delta_min20 = 28;optional sint32 bonus_gold_winner_min10 = 29;optional sint32 bonus_gold_winner_min20 = 30;optional uint32 bonus_gold_winner_total = 31;optional sint32 bonus_gold_loser_min10 = 32;optional sint32 bonus_gold_loser_min20 = 33;optional uint32 bonus_gold_loser_total = 34;optional .CMsgGameMatchSignOut.CCustomGameData custom_game_data = 37;optional uint32 match_flags = 38;repeated uint32 team_scores = 39;optional uint32 pre_game_duration = 40;repeated .CMsgGameMatchSignOut.EventGameLeaderboardEntry event_game_leaderboard_entries = 42;repeated .CMsgGameMatchSignOut.WardPlacement ward_placements = 43;optional uint32 bounty_rune_gold_winners = 44;optional uint32 bounty_rune_gold_losers = 45;optional uint32 range_creep_upgrade_gold_winners = 46;optional uint32 range_creep_upgrade_gold_losers = 47;}

message CMsgSignOutDraftInfo {

optional uint32 radiant_captain_account_id = 1;

optional uint32 dire_captain_account_id = 2;

repeated .CMatchHeroSelectEvent picks_bans = 3;

}

message CMsgSignOutBotInfo {optional bool allow_cheats = 1;optional .DOTABotDifficulty bot_difficulty_radiant = 2 [default = BOT_DIFFICULTY_PASSIVE];optional bool created_lobby = 3;optional .DOTABotDifficulty bot_difficulty_dire = 5 [default = BOT_DIFFICULTY_PASSIVE];}

message CMsgSignOutPlayerStats {

optional int32 account_id = 1;

optional uint64 match_id = 2;

optional uint32 rank = 3;

optional uint32 hero_id = 4;

optional uint32 rampages = 5;

optional uint32 triple_kills = 6;

optional uint32 first_blood_claimed = 7;

optional uint32 first_blood_given = 8;

optional uint32 couriers_killed = 9;

optional uint32 aegises_snatched = 10;

optional uint32 cheeses_eaten = 11;

optional uint32 creeps_stacked = 12;

optional float fight_score = 13;

optional float farm_score = 14;

optional float support_score = 15;

optional float push_score = 16;

optional uint32 kills = 17;

optional uint32 deaths = 18;

optional uint32 assists = 19;

optional uint32 last_hits = 20;

optional uint32 denies = 21;

optional float gpm = 22;

optional float xppm = 23;

optional float net_worth = 24;

optional float damage = 25;

optional float heals = 26;

optional uint32 rapiers_purchased = 27;

optional uint32 observer_wards_placed = 28;

optional uint32 wards_destroyed = 29;

}

message CMsgSignOutCommunicationSummary {

message PlayerCommunication {

optional uint32 account_id = 1;

optional uint32 pings = 2;

optional uint32 max_pings_per_interval = 3;

optional uint32 teammate_pings = 4;

optional uint32 max_teammate_pings_per_interval = 5;

optional uint32 team_chat_messages = 6;

optional uint32 all_chat_messages = 7;

optional uint32 chat_wheel_messages = 8;

optional uint32 pauses = 9;

optional uint32 unpauses = 10;

optional uint32 lines_drawn = 11;

optional uint32 voice_chat_seconds = 12;

optional uint32 chat_mutes = 13;

optional uint32 voice_mutes = 14;

}

repeated .CMsgSignOutCommunicationSummary.PlayerCommunication players = 1;

}

message CMsgGameMatchSignoutResponse {

message PlayerMetadata {

optional uint32 hero_id = 1;

optional uint32 avg_kills_x16 = 2;

optional uint32 avg_deaths_x16 = 3;

optional uint32 avg_assists_x16 = 4;

optional uint32 avg_gpm_x16 = 5;

optional uint32 avg_xpm_x16 = 6;

optional uint32 best_kills_x16 = 7;

optional uint32 best_assists_x16 = 8;

optional uint32 best_gpm_x16 = 9;

optional uint32 best_xpm_x16 = 10;

optional uint32 win_streak = 11;

optional uint32 best_win_streak = 12;

optional uint32 games_played = 13;

}

optional uint64 match_id = 1;

optional fixed32 replay_salt = 2;

repeated .CLobbyTimedRewardDetails timed_reward_details = 3;

repeated .CDOTALobbyMember xp_reward_details = 4;

optional uint32 leagueid = 5;

optional fixed32 metadata_private_key = 7;

optional .CMsgDOTAMatch match_details = 8;

repeated .CMsgGameMatchSignoutResponse.PlayerMetadata players_metadata = 9;

}

message CMsgTimedRewardContainer {

repeated .CLobbyTimedRewardDetails timed_reward_details = 1;

}

message CMsgGameMatchSignOutPermissionRequest {

optional uint32 server_version = 1;

optional uint32 local_attempt = 2;

optional uint32 total_attempt = 3;

optional uint32 seconds_waited = 4;

}

message CMsgGameMatchSignOutPermissionResponse {optional bool permission_granted = 1 [default = false];optional bool abandon_signout = 2 [default = false];optional uint32 retry_delay_seconds = 3 [default = 0];} message CMsgGameMatchSignOutEventGameData {optional .EEvent event_id = 1 [default = EVENT_ID_NONE];optional string game_name = 2;optional string map_name = 3;optional bytes event_game_data = 4;optional uint32 start_time = 5;}

message CMsgDOTALiveScoreboardUpdate {

message Team {

message Player {

message HeroAbility {

optional uint32 ability_id = 1;

optional uint32 ability_level = 2;

}

enum DOTAUltimateState {

k_EDOTAUltimateStateNotLearned = 0;

k_EDOTAUltimateStateCooldown = 1;

k_EDOTAUltimateStateNeedsMana = 2;

k_EDOTAUltimateStateReady = 3;

}

optional uint32 player_slot = 1;optional string player_name = 2;optional string hero_name = 3;optional uint32 hero_id = 4;optional uint32 kills = 5;optional uint32 deaths = 6;optional uint32 assists = 7;optional uint32 last_hits = 8;optional uint32 denies = 9;optional uint32 gold = 10;optional uint32 level = 11;optional float gold_per_min = 12;optional float xp_per_min = 13;optional .CMsgDOTALiveScoreboardUpdate.Team.Player.DOTAUltimateState ultimate_state = 14 [default = k_EDOTAUltimateStateNotLearned];optional float ultimate_cooldown = 15;optional uint32 item0 = 16;optional uint32 item1 = 17;optional uint32 item2 = 18;optional uint32 item3 = 19;optional uint32 item4 = 20;optional uint32 item5 = 21;optional uint32 respawn_timer = 22;optional uint32 account_id = 23;optional float position_x = 24;optional float position_y = 25;optional uint32 net_worth = 26;repeated .CMsgDOTALiveScoreboardUpdate.Team.Player.HeroAbility abilities = 27;}

repeated .CMsgDOTALiveScoreboardUpdate.Team.Player players = 1;

optional uint32 score = 2;

optional uint32 tower_state = 3;

optional uint32 barracks_state = 4;

repeated uint32 hero_picks = 5;

repeated uint32 hero_bans = 6;

}

optional uint32 tournament_id = 1;

optional uint32 tournament_game_id = 2;

optional float duration = 3;

optional int32 hltv_delay = 4;

optional .CMsgDOTALiveScoreboardUpdate.Team team_good = 5;

optional .CMsgDOTALiveScoreboardUpdate.Team team_bad = 6;

optional uint32 roshan_respawn_timer = 7;

optional uint32 league_id = 8;

optional uint64 match_id = 9;

}

message CMsgDOTARequestPlayerResources {

optional fixed64 steam_id = 1;

optional uint32 player_id = 2;

}

message CMsgDOTARequestPlayerResourcesResponse {

optional fixed64 steam_id = 1;

optional uint32 rank = 2;

optional uint32 player_id = 3;

optional bool prevent_text_chat = 4;

optional bool prevent_voice_chat = 5;

optional bool low_priority = 6;

}

message CMsgDOTARequestBatchPlayerResources {repeated uint32 account_ids = 1 [packed = true];repeated uint32 rank_types = 4 [packed = true];}

message CMsgDOTARequestBatchPlayerResourcesResponse {

message Result {

optional uint32 account_id = 1;

optional bool prevent_text_chat = 2;

optional bool prevent_voice_chat = 3;

optional uint32 rank = 4;

optional bool rank_calibrated = 5;

optional bool low_priority = 6;

}

repeated .CMsgDOTARequestBatchPlayerResourcesResponse.Result results = 6;

}

message CMsgDOTAPlayerFailedToConnect {

repeated fixed64 failed_loaders = 1;

repeated fixed64 abandoned_loaders = 2;

}

message CMsgGCToRelayConnect {

optional uint32 source_tv_public_addr = 1;

optional uint32 source_tv_private_addr = 2;

optional uint32 source_tv_port = 3;

optional uint64 game_server_steam_id = 4;

optional uint32 parent_count = 5;

optional fixed64 tv_unique_secret_code = 6;

optional fixed64 source_tv_steamid = 7;

}

message CMsgGCGCToLANServerRelayConnect {

optional fixed64 relay_steamid = 1;

}

message CMsgGCToRelayConnectResponse {

}

message CMsgGCBanStatusRequest {

optional uint32 account_id = 1;

}

message CMsgGCBanStatusResponse {

optional uint32 result = 1;

optional bool low_priority = 2;

optional bool text_chat_banned = 3;

optional bool voice_chat_banned = 4;

}

message CMsgTournamentItemEvent {optional fixed32 killer_account_id = 1;optional fixed32 victim_account_id = 2;optional .DOTA_TournamentEvents event_type = 3 [default = TE_FIRST_BLOOD];optional int32 tv_delay = 4;optional int32 dota_time = 5;optional float replay_time = 6;optional string loot_list = 7;optional uint32 event_team = 8;optional uint32 multi_kill_count = 9;optional uint32 winner_score = 10;optional uint32 loser_score = 11;repeated .CProtoItemHeroStatue hero_statues = 12;} message CMsgTournamentItemEventResponse {optional .DOTA_TournamentEvents event_type = 1 [default = TE_FIRST_BLOOD];optional uint32 viewers_granted = 6;}

message CMsgTeamFanfare {

optional uint64 match_id = 1;

}

message CMsgResponseTeamFanfare {

optional uint32 fanfare_goodguys = 1;

optional uint32 fanfare_badguys = 2;

}

message CMsgGameServerUploadSaveGame {

optional uint32 game_time = 1;

optional bytes save_game_data = 2;

optional uint64 lobby_id = 3;

repeated uint64 player_steam_ids = 4;

}

message CMsgGameServerSaveGameResult {

enum Result {

SaveSuccessful = 0;

SessionNotFound = 1;

DatabaseError = 2;

TooBig = 3;

}

optional .CMsgGameServerSaveGameResult.Result result = 1 [default = SaveSuccessful];}

message CMsgGameServerGetLoadGame {

optional uint32 save_id = 1;

}

message CMsgGameServerGetLoadGameResult {

optional bytes save_game_data = 1;

}

message CMsgDOTAGenerateDiretidePrizeList {

optional uint32 prize_list = 1;

optional uint32 highest_roshan_level = 2;

}

message CMsgDOTAGenerateDiretidePrizeListResponse {

repeated uint32 item_defs = 1;

repeated fixed64 steam_ids = 2;

optional uint32 prize_list = 3;

}

message CMsgDOTARewardDiretidePrizes {

optional uint32 team = 1;

optional uint32 prize_list = 2;

}

message CMsgDOTADiretidePrizesRewardedResponse {

optional uint32 prize_list = 1;

}

message CMsgDOTAAwardEventPoints {message AwardPoints {optional uint32 account_id = 1;optional int32 points = 2;optional int32 premium_points = 3;optional uint32 trade_ban_time = 5;optional bool eligible_for_periodic_adjustment = 6 [default = false];} repeated .CMsgDOTAAwardEventPoints.AwardPoints award_points = 1;optional uint64 match_id = 2;optional .EEvent event_id = 4 [default = EVENT_ID_NONE];optional uint32 timestamp = 5;optional uint32 audit_action = 6;}

message CMsgServerToGCSignoutAwardAdditionalDrops {

message AdditionalDrops {

optional string loot_list = 1;

repeated uint32 player_account_ids = 2;

optional bool no_trade = 3;

optional bool randomize_reward = 4;

}

repeated .CMsgServerToGCSignoutAwardAdditionalDrops.AdditionalDrops drops = 1;

optional uint64 match_id = 2;

}

message CMsgDOTAFrostivusTimeElapsed {

message User {

optional uint32 account_id = 1;

optional uint32 time_elapsed_s = 2;

}

optional uint32 seconds = 1;

repeated .CMsgDOTAFrostivusTimeElapsed.User users = 2;

optional uint64 match_id = 3;

}

message CMsgGCToServerPingRequest {

optional fixed64 request_id = 1;

optional uint64 request_time = 2;

}

message CMsgGCToServerPingResponse {

optional fixed64 request_id = 1;

optional uint64 request_time = 2;

optional uint32 cluster = 3;

}

message CMsgGCToServerConsoleCommand {

optional string console_command = 1;

}

message CMsgServerGetEventPoints {optional .EEvent event_id = 1 [default = EVENT_ID_NONE];repeated uint32 account_id = 2;}

message CMsgServerGetEventPointsResponse {

message Points {

optional uint32 account_id = 1;

optional uint32 points_total = 2;

optional bool owned = 4;

}

optional .EEvent event_id = 1 [default = EVENT_ID_NONE];repeated .CMsgServerGetEventPointsResponse.Points points = 2;}

message CMsgServerGrantSurveyPermission {

message Survey {

optional uint32 account_id = 1;

optional uint32 question_id = 2;

optional uint32 expire_time = 3;

optional uint64 survey_key = 4;

optional uint64 extra_data = 5;

optional uint64 extra_data_32 = 6;

}

repeated .CMsgServerGrantSurveyPermission.Survey surveys = 1;

}

message CMsgServerGrantSurveyPermissionResponse {

optional uint32 result = 1;

}

message CMsgServerToGCMatchConnectionStats {

message Player {

optional uint32 account_id = 1;

optional fixed32 ip = 2;

optional uint32 avg_ping_ms = 3;

optional float packet_loss = 5;

optional float ping_deviation = 6;

optional uint32 full_resends = 7;

}

optional uint64 match_id = 1;

optional uint32 region_id = 2;

optional uint32 league_id = 3;

repeated .CMsgServerToGCMatchConnectionStats.Player players = 4;

optional uint32 cluster_id = 5;

}

message CMsgServerGCUpdateSpectatorCount {

optional uint32 spectator_count = 1;

}

message CSerializedCombatLog {

message Dictionary {

message DictString {

required uint32 id = 1;

required string value = 2;

}

repeated .CSerializedCombatLog.Dictionary.DictString strings = 1;

}

optional uint32 version = 1;

optional .CSerializedCombatLog.Dictionary dictionary = 2;

repeated .CMsgDOTACombatLogEntry entries = 3;

}

message CMsgServerToGCGetAdditionalEquips {

repeated uint32 account_ids = 1;

}

message CMsgServerToGCGetAdditionalEquipsResponse {

message CUserEquips {

optional uint32 account_id = 1;

repeated .CAdditionalEquipSlot equips = 2;

}

repeated .CMsgServerToGCGetAdditionalEquipsResponse.CUserEquips equips = 1;

}

message CMsgServerToGCGetProfileCard {

repeated uint32 account_ids = 1;

}

message CMsgServerToGCGetProfileCardResponse {

repeated .CMsgDOTAProfileCard cards = 1;

}

message CMsgServerToGCVictoryPredictions {

message Record {

optional uint32 account_id = 1;

optional uint64 item_id = 2;

repeated uint64 item_ids = 5;

}

repeated .CMsgServerToGCVictoryPredictions.Record records = 1;

}

message CMsgSuspiciousActivity {optional uint32 account_id = 1;optional .ESuspiciousActivity activity = 2 [default = k_ESuspiciousActivity_VAC_MultipleInstances];optional sint32 intdata1 = 3;optional sint32 intdata2 = 4;optional uint32 time = 5;}

message CMsgServerToGCRequestStatus {

}

message CMsgServerToGCRequestStatus_Response {

optional uint32 response = 1;

}

message CMsgSignOutAssassinMiniGameInfo {

repeated fixed64 winning_players = 1;

repeated fixed64 losing_players = 2;

repeated fixed64 arcana_owners = 3;

optional bool assassin_won = 4;

optional uint32 target_hero_id = 5;

optional bool contract_completed = 6;

optional float contract_complete_time = 7;

optional bool pa_is_radiant = 8;

}

message CMsgServerToGCGetIngameEventData {optional .EEvent event = 1 [default = EVENT_ID_NONE];}

message CMsgGCToServerIngameEventDataOraclePA {

repeated uint32 target_hero_ids = 1;

}

message CMsgServerToGCKillSummaries {

message KillSummary {

optional uint32 killer_hero_id = 1;

optional uint32 victim_hero_id = 2;

optional uint32 kill_count = 3;

}

optional uint32 ingameevent_id = 1;

repeated .CMsgServerToGCKillSummaries.KillSummary summaries = 2;

}

message CMsgGCToServerPredictionResult {

message Prediction {

enum EResult {

k_eResult_ItemGranted = 1;

k_eResult_Destroyed = 2;

}

optional uint32 item_def = 1;optional uint32 num_correct = 2;optional uint32 num_fails = 3;optional .CMsgGCToServerPredictionResult.Prediction.EResult result = 4 [default = k_eResult_ItemGranted];repeated uint32 granted_item_defs = 6;}

optional uint32 account_id = 1;

optional uint64 match_id = 2;

optional bool correct = 3;

repeated .CMsgGCToServerPredictionResult.Prediction predictions = 4;

}

message CMsgServerToGCLockCharmTrading {

optional uint32 account_id = 1;

optional uint64 item_id = 2;

}

message CMsgSignOutUpdatePlayerChallenge {message Challenge {optional .EEvent event_id = 1 [default = EVENT_ID_NONE];optional uint32 slot_id = 2;optional uint32 sequence_id = 3;optional uint32 progress = 4;optional uint32 challenge_rank = 5;}

optional uint32 account_id = 1;

repeated .CMsgSignOutUpdatePlayerChallenge.Challenge completed = 2;

repeated .CMsgSignOutUpdatePlayerChallenge.Challenge rerolled = 3;

optional uint64 match_id = 4;

optional uint32 hero_id = 5;

}

message CMsgServerToGCRerollPlayerChallenge {

optional uint32 account_id = 1;

optional .CMsgClientToGCRerollPlayerChallenge reroll_msg = 2;

}

message CMsgServerToGCHoldEventPoints {

message HoldRequest {

optional uint32 account_id = 1;

optional uint32 points_held = 2;

optional uint32 premium_held = 3;

}

repeated .CMsgServerToGCHoldEventPoints.HoldRequest holds = 1;optional .EEvent event_id = 2 [default = EVENT_ID_NONE];optional uint64 hold_key = 3;optional uint32 hold_until = 4;} message CMsgSignOutReleaseEventPointHolds {repeated uint32 account_ids = 1;optional .EEvent event_id = 2 [default = EVENT_ID_NONE];optional uint64 hold_key = 3;}

message CMsgSignOutWagerStats {

message Player {

optional uint32 account_id = 1;

optional uint32 winnings = 2;

optional uint32 max_wager = 3;

optional uint32 wager = 4;

}

repeated .CMsgSignOutWagerStats.Player players = 1;optional .EEvent event_id = 2 [default = EVENT_ID_NONE];}

message CMsgSpendWager {

message Player {

optional uint32 account_id = 1;

optional uint32 wager = 2;

optional uint64 wager_token_item_id = 3;

}

repeated .CMsgSpendWager.Player players = 1;optional .EEvent event_id = 2 [default = EVENT_ID_NONE];optional uint32 timestamp = 3;optional uint64 match_id = 4;optional uint64 server_steam_id = 5;}

message CMsgSignOutXPCoins {

message Player {

optional uint32 account_id = 1;

optional uint32 xp_gained = 2;

optional uint32 coins_spent = 3;

optional uint64 wager_token_item_id = 4;

optional uint32 rank_wager = 5;

}

repeated .CMsgSignOutXPCoins.Player players = 1;optional .EEvent event_id = 2 [default = EVENT_ID_NONE];optional uint64 match_id = 3;optional uint32 timestamp = 4;}

message CMsgSignOutCommunityGoalProgress {

message EventGoalIncrement {

optional uint32 event_goal_id = 1;

optional uint32 increment_amount = 2;

}

optional .EEvent event_id = 1 [default = EVENT_ID_NONE];repeated .CMsgSignOutCommunityGoalProgress.EventGoalIncrement event_increments = 2;} message CMsgServerToGCPostMatchTip {optional .EEvent event_id = 1 [default = EVENT_ID_NONE];optional uint64 match_id = 2;optional uint32 tipper_account_id = 3;optional uint32 recipient_account_id = 4;optional uint32 tip_amount = 5;}

message CMsgServerToGCPostMatchTipResponse {

enum Result {

SUCCESS = 0;

FAILURE = 1;

}

optional uint64 match_id = 1;optional uint32 tipper_account_id = 2;optional uint32 recipient_account_id = 3;optional .CMsgServerToGCPostMatchTipResponse.Result result = 4 [default = SUCCESS];}

message CMsgServerToGCCloseCompendiumInGamePredictionVoting {

optional uint64 match_id = 1;

optional uint32 hltv_delay = 2;

}

message CMsgServerToGCCloseCompendiumInGamePredictionVotingResponse {

optional bool result = 1;

}

message CMsgServerToGCCompendiumInGamePredictionResults {

message PredictionResult {

optional uint32 prediction_id = 1;

optional uint32 prediction_value = 2;

optional bool prediction_value_is_mask = 3;

}

optional uint64 match_id = 1;

repeated .CMsgServerToGCCompendiumInGamePredictionResults.PredictionResult results = 2;

optional uint32 league_id = 3;

optional uint32 league_node_id = 4;

}

message CMsgServerToGCCompendiumInGamePredictionResultsResponse {

optional bool result = 1;

}

message CMsgGCToGCCompendiumInGamePredictionResults {

optional .CMsgServerToGCCompendiumInGamePredictionResults results = 1;

}

message CMsgServerToGCMatchPlayerItemPurchaseHistory {

message ItemPurchase {

optional uint32 item = 1;

optional uint32 gold = 2;

optional uint32 net_worth = 3;

optional uint32 game_time = 4;

repeated uint32 inventory_items = 5;

repeated bool talents_skilled = 7;

}

message Player {

optional uint32 player_slot = 1;

optional uint32 account_id = 2;

optional uint32 hero_id = 3;

repeated uint32 allied_hero_ids = 4;

repeated uint32 enemy_hero_ids = 5;

repeated .CMsgServerToGCMatchPlayerItemPurchaseHistory.ItemPurchase item_purchases = 6;

}

optional uint64 match_id = 1;

optional uint32 mmr = 2;

repeated .CMsgServerToGCMatchPlayerItemPurchaseHistory.Player players = 3;

}

message CMsgServerToGCMatchStateHistory {

message PlayerState {

optional uint32 hero_id = 1;

optional uint32 net_worth = 2;

optional uint32 level = 3;

optional uint32 deaths = 4;

optional uint32 respawn_time = 5;

optional bool has_buyback = 6;

optional bool has_aegis = 7;

optional bool has_rapier = 8;

optional uint32 distance = 9;

}

message TeamState {

optional uint32 team = 1;

repeated .CMsgServerToGCMatchStateHistory.PlayerState player_states = 2;

repeated uint32 tower_health_pct = 3;

repeated uint32 barracks_health_pct = 4;

optional uint32 ancient_health_pct = 5;

optional uint32 glyph_cooldown = 6;

optional uint32 kills = 7;

optional uint32 creep_distance_safe = 8;

optional uint32 creep_distance_mid = 9;

optional uint32 creep_distance_off = 10;

}

message MatchState {

optional uint32 game_time = 1;

optional .CMsgServerToGCMatchStateHistory.TeamState radiant_state = 2;

optional .CMsgServerToGCMatchStateHistory.TeamState dire_state = 3;

}

optional uint64 match_id = 1;

optional bool radiant_won = 2;

optional uint32 mmr = 3;

repeated .CMsgServerToGCMatchStateHistory.MatchState match_states = 4;

}

message CMsgServerToGCCavernCrawlIsHeroActive {

optional uint32 event_id = 1;

optional uint32 account_id = 2;

optional uint32 hero_id = 3;

optional bool turbo_mode = 4;

}

message CMsgServerToGCCavernCrawlIsHeroActiveResponse {

message MapResults {

optional uint32 path_id_completed = 1;

optional uint32 room_id_claimed = 2;

}

optional bool result = 1;

optional uint32 potential_winnings = 2;

repeated .CMsgServerToGCCavernCrawlIsHeroActiveResponse.MapResults map_results = 3;

optional uint32 potential_plus_shard_winnings = 4;

}

message CMsgGCtoServerTensorflowInstance {

optional uint32 server_instance = 1;

}

[/SPOILER]

 

[/SPOILER] [/SPOILER] [/QUOTE]

Через нотпад смотреть или просто? 

Нажмите, чтобы раскрыть...

Knopi1

Пользователь

Регистрация: 07.08.2017

Сообщения: 3545

Рейтинг: 3003

Knopi1

Регистрация: 07.08.2017

Сообщения: 3545

Рейтинг: 3003

Автор пустозвон. Создает миллион тем в день ниАчйомpepeshapka.png

Хедшот68

Пользователь

Регистрация: 17.06.2014

Сообщения: 30746

Рейтинг: 17130

Хедшот68

Регистрация: 17.06.2014

Сообщения: 30746

Рейтинг: 17130

Knopi1 сказал(а):

Автор пустозвон. Создает миллион тем в день ниАчйомpepeshapka.png

Нажмите, чтобы раскрыть...

Обоснуй, сегодня кстати моя первая тема

vitasha

Пользователь

Регистрация: 07.07.2014

Сообщения: 405

Рейтинг: 56

vitasha

Регистрация: 07.07.2014

Сообщения: 405

Рейтинг: 56

AgraiL-Pirat сказал(а):
Нажмите, чтобы раскрыть...

там ответ за 6 декабря, лолка

это ответ на абуз дота+ если что

Хедшот68

Пользователь

Регистрация: 17.06.2014

Сообщения: 30746

Рейтинг: 17130

Хедшот68

Регистрация: 17.06.2014

Сообщения: 30746

Рейтинг: 17130

vitasha сказал(а):

там ответ за 6 декабря, лолка

это ответ на абуз дота+ если что

Нажмите, чтобы раскрыть...

Там про компед слова есть но и то чушь какая то