From a9552f247523dab2b2d847df75ed974dd3eac2ff Mon Sep 17 00:00:00 2001 From: Ole Morud Date: Thu, 14 Apr 2022 23:02:16 +0200 Subject: [PATCH] might be correct protobuf schemas --- proto/netmessages.proto | 571 +++++++++++++++++++++++++++++++++++ proto/networkbasetypes.proto | 231 ++++++++++++++ 2 files changed, 802 insertions(+) create mode 100644 proto/netmessages.proto create mode 100644 proto/networkbasetypes.proto diff --git a/proto/netmessages.proto b/proto/netmessages.proto new file mode 100644 index 0000000..c1e11e5 --- /dev/null +++ b/proto/netmessages.proto @@ -0,0 +1,571 @@ +import "networkbasetypes.proto"; + +option cc_generic_services = false; + +enum CLC_Messages { + clc_ClientInfo = 20; + clc_Move = 21; + clc_VoiceData = 22; + clc_BaselineAck = 23; + clc_ListenEvents = 24; + clc_RespondCvarValue = 25; + clc_FileCRCCheck = 26; + clc_LoadingProgress = 27; + clc_SplitPlayerConnect = 28; + clc_ClientMessage = 29; + clc_SplitPlayerDisconnect = 30; + clc_ServerStatus = 31; + clc_ServerPing = 32; + clc_RequestPause = 33; + clc_CmdKeyValues = 34; + clc_RconServerDetails = 35; +} + +enum SVC_Messages { + svc_ServerInfo = 40; + svc_FlattenedSerializer = 41; + svc_ClassInfo = 42; + svc_SetPause = 43; + svc_CreateStringTable = 44; + svc_UpdateStringTable = 45; + svc_VoiceInit = 46; + svc_VoiceData = 47; + svc_Print = 48; + svc_Sounds = 49; + svc_SetView = 50; + svc_ClearAllStringTables = 51; + svc_CmdKeyValues = 52; + svc_BSPDecal = 53; + svc_SplitScreen = 54; + svc_PacketEntities = 55; + svc_Prefetch = 56; + svc_Menu = 57; + svc_GetCvarValue = 58; + svc_StopSound = 59; + svc_PeerList = 60; + svc_PacketReliable = 61; + svc_HLTVStatus = 62; + svc_ServerSteamID = 63; + svc_FullFrameSplit = 70; + svc_RconServerDetails = 71; +} + +enum VoiceDataFormat_t { + VOICEDATA_FORMAT_STEAM = 0; + VOICEDATA_FORMAT_ENGINE = 1; +} + +enum RequestPause_t { + RP_PAUSE = 0; + RP_UNPAUSE = 1; + RP_TOGGLEPAUSE = 2; +} + +enum PrefetchType { + PFT_SOUND = 0; +} + +enum ESplitScreenMessageType { + MSG_SPLITSCREEN_ADDUSER = 0; + MSG_SPLITSCREEN_REMOVEUSER = 1; +} + +enum EQueryCvarValueStatus { + eQueryCvarValueStatus_ValueIntact = 0; + eQueryCvarValueStatus_CvarNotFound = 1; + eQueryCvarValueStatus_NotACvar = 2; + eQueryCvarValueStatus_CvarProtected = 3; +} + +enum DIALOG_TYPE { + DIALOG_MSG = 0; + DIALOG_MENU = 1; + DIALOG_TEXT = 2; + DIALOG_ENTRY = 3; + DIALOG_ASKCONNECT = 4; +} + +enum SVC_Messages_LowFrequency { + svc_dummy = 600; +} + +enum Bidirectional_Messages { + bi_RebroadcastGameEvent = 16; + bi_RebroadcastSource = 17; + bi_GameEvent = 18; +} + +enum Bidirectional_Messages_LowFrequency { + bi_RelayInfo = 700; + bi_RelayPacket = 701; +} + +message CCLCMsg_ClientInfo { + optional fixed32 send_table_crc = 1; + optional uint32 server_count = 2; + optional bool is_hltv = 3; + optional uint32 friends_id = 5; + optional string friends_name = 6; +} + +message CCLCMsg_Move { + optional bytes data = 3; + optional uint32 command_number = 4; + optional uint32 num_commands = 5; +} + +message CMsgVoiceAudio { + optional .VoiceDataFormat_t format = 1 [default = VOICEDATA_FORMAT_STEAM]; + optional bytes voice_data = 2; + optional int32 sequence_bytes = 3; + optional uint32 section_number = 4; + optional uint32 sample_rate = 5; + optional uint32 uncompressed_sample_offset = 6; +} + +message CCLCMsg_VoiceData { + optional .CMsgVoiceAudio audio = 1; + optional fixed64 xuid = 2; + optional uint32 tick = 3; +} + +message CCLCMsg_BaselineAck { + optional int32 baseline_tick = 1; + optional int32 baseline_nr = 2; +} + +message CCLCMsg_ListenEvents { + repeated fixed32 event_mask = 1; +} + +message CCLCMsg_RespondCvarValue { + optional int32 cookie = 1; + optional int32 status_code = 2; + optional string name = 3; + optional string value = 4; +} + +message CCLCMsg_FileCRCCheck { + optional int32 code_path = 1; + optional string path = 2; + optional int32 code_filename = 3; + optional string filename = 4; + optional fixed32 crc = 5; +} + +message CCLCMsg_LoadingProgress { + optional int32 progress = 1; +} + +message CCLCMsg_SplitPlayerConnect { + optional string playername = 1; +} + +message CCLCMsg_ClientMessage { + optional int32 msg_type = 1; + optional bytes data = 2; +} + +message CCLCMsg_SplitPlayerDisconnect { + optional int32 slot = 1; +} + +message CCLCMsg_ServerStatus { + optional bool simplified = 1; +} + +message CCLCMsg_ServerPing { +} + +message CCLCMsg_RequestPause { + optional .RequestPause_t pause_type = 1 [default = RP_PAUSE]; + optional int32 pause_group = 2; +} + +message CCLCMsg_CmdKeyValues { + optional bytes data = 1; +} + +message CCLCMsg_RconServerDetails { + optional bytes token = 1; +} + +message CSVCMsg_ServerInfo { + optional int32 protocol = 1; + optional int32 server_count = 2; + optional bool is_dedicated = 3; + optional bool is_hltv = 4; + optional int32 c_os = 6; + optional int32 max_clients = 10; + optional int32 max_classes = 11; + optional int32 player_slot = 12; + optional float tick_interval = 13; + optional string game_dir = 14; + optional string map_name = 15; + optional string sky_name = 16; + optional string host_name = 17; + optional string addon_name = 18; + optional .CSVCMsg_GameSessionConfiguration game_session_config = 19; + optional bytes game_session_manifest = 20; +} + +message CSVCMsg_ClassInfo { + message class_t { + optional int32 class_id = 1; + optional string data_table_name = 2; + optional string class_name = 3; + } + + optional bool create_on_client = 1; + repeated .CSVCMsg_ClassInfo.class_t classes = 2; +} + +message CSVCMsg_SetPause { + optional bool paused = 1; +} + +message CSVCMsg_VoiceInit { + optional int32 quality = 1; + optional string codec = 2; + optional int32 version = 3 [default = 0]; +} + +message CSVCMsg_Print { + optional string text = 1; +} + +message CSVCMsg_Sounds { + message sounddata_t { + optional sint32 origin_x = 1; + optional sint32 origin_y = 2; + optional sint32 origin_z = 3; + optional uint32 volume = 4; + optional float delay_value = 5; + optional int32 sequence_number = 6; + optional int32 entity_index = 7; + optional int32 channel = 8; + optional int32 pitch = 9; + optional int32 flags = 10; + optional uint32 sound_num = 11; + optional fixed32 sound_num_handle = 12; + optional int32 speaker_entity = 13; + optional int32 random_seed = 14; + optional int32 sound_level = 15; + optional bool is_sentence = 16; + optional bool is_ambient = 17; + optional uint32 guid = 18; + optional fixed64 sound_resource_id = 19; + } + + optional bool reliable_sound = 1; + repeated .CSVCMsg_Sounds.sounddata_t sounds = 2; +} + +message CSVCMsg_Prefetch { + optional int32 sound_index = 1; + optional .PrefetchType resource_type = 2 [default = PFT_SOUND]; +} + +message CSVCMsg_SetView { + optional int32 entity_index = 1; + optional int32 slot = 2; +} + +message CSVCMsg_FixAngle { + optional bool relative = 1; + optional .CMsgQAngle angle = 2; +} + +message CSVCMsg_CrosshairAngle { + optional .CMsgQAngle angle = 1; +} + +message CSVCMsg_BSPDecal { + optional .CMsgVector pos = 1; + optional int32 decal_texture_index = 2; + optional int32 entity_index = 3; + optional int32 model_index = 4; + optional bool low_priority = 5; +} + +message CSVCMsg_SplitScreen { + optional .ESplitScreenMessageType type = 1 [default = MSG_SPLITSCREEN_ADDUSER]; + optional int32 slot = 2; + optional int32 player_index = 3; +} + +message CSVCMsg_GetCvarValue { + optional int32 cookie = 1; + optional string cvar_name = 2; +} + +message CSVCMsg_Menu { + optional int32 dialog_type = 1; + optional bytes menu_key_values = 2; +} + +message CSVCMsg_SendTable { + message sendprop_t { + optional int32 type = 1; + optional string var_name = 2; + optional int32 flags = 3; + optional int32 priority = 4; + optional string dt_name = 5; + optional int32 num_elements = 6; + optional float low_value = 7; + optional float high_value = 8; + optional int32 num_bits = 9; + } + + optional bool is_end = 1; + optional string net_table_name = 2; + optional bool needs_decoder = 3; + repeated .CSVCMsg_SendTable.sendprop_t props = 4; +} + +message CSVCMsg_GameEventList { + message key_t { + optional int32 type = 1; + optional string name = 2; + } + + message descriptor_t { + optional int32 eventid = 1; + optional string name = 2; + repeated .CSVCMsg_GameEventList.key_t keys = 3; + } + + repeated .CSVCMsg_GameEventList.descriptor_t descriptors = 1; +} + +message CSVCMsg_PacketEntities { + message command_queue_info_t { + optional uint32 commands_queued = 1; + optional uint32 command_queue_desired_size = 2; + optional uint32 starved_command_ticks = 3; + optional float time_dilation_percent = 4; + optional uint32 discarded_command_ticks = 5; + } + + optional int32 max_entries = 1; + optional int32 updated_entries = 2; + optional bool is_delta = 3; + optional bool update_baseline = 4; + optional int32 baseline = 5; + optional int32 delta_from = 6; + optional bytes entity_data = 7; + optional bool pending_full_frame = 8; + optional uint32 active_spawngroup_handle = 9; + optional uint32 max_spawngroup_creationsequence = 10; + optional uint32 last_cmd_number = 11; + optional uint32 server_tick = 12; + optional bytes serialized_entities = 13; + optional .CSVCMsg_PacketEntities.command_queue_info_t command_queue_info = 14; +} + +message CSVCMsg_TempEntities { + optional bool reliable = 1; + optional int32 num_entries = 2; + optional bytes entity_data = 3; +} + +message CSVCMsg_CreateStringTable { + optional string name = 1; + optional int32 num_entries = 2; + optional bool user_data_fixed_size = 3; + optional int32 user_data_size = 4; + optional int32 user_data_size_bits = 5; + optional int32 flags = 6; + optional bytes string_data = 7; + optional int32 uncompressed_size = 8; + optional bool data_compressed = 9; +} + +message CSVCMsg_UpdateStringTable { + optional int32 table_id = 1; + optional int32 num_changed_entries = 2; + optional bytes string_data = 3; +} + +message CSVCMsg_VoiceData { + optional .CMsgVoiceAudio audio = 1; + optional int32 client = 2; + optional bool proximity = 3; + optional fixed64 xuid = 4; + optional int32 audible_mask = 5; + optional uint32 tick = 6; +} + +message CSVCMsg_PacketReliable { + optional int32 tick = 1; + optional int32 messagessize = 2; + optional bool state = 3; +} + +message CSVCMsg_FullFrameSplit { + optional int32 tick = 1; + optional int32 section = 2; + optional int32 total = 3; + optional bytes data = 4; +} + +message CSVCMsg_HLTVStatus { + optional string master = 1; + optional int32 clients = 2; + optional int32 slots = 3; + optional int32 proxies = 4; +} + +message CSVCMsg_ServerSteamID { + optional uint64 steam_id = 1; +} + +message CSVCMsg_CmdKeyValues { + optional bytes data = 1; +} + +message CSVCMsg_RconServerDetails { + optional bytes token = 1; + optional string details = 2; +} + +message CMsgIPCAddress { + optional fixed64 computer_guid = 1; + optional uint32 process_id = 2; +} + +message CMsgServerPeer { + optional int32 player_slot = 1; + optional fixed64 steamid = 2; + optional .CMsgIPCAddress ipc = 3; + optional bool they_hear_you = 4; + optional bool you_hear_them = 5; + optional bool is_listenserver_host = 6; +} + +message CSVCMsg_PeerList { + repeated .CMsgServerPeer peer = 1; +} + +message CSVCMsg_ClearAllStringTables { + optional string mapname = 1; +} + +message ProtoFlattenedSerializerField_t { + optional int32 var_type_sym = 1; + optional int32 var_name_sym = 2; + optional int32 bit_count = 3; + optional float low_value = 4; + optional float high_value = 5; + optional int32 encode_flags = 6; + optional int32 field_serializer_name_sym = 7; + optional int32 field_serializer_version = 8; + optional int32 send_node_sym = 9; + optional int32 var_encoder_sym = 10; +} + +message ProtoFlattenedSerializer_t { + optional int32 serializer_name_sym = 1; + optional int32 serializer_version = 2; + repeated int32 fields_index = 3; +} + +message CSVCMsg_FlattenedSerializer { + repeated .ProtoFlattenedSerializer_t serializers = 1; + repeated string symbols = 2; + repeated .ProtoFlattenedSerializerField_t fields = 3; +} + +message CSVCMsg_StopSound { + optional fixed32 guid = 1; +} + +message CBidirMsg_RebroadcastGameEvent { + optional bool posttoserver = 1; + optional int32 buftype = 2; + optional uint32 clientbitcount = 3; + optional uint64 receivingclients = 4; +} + +message CBidirMsg_RebroadcastSource { + optional int32 eventsource = 1; +} + +message SerializedNetAddress_t { + required bytes serializedAddress = 1; +} + +message CBidirMsg_RelayInfo { + enum Operation_t { + RIO_REQUEST_RELAY = 0; + RIO_WILL_RELAY = 1; + RIO_NO_ROUTE = 2; + RIO_REJECT_RELAY = 3; + RIO_ESTABLISH_CONNECTION = 4; + } + + required .CBidirMsg_RelayInfo.Operation_t operation = 1 [default = RIO_REQUEST_RELAY]; + optional .SerializedNetAddress_t serializedTargetAddress = 2; + optional uint32 additionalHops = 3; +} + +message SignedPayload_t { + required bytes payloadData = 1; + required uint32 signature = 2; + required bool bPayloadEncrypted = 3; +} + +message CBidirMsg_RelayPacket { + message SignedDestinationAddress_t { + required .SerializedNetAddress_t serializedAddr = 1; + required uint32 signature = 2; + optional bytes encryptedPayloadKey = 3; + } + + required uint32 prevhopcount = 1; + required .SerializedNetAddress_t originalSender = 2; + required .SignedPayload_t signedPayload = 3; + repeated .CBidirMsg_RelayPacket.SignedDestinationAddress_t recipientList = 4; +} + +message CMsgServerNetworkStats { + message Port { + optional int32 port = 1; + optional string name = 2; + } + + message Player { + optional uint64 steamid = 1; + optional string remote_addr = 2; + optional int32 ping_stddev_ms = 3; + optional int32 ping_avg_ms = 4; + optional float packet_loss_pct = 5; + optional bool is_bot = 6; + } + + optional bool dedicated = 1; + optional int32 cpu_usage = 2; + optional int32 memory_used_mb = 3; + optional int32 memory_free_mb = 4; + optional int32 uptime = 5; + optional int32 spawn_count = 6; + optional int32 num_clients = 8; + optional int32 num_bots = 9; + optional int32 num_spectators = 10; + optional int32 num_tv_relays = 11; + optional float fps = 12; + repeated .CMsgServerNetworkStats.Port ports = 17; + optional float avg_latency_out = 18; + optional float avg_latency_in = 19; + optional float avg_packets_out = 20; + optional float avg_packets_in = 21; + optional float avg_loss_out = 22; + optional float avg_loss_in = 23; + optional float avg_data_out = 24; + optional float avg_data_in = 25; + optional uint64 total_data_in = 26; + optional uint64 total_packets_in = 27; + optional uint64 total_data_out = 28; + optional uint64 total_packets_out = 29; + repeated .CMsgServerNetworkStats.Player players = 30; +} diff --git a/proto/networkbasetypes.proto b/proto/networkbasetypes.proto new file mode 100644 index 0000000..d0cc136 --- /dev/null +++ b/proto/networkbasetypes.proto @@ -0,0 +1,231 @@ +import "network_connection.proto"; + +option cc_generic_services = false; + +enum SignonState_t { + SIGNONSTATE_NONE = 0; + SIGNONSTATE_CHALLENGE = 1; + SIGNONSTATE_CONNECTED = 2; + SIGNONSTATE_NEW = 3; + SIGNONSTATE_PRESPAWN = 4; + SIGNONSTATE_SPAWN = 5; + SIGNONSTATE_FULL = 6; + SIGNONSTATE_CHANGELEVEL = 7; +} + +enum NET_Messages { + net_NOP = 0; + net_Disconnect = 1; + net_SplitScreenUser = 3; + net_Tick = 4; + net_StringCmd = 5; + net_SetConVar = 6; + net_SignonState = 7; + net_SpawnGroup_Load = 8; + net_SpawnGroup_ManifestUpdate = 9; + net_SpawnGroup_SetCreationTick = 11; + net_SpawnGroup_Unload = 12; + net_SpawnGroup_LoadCompleted = 13; +} + +enum SpawnGroupFlags_t { + SPAWN_GROUP_LOAD_ENTITIES_FROM_SAVE = 1; + SPAWN_GROUP_DONT_SPAWN_ENTITIES = 2; + SPAWN_GROUP_SYNCHRONOUS_SPAWN = 4; + SPAWN_GROUP_IS_INITIAL_SPAWN_GROUP = 8; + SPAWN_GROUP_CREATE_CLIENT_ONLY_ENTITIES = 16; + SPAWN_GROUP_BLOCK_UNTIL_LOADED = 64; + SPAWN_GROUP_LOAD_STREAMING_DATA = 128; + SPAWN_GROUP_CREATE_NEW_SCENE_WORLD = 256; +} + +message CMsgVector { + optional float x = 1; + optional float y = 2; + optional float z = 3; +} + +message CMsgVector2D { + optional float x = 1; + optional float y = 2; +} + +message CMsgQAngle { + optional float x = 1; + optional float y = 2; + optional float z = 3; +} + +message CMsgRGBA { + optional int32 r = 1; + optional int32 g = 2; + optional int32 b = 3; + optional int32 a = 4; +} + +message CMsgPlayerInfo { + optional string name = 1; + optional fixed64 xuid = 2; + optional int32 userid = 3; + optional fixed64 steamid = 4; + optional bool fakeplayer = 5; + optional bool ishltv = 6; +} + +message CEntityMsg { + optional uint32 target_entity = 1; +} + +message CMsg_CVars { + message CVar { + optional string name = 1; + optional string value = 2; + } + + repeated .CMsg_CVars.CVar cvars = 1; +} + +message CNETMsg_NOP { +} + +message CNETMsg_SplitScreenUser { + optional int32 slot = 1; +} + +message CNETMsg_Disconnect { + optional .ENetworkDisconnectionReason reason = 2 [default = NETWORK_DISCONNECT_INVALID]; +} + +message CNETMsg_Tick { + optional uint32 tick = 1; + optional uint32 host_frametime = 2; + optional uint32 host_frametime_std_deviation = 3; + optional uint32 host_computationtime = 4; + optional uint32 host_computationtime_std_deviation = 5; + optional uint32 host_framestarttime_std_deviation = 6; + optional uint32 host_loss = 7; + optional uint32 host_unfiltered_frametime = 8; +} + +message CNETMsg_StringCmd { + optional string command = 1; +} + +message CNETMsg_SetConVar { + optional .CMsg_CVars convars = 1; +} + +message CNETMsg_SignonState { + optional .SignonState_t signon_state = 1 [default = SIGNONSTATE_NONE]; + optional uint32 spawn_count = 2; + optional uint32 num_server_players = 3; + repeated string players_networkids = 4; + optional string map_name = 5; + optional string addons = 6; +} + +message CSVCMsg_GameEvent { + message key_t { + optional int32 type = 1; + optional string val_string = 2; + optional float val_float = 3; + optional int32 val_long = 4; + optional int32 val_short = 5; + optional int32 val_byte = 6; + optional bool val_bool = 7; + optional uint64 val_uint64 = 8; + } + + optional string event_name = 1; + optional int32 eventid = 2; + repeated .CSVCMsg_GameEvent.key_t keys = 3; +} + +message CSVCMsgList_GameEvents { + message event_t { + optional int32 tick = 1; + optional .CSVCMsg_GameEvent event = 2; + } + + repeated .CSVCMsgList_GameEvents.event_t events = 1; +} + +message CSVCMsg_UserMessage { + optional int32 msg_type = 1; + optional bytes msg_data = 2; +} + +message CSVCMsgList_UserMessages { + message usermsg_t { + optional int32 tick = 1; + optional .CSVCMsg_UserMessage msg = 2; + } + + repeated .CSVCMsgList_UserMessages.usermsg_t usermsgs = 1; +} + +message CNETMsg_SpawnGroup_Load { + optional string worldname = 1; + optional string entitylumpname = 2; + optional string entityfiltername = 3; + optional uint32 spawngrouphandle = 4; + optional uint32 spawngroupownerhandle = 5; + optional .CMsgVector world_offset_pos = 6; + optional .CMsgQAngle world_offset_angle = 7; + optional bytes spawngroupmanifest = 8; + optional uint32 flags = 9; + optional int32 tickcount = 10; + optional bool manifestincomplete = 11; + optional string localnamefixup = 12; + optional string parentnamefixup = 13; + optional int32 manifestloadpriority = 14; + optional uint32 worldgroupid = 15; + optional uint32 creationsequence = 16; + optional string savegamefilename = 17; + optional uint32 spawngroupparenthandle = 18; + optional bool leveltransition = 19; +} + +message CNETMsg_SpawnGroup_ManifestUpdate { + optional uint32 spawngrouphandle = 1; + optional bytes spawngroupmanifest = 2; + optional bool manifestincomplete = 3; +} + +message CNETMsg_SpawnGroup_SetCreationTick { + optional uint32 spawngrouphandle = 1; + optional int32 tickcount = 2; + optional uint32 creationsequence = 3; +} + +message CNETMsg_SpawnGroup_Unload { + optional uint32 spawngrouphandle = 1; + optional uint32 flags = 2; + optional int32 tickcount = 3; +} + +message CNETMsg_SpawnGroup_LoadCompleted { + optional uint32 spawngrouphandle = 1; +} + +message CSVCMsg_GameSessionConfiguration { + optional bool is_multiplayer = 1; + optional bool is_loadsavegame = 2; + optional bool is_background_map = 3; + optional bool is_headless = 4; + optional uint32 min_client_limit = 5; + optional uint32 max_client_limit = 6; + optional uint32 max_clients = 7; + optional fixed32 tick_interval = 8; + optional string hostname = 9; + optional string savegamename = 10; + optional string s1_mapname = 11; + optional string gamemode = 12; + optional string server_ip_address = 13; + optional bytes data = 14; + optional bool is_localonly = 15; + optional bool no_steam_server = 19; + optional bool is_transition = 16; + optional string previouslevel = 17; + optional string landmarkname = 18; +}