feat: add github ci

This commit is contained in:
maxime1907 2022-09-24 16:05:33 +02:00
parent a02cb7e1d3
commit 3a1c1471b0
9 changed files with 301 additions and 814 deletions

158
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,158 @@
name: CI
on: [push, pull_request, workflow_dispatch]
jobs:
build:
name: Build
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04]
sourcemod-version: [1.11-dev]
protobuf-version: [v2.5.0]
protobuf-valve-version: [master]
include:
- os: ubuntu-20.04
target-archs: x86,x86_64
sdks: css,csgo
steps:
- name: Install Linux packages
if: runner.os == 'Linux'
run: |
sudo apt update
sudo apt install -yq --no-install-recommends g++-multilib
- name: Set up Python
uses: actions/setup-python@v2
- name: Checkout
uses: actions/checkout@v2
with:
path: extension
- name: Checkout SourceMod
uses: actions/checkout@v2
with:
repository: alliedmodders/sourcemod
ref: ${{ matrix.sourcemod-version }}
path: sourcemod
submodules: recursive
- name: Checkout AMBuild
uses: actions/checkout@v2
with:
repository: alliedmodders/ambuild
path: ambuild
- name: Checkout sm-ext-common
uses: actions/checkout@v2
with:
repository: srcdslab/sm-ext-common
path: sourcemod/extensions/sm-ext-common
- name: Checkout valve protobuf
uses: actions/checkout@v2
with:
repository: SteamDatabase/Protobufs
ref: ${{ matrix.protobuf-valve-version }}
path: protobuf-valve
submodules: recursive
- name: Checkout protobuf
uses: actions/checkout@v2
with:
repository: protocolbuffers/protobuf
ref: ${{ matrix.protobuf-version }}
path: protobuf
submodules: recursive
- name: Install sourcemod dependencies
run: |
bash sourcemod/tools/checkout-deps.sh -m -s ${{ matrix.sdks }}
- name: Install AMBuild
uses: BSFishy/pip-action@v1
with:
packages: ./ambuild
- name: Install protobuf
shell: bash
run: |
export EXTENSION_ROOT_DIR=$(pwd)
cd protobuf
#sh autogen.sh
# Fix because autogen in protobuf 2.5.0 doesnt work anymore
autoreconf -f -i -Wall,no-obsolete
rm -rf autom4te.cache config.h.in~
# Make sure to compile for 32bit with old ABI for std::string compatibility
./configure --prefix=$EXTENSION_ROOT_DIR/protobuf --build=i686-pc-linux-gnu "CFLAGS=-m32 -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++14" "CXXFLAGS=-m32 -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++14" "LDFLAGS=-m32 -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++14" --disable-shared --enable-static
make -j 8
make install
# Compile .proto files to c++
cd ../protobuf-valve
../protobuf/bin/protoc google/protobuf/descriptor.proto --cpp_out=./
../protobuf/bin/protoc csgo/netmessages.proto --cpp_out=./
ls -all
- name: Build
working-directory: extension
shell: bash
env:
BREAKPAD_SYMBOL_SERVER: ${{ secrets.BREAKPAD_SYMBOL_SERVER }}
run: |
mkdir build && cd build
python ../configure.py --enable-optimize --targets=${{ matrix.target-archs }} --sdks=${{ matrix.sdks }}
ambuild
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: ${{ runner.os }}
path: extension/build/package
release:
name: Release
if: startsWith(github.ref, 'refs/tags/')
needs: build
runs-on: ubuntu-latest
steps:
- name: Download artifacts
uses: actions/download-artifact@v2
- name: Package
run: |
version=`echo $GITHUB_REF | sed "s/refs\/tags\///"`
ls -Rall
if [ -d "./Linux/" ]; then
cd ./Linux/
tar -czf ../${{ github.event.repository.name }}-${version}-linux.tar.gz -T <(\ls -1)
cd -
fi
if [ -d "./macOS/" ]; then
cd ./macOS/
tar -czf ../${{ github.event.repository.name }}-${version}-mac.tar.gz -T <(\ls -1)
cd -
fi
if [ -d "./Windows/" ]; then
cd ./Windows/
tar -czf ../${{ github.event.repository.name }}-${version}-windows.tar.gz -T <(\ls -1)
cd -
fi
- name: Release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: '*.tar.gz'
tag: ${{ github.ref }}
file_glob: true

View File

@ -31,11 +31,6 @@ class SDK(object):
WinOnly = ['windows']
WinLinux = ['windows', 'linux']
WinLinuxMac = ['windows', 'linux', 'mac']
CSGO = {
'windows': ['x86'],
'linux': ['x86', 'x86_64'],
'mac': ['x86_64']
}
PossibleSDKs = {
'css': SDK('HL2SDKCSS', '2.css', '6', 'CSS', WinLinuxMac, 'css'),
@ -87,6 +82,8 @@ class ExtensionConfig(object):
self.versionlib = None
self.all_targets = []
self.target_archs = set()
self.protobuf_root = None
self.protobuf_valve_root = None
if builder.options.targets:
@ -185,12 +182,36 @@ class ExtensionConfig(object):
raise Exception('Could not find a source copy of Metamod:Source')
self.mms_root = Normalize(self.mms_root)
# Run protobuf compilation and copy files to corresponding folders
if 'csgo' in self.sdks:
os.chdir("../pb/")
os.chmod('./build_protobuf.sh', 0o755)
subprocess.call("./build_protobuf.sh")
if 'csgo' in sdk_list:
if builder.options.protobuf_valve_path:
self.protobuf_valve_root = builder.options.protobuf_valve_path
else:
self.protobuf_valve_root = ResolveEnvPath('PBVSOURCE110', 'protobuf-valve-2.5.0')
if not self.protobuf_valve_root:
self.protobuf_valve_root = ResolveEnvPath('PBVSOURCE_DEV', 'protobuf-valve-source')
if not self.protobuf_valve_root:
self.protobuf_valve_root = ResolveEnvPath('PBVSOURCE_DEV', 'protobuf-valve-central')
if not self.protobuf_valve_root:
self.protobuf_valve_root = ResolveEnvPath('PBVSOURCE_DEV', 'protobuf-valve')
if not self.protobuf_valve_root or not os.path.isdir(self.protobuf_valve_root):
raise Exception('Could not find a source copy of valve Protobuf')
self.protobuf_valve_root = Normalize(self.protobuf_valve_root)
if builder.options.protobuf_path:
self.protobuf_root = builder.options.protobuf_path
else:
self.protobuf_root = ResolveEnvPath('PBSOURCE110', 'protobuf-2.5.0')
if not self.protobuf_root:
self.protobuf_root = ResolveEnvPath('PBSOURCE_DEV', 'protobuf-source')
if not self.protobuf_root:
self.protobuf_root = ResolveEnvPath('PBSOURCE_DEV', 'protobuf-central')
if not self.protobuf_root:
self.protobuf_root = ResolveEnvPath('PBSOURCE_DEV', 'protobuf')
if not self.protobuf_root or not os.path.isdir(self.protobuf_root):
raise Exception('Could not find a source copy of Protobuf')
self.protobuf_root = Normalize(self.protobuf_root)
def configure(self):
if not set(self.target_archs).issubset(['x86', 'x86_64']):

View File

@ -40,15 +40,16 @@ for cxx in builder.targets:
if sdk.name in ['csgo']:
binary.compiler.cxxincludes += [
os.path.join(builder.sourcePath, 'pb', 'include'),
os.path.join(SM.protobuf_root, 'include'),
os.path.join(SM.protobuf_valve_root),
]
binary.compiler.postlink += [
'-L' + os.path.join(builder.sourcePath, 'pb', 'lib'),
'-L' + os.path.join(SM.protobuf_root, 'lib'),
'-lprotobuf'
]
binary.sources += [
os.path.join(builder.sourcePath, 'pb', 'csgo', 'netmessages.pb.cc'),
os.path.join(SM.protobuf_valve_root, 'csgo', 'netmessages.pb.cc'),
]
binary.compiler.cxxincludes += [

View File

@ -26,6 +26,10 @@ parser.options.add_argument('--mms-path', type=str, dest='mms_path', default=Non
help='Path to Metamod:Source')
parser.options.add_argument('--sm-path', type=str, dest='sm_path', default=None,
help='Path to SourceMod')
parser.options.add_argument('--protobuf-valve-path', type=str, dest='protobuf_valve_path', default=None,
help='Path to valve protobuf')
parser.options.add_argument('--protobuf-path', type=str, dest='protobuf_path', default=None,
help='Path to protobuf')
parser.options.add_argument('--enable-debug', action='store_const', const='1', dest='debug',
help='Enable debugging symbols')
parser.options.add_argument('--enable-optimize', action='store_const', const='1', dest='opt',

View File

@ -38,7 +38,7 @@
#include "ringbuffer.h"
#if SOURCE_ENGINE == SE_CSGO || SOURCE_ENGINE == SE_INSURGENCY
#include "pb/csgo/netmessages.pb.h"
#include "csgo/netmessages.pb.h"
#endif
/**

View File

@ -1,28 +0,0 @@
#!/bin/bash
if [[ -d protobuf-master ]]; then
exit 0;
fi;
# Protouf version used by CSGO
PROTOBUF_VERSION=v2.5.0
git clone https://github.com/protocolbuffers/protobuf.git -b $PROTOBUF_VERSION --recursive protobuf-master
cd protobuf-master
#sh autogen.sh
# Fix because autogen in protobuf 2.5.0 doesnt work anymore
autoreconf -f -i -Wall,no-obsolete
rm -rf autom4te.cache config.h.in~
# Make sure to compile for 32bit with old ABI for std::string compatibility
./configure --prefix=/home/alliedmodders/sourcemod/extensions/sm-ext-voice/pb --build=i686-pc-linux-gnu "CFLAGS=-m32 -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++14" "CXXFLAGS=-m32 -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++14" "LDFLAGS=-m32 -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++14" --disable-shared --enable-static
make -j 8
make install
# Compile .proto files to c++
cd ../csgo
../bin/protoc google/protobuf/descriptor.proto --cpp_out=./
../bin/protoc netmessages.proto --cpp_out=./

View File

@ -1,281 +0,0 @@
package google.protobuf;
option optimize_for = SPEED;
option go_package = "google.golang.org/protobuf/types/descriptorpb";
option java_package = "com.google.protobuf";
option java_outer_classname = "DescriptorProtos";
message FileDescriptorSet {
repeated .google.protobuf.FileDescriptorProto file = 1;
}
message FileDescriptorProto {
optional string name = 1;
optional string package = 2;
repeated string dependency = 3;
repeated int32 public_dependency = 10;
repeated int32 weak_dependency = 11;
repeated .google.protobuf.DescriptorProto message_type = 4;
repeated .google.protobuf.EnumDescriptorProto enum_type = 5;
repeated .google.protobuf.ServiceDescriptorProto service = 6;
repeated .google.protobuf.FieldDescriptorProto extension = 7;
optional .google.protobuf.FileOptions options = 8;
optional .google.protobuf.SourceCodeInfo source_code_info = 9;
optional string syntax = 12;
}
message DescriptorProto {
message ExtensionRange {
optional int32 start = 1;
optional int32 end = 2;
optional .google.protobuf.ExtensionRangeOptions options = 3;
}
message ReservedRange {
optional int32 start = 1;
optional int32 end = 2;
}
optional string name = 1;
repeated .google.protobuf.FieldDescriptorProto field = 2;
repeated .google.protobuf.FieldDescriptorProto extension = 6;
repeated .google.protobuf.DescriptorProto nested_type = 3;
repeated .google.protobuf.EnumDescriptorProto enum_type = 4;
repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;
repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;
optional .google.protobuf.MessageOptions options = 7;
repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;
repeated string reserved_name = 10;
}
message ExtensionRangeOptions {
repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
extensions 1000 to max;
}
message FieldDescriptorProto {
enum Type {
TYPE_DOUBLE = 1;
TYPE_FLOAT = 2;
TYPE_INT64 = 3;
TYPE_UINT64 = 4;
TYPE_INT32 = 5;
TYPE_FIXED64 = 6;
TYPE_FIXED32 = 7;
TYPE_BOOL = 8;
TYPE_STRING = 9;
TYPE_GROUP = 10;
TYPE_MESSAGE = 11;
TYPE_BYTES = 12;
TYPE_UINT32 = 13;
TYPE_ENUM = 14;
TYPE_SFIXED32 = 15;
TYPE_SFIXED64 = 16;
TYPE_SINT32 = 17;
TYPE_SINT64 = 18;
}
enum Label {
LABEL_OPTIONAL = 1;
LABEL_REQUIRED = 2;
LABEL_REPEATED = 3;
}
optional string name = 1;
optional int32 number = 3;
optional .google.protobuf.FieldDescriptorProto.Label label = 4 [default = LABEL_OPTIONAL];
optional .google.protobuf.FieldDescriptorProto.Type type = 5 [default = TYPE_DOUBLE];
optional string type_name = 6;
optional string extendee = 2;
optional string default_value = 7;
optional int32 oneof_index = 9;
optional string json_name = 10;
optional .google.protobuf.FieldOptions options = 8;
optional bool proto3_optional = 17;
}
message OneofDescriptorProto {
optional string name = 1;
optional .google.protobuf.OneofOptions options = 2;
}
message EnumDescriptorProto {
message EnumReservedRange {
optional int32 start = 1;
optional int32 end = 2;
}
optional string name = 1;
repeated .google.protobuf.EnumValueDescriptorProto value = 2;
optional .google.protobuf.EnumOptions options = 3;
repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4;
repeated string reserved_name = 5;
}
message EnumValueDescriptorProto {
optional string name = 1;
optional int32 number = 2;
optional .google.protobuf.EnumValueOptions options = 3;
}
message ServiceDescriptorProto {
optional string name = 1;
repeated .google.protobuf.MethodDescriptorProto method = 2;
optional .google.protobuf.ServiceOptions options = 3;
}
message MethodDescriptorProto {
optional string name = 1;
optional string input_type = 2;
optional string output_type = 3;
optional .google.protobuf.MethodOptions options = 4;
optional bool client_streaming = 5 [default = false];
optional bool server_streaming = 6 [default = false];
}
message FileOptions {
enum OptimizeMode {
SPEED = 1;
CODE_SIZE = 2;
LITE_RUNTIME = 3;
}
optional string java_package = 1;
optional string java_outer_classname = 8;
optional bool java_multiple_files = 10 [default = false];
optional bool java_generate_equals_and_hash = 20 [deprecated = true];
optional bool java_string_check_utf8 = 27 [default = false];
optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];
optional string go_package = 11;
optional bool cc_generic_services = 16 [default = false];
optional bool java_generic_services = 17 [default = false];
optional bool py_generic_services = 18 [default = false];
optional bool php_generic_services = 42 [default = false];
optional bool deprecated = 23 [default = false];
optional bool cc_enable_arenas = 31 [default = true];
optional string objc_class_prefix = 36;
optional string csharp_namespace = 37;
optional string swift_prefix = 39;
optional string php_class_prefix = 40;
optional string php_namespace = 41;
optional string php_metadata_namespace = 44;
optional string ruby_package = 45;
repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
extensions 1000 to max;
}
message MessageOptions {
optional bool message_set_wire_format = 1 [default = false];
optional bool no_standard_descriptor_accessor = 2 [default = false];
optional bool deprecated = 3 [default = false];
optional bool map_entry = 7;
repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
extensions 1000 to max;
}
message FieldOptions {
enum CType {
STRING = 0;
CORD = 1;
STRING_PIECE = 2;
}
enum JSType {
JS_NORMAL = 0;
JS_STRING = 1;
JS_NUMBER = 2;
}
optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];
optional bool packed = 2;
optional .google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL];
optional bool lazy = 5 [default = false];
optional bool deprecated = 3 [default = false];
optional bool weak = 10 [default = false];
repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
extensions 1000 to max;
}
message OneofOptions {
repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
extensions 1000 to max;
}
message EnumOptions {
optional bool allow_alias = 2;
optional bool deprecated = 3 [default = false];
repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
extensions 1000 to max;
}
message EnumValueOptions {
optional bool deprecated = 1 [default = false];
repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
extensions 1000 to max;
}
message ServiceOptions {
optional bool deprecated = 33 [default = false];
repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
extensions 1000 to max;
}
message MethodOptions {
enum IdempotencyLevel {
IDEMPOTENCY_UNKNOWN = 0;
NO_SIDE_EFFECTS = 1;
IDEMPOTENT = 2;
}
optional bool deprecated = 33 [default = false];
optional .google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN];
repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
extensions 1000 to max;
}
message UninterpretedOption {
message NamePart {
required string name_part = 1;
required bool is_extension = 2;
}
repeated .google.protobuf.UninterpretedOption.NamePart name = 2;
optional string identifier_value = 3;
optional uint64 positive_int_value = 4;
optional int64 negative_int_value = 5;
optional double double_value = 6;
optional bytes string_value = 7;
optional string aggregate_value = 8;
}
message SourceCodeInfo {
message Location {
repeated int32 path = 1 [packed = true];
repeated int32 span = 2 [packed = true];
optional string leading_comments = 3;
optional string trailing_comments = 4;
repeated string leading_detached_comments = 6;
}
repeated .google.protobuf.SourceCodeInfo.Location location = 1;
}
message GeneratedCodeInfo {
message Annotation {
repeated int32 path = 1 [packed = true];
optional string source_file = 2;
optional int32 begin = 3;
optional int32 end = 4;
}
repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;
}

View File

@ -1,491 +0,0 @@
import "google/protobuf/descriptor.proto";
option cc_generic_services = false;
enum NET_Messages {
net_NOP = 0;
net_Disconnect = 1;
net_File = 2;
net_SplitScreenUser = 3;
net_Tick = 4;
net_StringCmd = 5;
net_SetConVar = 6;
net_SignonState = 7;
net_PlayerAvatarData = 100;
}
enum CLC_Messages {
clc_ClientInfo = 8;
clc_Move = 9;
clc_VoiceData = 10;
clc_BaselineAck = 11;
clc_ListenEvents = 12;
clc_RespondCvarValue = 13;
clc_FileCRCCheck = 14;
clc_LoadingProgress = 15;
clc_SplitPlayerConnect = 16;
clc_ClientMessage = 17;
clc_CmdKeyValues = 18;
clc_HltvReplay = 20;
}
enum VoiceDataFormat_t {
VOICEDATA_FORMAT_STEAM = 0;
VOICEDATA_FORMAT_ENGINE = 1;
}
enum ESplitScreenMessageType {
option allow_alias = true;
MSG_SPLITSCREEN_ADDUSER = 0;
MSG_SPLITSCREEN_REMOVEUSER = 1;
MSG_SPLITSCREEN_TYPE_BITS = 1;
}
enum SVC_Messages {
svc_ServerInfo = 8;
svc_SendTable = 9;
svc_ClassInfo = 10;
svc_SetPause = 11;
svc_CreateStringTable = 12;
svc_UpdateStringTable = 13;
svc_VoiceInit = 14;
svc_VoiceData = 15;
svc_Print = 16;
svc_Sounds = 17;
svc_SetView = 18;
svc_FixAngle = 19;
svc_CrosshairAngle = 20;
svc_BSPDecal = 21;
svc_SplitScreen = 22;
svc_UserMessage = 23;
svc_EntityMessage = 24;
svc_GameEvent = 25;
svc_PacketEntities = 26;
svc_TempEntities = 27;
svc_Prefetch = 28;
svc_Menu = 29;
svc_GameEventList = 30;
svc_GetCvarValue = 31;
svc_PaintmapData = 33;
svc_CmdKeyValues = 34;
svc_EncryptedData = 35;
svc_HltvReplay = 36;
svc_Broadcast_Command = 38;
}
enum ReplayEventType_t {
REPLAY_EVENT_CANCEL = 0;
REPLAY_EVENT_DEATH = 1;
REPLAY_EVENT_GENERIC = 2;
REPLAY_EVENT_STUCK_NEED_FULL_UPDATE = 3;
}
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 CNETMsg_Tick {
optional uint32 tick = 1;
optional uint32 host_computationtime = 4;
optional uint32 host_computationtime_std_deviation = 5;
optional uint32 host_framestarttime_std_deviation = 6;
optional uint32 hltv_replay_flags = 7;
}
message CNETMsg_StringCmd {
optional string command = 1;
}
message CNETMsg_SignonState {
optional uint32 signon_state = 1;
optional uint32 spawn_count = 2;
optional uint32 num_server_players = 3;
repeated string players_networkids = 4;
optional string map_name = 5;
}
message CMsg_CVars {
message CVar {
optional string name = 1;
optional string value = 2;
optional uint32 dictionary_name = 3;
}
repeated .CMsg_CVars.CVar cvars = 1;
}
message CNETMsg_SetConVar {
optional .CMsg_CVars convars = 1;
}
message CNETMsg_NOP {
}
message CNETMsg_Disconnect {
optional string text = 1;
}
message CNETMsg_File {
optional int32 transfer_id = 1;
optional string file_name = 2;
optional bool is_replay_demo_file = 3;
optional bool deny = 4;
}
message CNETMsg_SplitScreenUser {
optional int32 slot = 1;
}
message CNETMsg_PlayerAvatarData {
optional uint32 accountid = 1;
optional bytes rgb = 2;
}
message CCLCMsg_ClientInfo {
optional fixed32 send_table_crc = 1;
optional uint32 server_count = 2;
optional bool is_hltv = 3;
optional bool is_replay = 4;
optional uint32 friends_id = 5;
optional string friends_name = 6;
repeated fixed32 custom_files = 7;
}
message CCLCMsg_Move {
optional uint32 num_backup_commands = 1;
optional uint32 num_new_commands = 2;
optional bytes data = 3;
}
message CCLCMsg_VoiceData {
optional bytes data = 1;
optional fixed64 xuid = 2;
optional .VoiceDataFormat_t format = 3 [default = VOICEDATA_FORMAT_ENGINE];
optional int32 sequence_bytes = 4;
optional uint32 section_number = 5;
optional uint32 uncompressed_sample_offset = 6;
}
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 int32 file_fraction = 5;
optional bytes md5 = 6;
optional uint32 crc = 7;
optional int32 file_hash_type = 8;
optional int32 file_len = 9;
optional int32 pack_file_id = 10;
optional int32 pack_file_number = 11;
}
message CCLCMsg_LoadingProgress {
optional int32 progress = 1;
}
message CCLCMsg_SplitPlayerConnect {
optional .CMsg_CVars convars = 1;
}
message CCLCMsg_CmdKeyValues {
optional bytes keyvalues = 1;
}
message CSVCMsg_ServerInfo {
optional int32 protocol = 1;
optional int32 server_count = 2;
optional bool is_dedicated = 3;
optional bool is_official_valve_server = 4;
optional bool is_hltv = 5;
optional bool is_replay = 6;
optional bool is_redirecting_to_proxy_relay = 21;
optional int32 c_os = 7;
optional fixed32 map_crc = 8;
optional fixed32 client_crc = 9;
optional fixed32 string_table_crc = 10;
optional int32 max_clients = 11;
optional int32 max_classes = 12;
optional int32 player_slot = 13;
optional float tick_interval = 14;
optional string game_dir = 15;
optional string map_name = 16;
optional string map_group_name = 17;
optional string sky_name = 18;
optional string host_name = 19;
optional uint32 public_ip = 20;
optional uint64 ugc_map_id = 22;
}
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_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_Print {
optional string text = 1;
}
message CSVCMsg_SetPause {
optional bool paused = 1;
}
message CSVCMsg_SetView {
optional int32 entity_index = 1;
}
message CSVCMsg_CreateStringTable {
optional string name = 1;
optional int32 max_entries = 2;
optional int32 num_entries = 3;
optional bool user_data_fixed_size = 4;
optional int32 user_data_size = 5;
optional int32 user_data_size_bits = 6;
optional int32 flags = 7;
optional bytes string_data = 8;
}
message CSVCMsg_UpdateStringTable {
optional int32 table_id = 1;
optional int32 num_changed_entries = 2;
optional bytes string_data = 3;
}
message CSVCMsg_VoiceInit {
optional int32 quality = 1;
optional string codec = 2;
optional int32 version = 3 [default = 0];
}
message CSVCMsg_VoiceData {
optional int32 client = 1;
optional bool proximity = 2;
optional fixed64 xuid = 3;
optional int32 audible_mask = 4;
optional bytes voice_data = 5;
optional bool caster = 6;
optional .VoiceDataFormat_t format = 7 [default = VOICEDATA_FORMAT_ENGINE];
optional int32 sequence_bytes = 8;
optional uint32 section_number = 9;
optional uint32 uncompressed_sample_offset = 10;
}
message CSVCMsg_FixAngle {
optional bool relative = 1;
optional .CMsgQAngle angle = 2;
}
message CSVCMsg_CrosshairAngle {
optional .CMsgQAngle angle = 1;
}
message CSVCMsg_Prefetch {
optional int32 sound_index = 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_UserMessage {
optional int32 msg_type = 1;
optional bytes msg_data = 2;
optional int32 passthrough = 3;
}
message CSVCMsg_PaintmapData {
optional bytes paintmap = 1;
}
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 bytes val_wstring = 9;
}
optional string event_name = 1;
optional int32 eventid = 2;
repeated .CSVCMsg_GameEvent.key_t keys = 3;
optional int32 passthrough = 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_TempEntities {
optional bool reliable = 1;
optional int32 num_entries = 2;
optional bytes entity_data = 3;
}
message CSVCMsg_PacketEntities {
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;
}
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 bool reliable_sound = 1;
repeated .CSVCMsg_Sounds.sounddata_t sounds = 2;
}
message CSVCMsg_EntityMsg {
optional int32 ent_index = 1;
optional int32 class_id = 2;
optional bytes ent_data = 3;
}
message CSVCMsg_CmdKeyValues {
optional bytes keyvalues = 1;
}
message CSVCMsg_EncryptedData {
optional bytes encrypted = 1;
optional int32 key_type = 2;
}
message CSVCMsg_HltvReplay {
optional int32 delay = 1;
optional int32 primary_target = 2;
optional int32 replay_stop_at = 3;
optional int32 replay_start_at = 4;
optional int32 replay_slowdown_begin = 5;
optional int32 replay_slowdown_end = 6;
optional float replay_slowdown_rate = 7;
}
message CCLCMsg_HltvReplay {
optional int32 request = 1;
optional float slowdown_length = 2;
optional float slowdown_rate = 3;
optional int32 primary_target_ent_index = 4;
optional float event_time = 5;
}
message CSVCMsg_Broadcast_Command {
optional string cmd = 1;
}

103
version.rc Normal file
View File

@ -0,0 +1,103 @@
// Microsoft Visual C++ generated resource script.
//
//#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "winres.h"
#include <sourcemod_version.h>
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION SM_VERSION_FILE
PRODUCTVERSION SM_VERSION_FILE
FILEFLAGSMASK 0x17L
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x2L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "000004b0"
BEGIN
VALUE "Comments", "SourceMod Extension"
VALUE "FileDescription", "SourceMod Extension"
VALUE "FileVersion", SM_VERSION_STRING
VALUE "InternalName", "SourceMod Extension"
VALUE "LegalCopyright", "Copyright (c) 2004-2022, AlliedModders LLC"
VALUE "OriginalFilename", BINARY_NAME
VALUE "ProductName", "SourceMod Extension"
VALUE "ProductVersion", SM_VERSION_STRING
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0, 1200
END
END
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""winres.h""\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED