import "networkbasetypes.proto"; import "usercmd.proto"; message CSGOInterpolationInfoPB { optional int32 src_tick = 1 [default = -1]; optional int32 dst_tick = 2 [default = -1]; optional float frac = 3 [default = 0]; } message CSGOInputHistoryEntryPB { optional .CMsgQAngle view_angles = 2; optional int32 render_tick_count = 4; optional float render_tick_fraction = 5; optional int32 player_tick_count = 6; optional float player_tick_fraction = 7; optional .CSGOInterpolationInfoPB cl_interp = 12; optional .CSGOInterpolationInfoPB sv_interp0 = 13; optional .CSGOInterpolationInfoPB sv_interp1 = 14; optional .CSGOInterpolationInfoPB player_interp = 15; optional int32 frame_number = 20; optional int32 target_ent_index = 8 [default = -1]; optional .CMsgVector shoot_position = 3; optional .CMsgVector target_head_pos_check = 9; optional .CMsgVector target_abs_pos_check = 10; optional .CMsgQAngle target_abs_ang_check = 11; } message CSGOUserCmdPB { enum EWeaponDecision { k_eNone = 0; k_ePrimaryAttack = 1; k_eSecondaryAttack = 2; k_eZoom = 3; k_eReload = 4; k_eGrenadeThrow = 5; k_eGrenadeHold = 6; k_eGrenadeHoldThenThrow = 7; } enum EGrenadeStrength { k_eLow = 0; k_eMid = 1; k_eHigh = 2; } optional .CBaseUserCmdPB base = 1; repeated .CSGOInputHistoryEntryPB input_history = 2; optional int32 attack1_start_history_index = 6 [default = -1]; optional int32 attack2_start_history_index = 7 [default = -1]; optional int32 attack3_start_history_index = 8 [default = -1]; optional .CSGOUserCmdPB.EWeaponDecision weapon_decision = 9 [default = k_eNone]; optional int32 weapon_decision_weapon = 10; optional .CSGOUserCmdPB.EGrenadeStrength target_grenade_strength = 11 [default = k_eLow]; }