import "networkbasetypes.proto";
import "cstrike15_gcmessages.proto";

enum ECstrike15UserMessages {
	CS_UM_VGUIMenu = 301;
	CS_UM_Geiger = 302;
	CS_UM_Train = 303;
	CS_UM_HudText = 304;
	CS_UM_SayText = 305;
	CS_UM_SayText2 = 306;
	CS_UM_TextMsg = 307;
	CS_UM_HudMsg = 308;
	CS_UM_ResetHud = 309;
	CS_UM_GameTitle = 310;
	CS_UM_Shake = 312;
	CS_UM_Fade = 313;
	CS_UM_Rumble = 314;
	CS_UM_CloseCaption = 315;
	CS_UM_CloseCaptionDirect = 316;
	CS_UM_SendAudio = 317;
	CS_UM_RawAudio = 318;
	CS_UM_VoiceMask = 319;
	CS_UM_RequestState = 320;
	CS_UM_Damage = 321;
	CS_UM_RadioText = 322;
	CS_UM_HintText = 323;
	CS_UM_KeyHintText = 324;
	CS_UM_ProcessSpottedEntityUpdate = 325;
	CS_UM_ReloadEffect = 326;
	CS_UM_AdjustMoney = 327;
	CS_UM_UpdateTeamMoney = 328;
	CS_UM_StopSpectatorMode = 329;
	CS_UM_KillCam = 330;
	CS_UM_DesiredTimescale = 331;
	CS_UM_CurrentTimescale = 332;
	CS_UM_AchievementEvent = 333;
	CS_UM_MatchEndConditions = 334;
	CS_UM_DisconnectToLobby = 335;
	CS_UM_PlayerStatsUpdate = 336;
	CS_UM_ClientInfo = 339;
	CS_UM_XRankGet = 340;
	CS_UM_XRankUpd = 341;
	CS_UM_CallVoteFailed = 345;
	CS_UM_VoteStart = 346;
	CS_UM_VotePass = 347;
	CS_UM_VoteFailed = 348;
	CS_UM_VoteSetup = 349;
	CS_UM_ServerRankRevealAll = 350;
	CS_UM_SendLastKillerDamageToClient = 351;
	CS_UM_ServerRankUpdate = 352;
	CS_UM_ItemPickup = 353;
	CS_UM_ShowMenu = 354;
	CS_UM_BarTime = 355;
	CS_UM_AmmoDenied = 356;
	CS_UM_MarkAchievement = 357;
	CS_UM_MatchStatsUpdate = 358;
	CS_UM_ItemDrop = 359;
	CS_UM_SendPlayerItemDrops = 361;
	CS_UM_RoundBackupFilenames = 362;
	CS_UM_SendPlayerItemFound = 363;
	CS_UM_ReportHit = 364;
	CS_UM_XpUpdate = 365;
	CS_UM_QuestProgress = 366;
	CS_UM_ScoreLeaderboardData = 367;
	CS_UM_PlayerDecalDigitalSignature = 368;
	CS_UM_WeaponSound = 369;
	CS_UM_UpdateScreenHealthBar = 370;
	CS_UM_EntityOutlineHighlight = 371;
	CS_UM_SSUI = 372;
	CS_UM_SurvivalStats = 373;
	CS_UM_DisconnectToLobby2 = 374;
	CS_UM_EndOfMatchAllPlayersData = 375;
	CS_UM_PostRoundDamageReport = 376;
	CS_UM_RoundEndReportData = 379;
	CS_UM_CurrentRoundOdds = 380;
	CS_UM_DeepStats = 381;
	CS_UM_ShootInfo = 383;
	CS_UM_CounterStrafe = 385;
	CS_UM_DamagePrediction = 386;
	CS_UM_RecurringMissionSchema = 387;
	CS_UM_SendPlayerLoadout = 388;
}

enum ECSUsrMsg_DisconnectToLobby_Action {
	k_ECSUsrMsg_DisconnectToLobby_Action_Default = 0;
	k_ECSUsrMsg_DisconnectToLobby_Action_GoQueue = 1;
}

message CCSUsrMsg_VGUIMenu {
	message Keys {
		optional string name = 1;
		optional string value = 2;
	}

	optional string name = 1;
	optional bool show = 2;
	repeated .CCSUsrMsg_VGUIMenu.Keys keys = 3;
}

message CCSUsrMsg_Geiger {
	optional int32 range = 1;
}

message CCSUsrMsg_Train {
	optional int32 train = 1;
}

message CCSUsrMsg_HudText {
	optional string text = 1;
}

message CCSUsrMsg_HudMsg {
	optional int32 channel = 1;
	optional .CMsgVector2D pos = 2;
	optional .CMsgRGBA clr1 = 3;
	optional .CMsgRGBA clr2 = 4;
	optional int32 effect = 5;
	optional float fade_in_time = 6;
	optional float fade_out_time = 7;
	optional float hold_time = 9;
	optional float fx_time = 10;
	optional string text = 11;
}

message CCSUsrMsg_Shake {
	optional int32 command = 1;
	optional float local_amplitude = 2;
	optional float frequency = 3;
	optional float duration = 4;
}

message CCSUsrMsg_Fade {
	optional int32 duration = 1;
	optional int32 hold_time = 2;
	optional int32 flags = 3;
	optional .CMsgRGBA clr = 4;
}

message CCSUsrMsg_Rumble {
	optional int32 index = 1;
	optional int32 data = 2;
	optional int32 flags = 3;
}

message CCSUsrMsg_CloseCaption {
	optional uint32 hash = 1;
	optional int32 duration = 2;
	optional bool from_player = 3;
	optional string cctoken = 4;
}

message CCSUsrMsg_CloseCaptionDirect {
	optional uint32 hash = 1;
	optional int32 duration = 2;
	optional bool from_player = 3;
}

message CCSUsrMsg_SendAudio {
	optional string radio_sound = 1;
}

message CCSUsrMsg_RawAudio {
	optional int32 pitch = 1;
	optional int32 entidx = 2 [default = -1];
	optional float duration = 3;
	optional string voice_filename = 4;
}

message CCSUsrMsg_VoiceMask {
	message PlayerMask {
		optional int32 game_rules_mask = 1;
		optional int32 ban_masks = 2;
	}

	repeated .CCSUsrMsg_VoiceMask.PlayerMask player_masks = 1;
	optional bool player_mod_enable = 2;
}

message CCSUsrMsg_Damage {
	optional int32 amount = 1;
	optional .CMsgVector inflictor_world_pos = 2;
	optional int32 victim_entindex = 3 [default = -1];
}

message CCSUsrMsg_RadioText {
	optional int32 msg_dst = 1;
	optional int32 client = 2 [default = -1];
	optional string msg_name = 3;
	repeated string params = 4;
}

message CCSUsrMsg_HintText {
	optional string message = 1;
}

message CCSUsrMsg_KeyHintText {
	repeated string messages = 1;
}

message CCSUsrMsg_ProcessSpottedEntityUpdate {
	message SpottedEntityUpdate {
		optional int32 entity_idx = 1 [default = -1];
		optional int32 class_id = 2;
		optional int32 origin_x = 3;
		optional int32 origin_y = 4;
		optional int32 origin_z = 5;
		optional int32 angle_y = 6;
		optional bool defuser = 7;
		optional bool player_has_defuser = 8;
		optional bool player_has_c4 = 9;
	}

	optional bool new_update = 1;
	repeated .CCSUsrMsg_ProcessSpottedEntityUpdate.SpottedEntityUpdate entity_updates = 2;
}

message CCSUsrMsg_SendPlayerItemDrops {
	repeated .CEconItemPreviewDataBlock entity_updates = 1;
}

message CCSUsrMsg_SendPlayerItemFound {
	optional .CEconItemPreviewDataBlock iteminfo = 1;
	optional int32 playerslot = 2 [default = -1];
}

message CCSUsrMsg_ReloadEffect {
	optional int32 entidx = 1 [default = -1];
	optional int32 actanim = 2;
	optional float origin_x = 3;
	optional float origin_y = 4;
	optional float origin_z = 5;
}

message CCSUsrMsg_WeaponSound {
	optional int32 entidx = 1 [default = -1];
	optional float origin_x = 2;
	optional float origin_y = 3;
	optional float origin_z = 4;
	optional string sound = 5;
	optional float game_timestamp = 6;
	optional fixed32 source_soundscapeid = 7;
}

message CCSUsrMsg_UpdateScreenHealthBar {
	optional int32 entidx = 1 [default = -1];
	optional float healthratio_old = 2;
	optional float healthratio_new = 3;
	optional int32 style = 4;
}

message CCSUsrMsg_EntityOutlineHighlight {
	optional int32 entidx = 1 [default = -1];
	optional bool removehighlight = 2;
}

message CCSUsrMsg_AdjustMoney {
	optional int32 amount = 1;
}

message CCSUsrMsg_ReportHit {
	optional float pos_x = 1;
	optional float pos_y = 2;
	optional float timestamp = 4;
	optional float pos_z = 3;
}

message CCSUsrMsg_KillCam {
	optional int32 obs_mode = 1;
	optional int32 first_target = 2 [default = -1];
	optional int32 second_target = 3 [default = -1];
}

message CCSUsrMsg_DesiredTimescale {
	optional float desired_timescale = 1;
	optional float duration_realtime_sec = 2;
	optional int32 interpolator_type = 3;
	optional float start_blend_time = 4;
}

message CCSUsrMsg_CurrentTimescale {
	optional float cur_timescale = 1;
}

message CCSUsrMsg_AchievementEvent {
	optional int32 achievement = 1;
	optional int32 count = 2;
	optional int32 user_id = 3;
}

message CCSUsrMsg_MatchEndConditions {
	optional int32 fraglimit = 1;
	optional int32 mp_maxrounds = 2;
	optional int32 mp_winlimit = 3;
	optional float mp_timelimit = 4;
}

message CCSUsrMsg_PlayerStatsUpdate {
	message Stat {
		optional int32 idx = 1;
		optional int32 delta = 2;
	}

	optional int32 version = 1;
	repeated .CCSUsrMsg_PlayerStatsUpdate.Stat stats = 4;
	optional uint32 ehandle = 5;
	optional int32 crc = 6;
}

message CCSUsrMsg_QuestProgress {
	optional uint32 quest_id = 1;
	optional uint32 normal_points = 2;
	optional uint32 bonus_points = 3;
	optional bool is_event_quest = 4;
}

message CCSUsrMsg_ScoreLeaderboardData {
	optional .ScoreLeaderboardData data = 1;
}

message CCSUsrMsg_PlayerDecalDigitalSignature {
	optional .PlayerDecalDigitalSignature data = 1;
}

message CCSUsrMsg_XRankGet {
	optional int32 mode_idx = 1;
	optional int32 controller = 2;
}

message CCSUsrMsg_XRankUpd {
	optional int32 mode_idx = 1;
	optional int32 controller = 2;
	optional int32 ranking = 3;
}

message CCSUsrMsg_CallVoteFailed {
	optional int32 reason = 1;
	optional int32 time = 2;
}

message CCSUsrMsg_VoteStart {
	optional int32 team = 1;
	optional int32 player_slot = 2 [default = -1];
	optional int32 vote_type = 3;
	optional string disp_str = 4;
	optional string details_str = 5;
	optional string other_team_str = 6;
	optional bool is_yes_no_vote = 7;
	optional int32 player_slot_target = 8 [default = -1];
}

message CCSUsrMsg_VotePass {
	optional int32 team = 1;
	optional int32 vote_type = 2;
	optional string disp_str = 3;
	optional string details_str = 4;
}

message CCSUsrMsg_VoteFailed {
	optional int32 team = 1;
	optional int32 reason = 2;
}

message CCSUsrMsg_VoteSetup {
	repeated string potential_issues = 1;
}

message CCSUsrMsg_SendLastKillerDamageToClient {
	optional int32 num_hits_given = 1;
	optional int32 damage_given = 2;
	optional int32 num_hits_taken = 3;
	optional int32 damage_taken = 4;
	optional int32 actual_damage_given = 5;
	optional int32 actual_damage_taken = 6;
}

message CCSUsrMsg_ServerRankUpdate {
	message RankUpdate {
		optional int32 account_id = 1;
		optional int32 rank_old = 2;
		optional int32 rank_new = 3;
		optional int32 num_wins = 4;
		optional float rank_change = 5;
		optional int32 rank_type_id = 6;
	}

	repeated .CCSUsrMsg_ServerRankUpdate.RankUpdate rank_update = 1;
}

message CCSUsrMsg_XpUpdate {
	optional .CMsgGCCstrike15_v2_GC2ServerNotifyXPRewarded data = 1;
}

message CCSUsrMsg_ItemPickup {
	optional string item = 1;
}

message CCSUsrMsg_ShowMenu {
	optional int32 bits_valid_slots = 1;
	optional int32 display_time = 2;
	optional string menu_string = 3;
}

message CCSUsrMsg_BarTime {
	optional string time = 1;
}

message CCSUsrMsg_AmmoDenied {
	optional int32 ammoidx = 1;
}

message CCSUsrMsg_MarkAchievement {
	optional string achievement = 1;
}

message CCSUsrMsg_MatchStatsUpdate {
	optional string update = 1;
}

message CCSUsrMsg_ItemDrop {
	optional int64 itemid = 1;
	optional bool death = 2;
}

message CCSUsrMsg_RoundBackupFilenames {
	optional int32 count = 1;
	optional int32 index = 2;
	optional string filename = 3;
	optional string nicename = 4;
}

message CCSUsrMsg_SSUI {
	optional bool show = 1;
	optional float start_time = 2;
	optional float end_time = 3;
}

message CCSUsrMsg_SurvivalStats {
	message Fact {
		optional int32 type = 1;
		optional int32 display = 2;
		optional int32 value = 3;
		optional float interestingness = 4;
	}

	message Placement {
		optional uint64 xuid = 1;
		optional int32 teamnumber = 2;
		optional int32 placement = 3;
	}

	message Damage {
		optional uint64 xuid = 1;
		optional int32 to = 2;
		optional int32 to_hits = 3;
		optional int32 from = 4;
		optional int32 from_hits = 5;
	}

	optional uint64 xuid = 1;
	repeated .CCSUsrMsg_SurvivalStats.Fact facts = 2;
	repeated .CCSUsrMsg_SurvivalStats.Placement users = 3;
	repeated .CCSUsrMsg_SurvivalStats.Damage damages = 5;
	optional int32 ticknumber = 4;
}

message CCSUsrMsg_EndOfMatchAllPlayersData {
	option (maximum_size_bytes) = 4096;

	message Accolade {
		optional int32 eaccolade = 1;
		optional float value = 2;
		optional int32 position = 3;
	}

	message PlayerData {
		optional int32 slot = 1 [default = -1];
		optional uint64 xuid = 2;
		optional string name = 3;
		optional int32 teamnumber = 4;
		optional .CCSUsrMsg_EndOfMatchAllPlayersData.Accolade nomination = 5;
		repeated .CEconItemPreviewDataBlock items = 6;
		optional int32 playercolor = 7;
		optional bool isbot = 8;
	}

	repeated .CCSUsrMsg_EndOfMatchAllPlayersData.PlayerData allplayerdata = 1;
	optional int32 scene = 2;
}

message CCSUsrMsg_RoundEndReportData {
	message RerEvent {
		message Victim {
			optional int32 team_number = 1;
			optional int32 playerslot = 2 [default = -1];
			optional uint64 xuid = 3;
			optional int32 color = 4;
			optional bool is_bot = 5;
			optional bool is_dead = 6;
		}

		message Objective {
			optional int32 type = 1;
		}

		message Damage {
			optional int32 other_playerslot = 1 [default = -1];
			optional uint64 other_xuid = 2;
			optional int32 health_removed = 3;
			optional int32 num_hits = 4;
			optional int32 return_health_removed = 5;
			optional int32 return_num_hits = 6;
		}

		optional float timestamp = 1;
		optional int32 terrorist_odds = 2;
		optional int32 ct_alive = 3;
		optional int32 t_alive = 4;
		optional .CCSUsrMsg_RoundEndReportData.RerEvent.Victim victim_data = 5;
		optional .CCSUsrMsg_RoundEndReportData.RerEvent.Objective objective_data = 6;
		repeated .CCSUsrMsg_RoundEndReportData.RerEvent.Damage all_damage_data = 7;
	}

	message InitialConditions {
		optional int32 ct_equip_value = 1;
		optional int32 t_equip_value = 2;
		optional int32 terrorist_odds = 3;
	}

	optional .CCSUsrMsg_RoundEndReportData.InitialConditions init_conditions = 1;
	repeated .CCSUsrMsg_RoundEndReportData.RerEvent all_rer_event_data = 2;
}

message CCSUsrMsg_PostRoundDamageReport {
	optional uint64 other_xuid = 1;
	optional int32 given_kill_type = 2;
	optional int32 given_health_removed = 3;
	optional int32 given_num_hits = 4;
	optional int32 taken_kill_type = 5;
	optional int32 taken_health_removed = 6;
	optional int32 taken_num_hits = 7;
}

message CCSUsrMsg_CurrentRoundOdds {
	optional int32 odds = 1;
}

message CCSUsrMsg_DeepStats {
	optional .CMsgGCCStrike15_ClientDeepStats stats = 1;
}

message CCSUsrMsg_ShootInfo {
	optional int32 frame_number = 1;
	repeated .CMsgTransform hitbox_transforms = 2;
	optional .CMsgVector shoot_pos = 3;
	optional .CMsgQAngle shoot_dir = 4;
}

message CCSUsrMsg_ResetHud {
	optional bool reset = 1;
}

message CCSUsrMsg_GameTitle {
	optional int32 dummy = 1;
}

message CCSUsrMsg_RequestState {
	optional int32 dummy = 1;
}

message CCSUsrMsg_StopSpectatorMode {
	optional int32 dummy = 1;
}

message CCSUsrMsg_DisconnectToLobby {
	optional int32 dummy = 1;
}

message CCSUsrMsg_ClientInfo {
	optional int32 dummy = 1;
}

message CCSUsrMsg_ServerRankRevealAll {
	optional int32 seconds_till_shutdown = 1;
	optional .CMsgGCCStrike15_v2_MatchmakingGC2ServerReserve reservation = 2;
}

message CCSUsrMsgPreMatchSayText {
	optional uint32 account_id = 1;
	optional string text = 2;
	optional bool all_chat = 3;
}

message CCSUsrMsg_CounterStrafe {
	optional int32 press_to_release_ns = 1;
	optional int32 total_keys_down = 2;
}

message CCSUsrMsg_DamagePrediction {
	optional int32 command_num = 1;
	optional int32 pellet_idx = 2;
	optional int32 victim_slot = 3;
	optional int32 victim_starting_health = 4;
	optional int32 victim_damage = 5;
	optional .CMsgVector shoot_pos = 6;
	optional .CMsgQAngle shoot_dir = 7;
	optional .CMsgQAngle aim_punch = 8;
}

message CCSUsrMsg_RecurringMissionSchema {
	optional uint32 period = 1;
	optional bytes mission_schema = 2;
}

message CCSUsrMsg_SendPlayerLoadout {
	option (maximum_size_bytes) = 16384;

	message LoadoutItem {
		optional .CEconItemPreviewDataBlock econ_item = 1;
		optional int32 team = 2;
		optional int32 slot = 3;
	}

	repeated .CCSUsrMsg_SendPlayerLoadout.LoadoutItem loadout = 1;
	optional int32 playerslot = 2 [default = -1];
}
