diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..2b942e8
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,162 @@
+name: build
+
+on:
+ push:
+ branches:
+ - master
+ paths-ignore:
+ - LICENSE
+ - README.md
+ pull_request:
+ paths-ignore:
+ - LICENSE
+ - README.md
+ schedule:
+ - cron: '30 03 01 */3 *' # Artifacts expire every 3 months
+
+jobs:
+ build:
+ name: build with sm${{ matrix.sm_version }} on ${{ matrix.os_short }}
+ runs-on: ${{ matrix.os }}
+ strategy:
+ fail-fast: false
+ matrix:
+ os:
+ - ubuntu-latest
+ - windows-latest
+
+ sm_version:
+ - "1.10"
+
+ mm_version:
+ - "1.10"
+
+ include:
+ - mm_version: "1.10"
+ mm_branch: "1.10-dev"
+
+ - sm_version: "1.10"
+ sm_branch: "1.10-dev"
+
+ - os: ubuntu-latest
+ os_short: linux
+
+ - os: windows-latest
+ os_short: win
+
+ steps:
+ - name: Prepare env
+ shell: bash
+ run: |
+ echo "GITHUB_SHA_SHORT=${GITHUB_SHA::7}" >> $GITHUB_ENV
+
+ - name: Install (Linux)
+ if: runner.os == 'Linux'
+ run: |
+ sudo dpkg --add-architecture i386
+ sudo apt-get update
+ sudo apt-get install -y clang g++-multilib
+ echo "CC=clang" >> $GITHUB_ENV
+ echo "CXX=clang++" >> $GITHUB_ENV
+
+ - name: Add msbuild to PATH (Windows)
+ if: runner.os == 'Windows'
+ uses: microsoft/setup-msbuild@v1.0.2
+
+ - name: Install (Windows)
+ if: runner.os == 'Windows'
+ shell: cmd
+ run: |
+ :: See https://github.com/microsoft/vswhere/wiki/Find-VC
+ for /f "usebackq delims=*" %%i in (`vswhere -latest -property installationPath`) do (
+ call "%%i"\Common7\Tools\vsdevcmd.bat -arch=x86 -host_arch=x64
+ )
+
+ :: Loop over all environment variables and make them global.
+ for /f "delims== tokens=1,2" %%a in ('set') do (
+ echo>>"%GITHUB_ENV%" %%a=%%b
+ )
+
+ - name: Checking out SourceMod
+ uses: actions/checkout@v2
+ with:
+ repository: alliedmodders/sourcemod
+ ref: ${{ matrix.sm_branch }}
+ path: sourcemod-${{ matrix.sm_version }}
+ submodules: recursive
+
+ - name: Checking out MM:Source
+ uses: actions/checkout@v2
+ with:
+ repository: alliedmodders/metamod-source
+ ref: ${{ matrix.mm_branch }}
+ path: metamod-${{ matrix.mm_version }}
+
+ - name: Checking out AMBuild
+ uses: actions/checkout@v2
+ with:
+ repository: alliedmodders/ambuild
+ path: ambuild
+
+ - name: Setting up Python
+ uses: actions/setup-python@v2
+ with:
+ python-version: '3.x'
+
+ - name: Setting up ambuild
+ working-directory: ambuild
+ run: python setup.py install
+
+ - name: Checking out hl2sdk-l4d2
+ uses: actions/checkout@v2
+ with:
+ repository: alliedmodders/hl2sdk
+ ref: l4d2
+ path: hl2sdk-l4d2
+
+ - name: Checking out hl2sdk-l4d
+ uses: actions/checkout@v2
+ with:
+ repository: alliedmodders/hl2sdk
+ ref: l4d
+ path: hl2sdk-l4d
+
+ - name: Checking out hl2sdk-css
+ uses: actions/checkout@v2
+ with:
+ repository: alliedmodders/hl2sdk
+ ref: css
+ path: hl2sdk-css
+
+ - name: Checking out hl2sdk-tf2
+ uses: actions/checkout@v2
+ with:
+ repository: alliedmodders/hl2sdk
+ ref: tf2
+ path: hl2sdk-tf2
+
+ - name: Checking out hl2sdk-csgo
+ uses: actions/checkout@v2
+ with:
+ repository: alliedmodders/hl2sdk
+ ref: csgo
+ path: hl2sdk-csgo
+
+ - name: Checking out own repository
+ uses: actions/checkout@v2
+ with:
+ path: cleaner
+
+ - name: Compiling Cleaner files
+ working-directory: cleaner
+ run: |
+ mkdir build
+ cd build
+ python ../configure.py --enable-optimize --sm-path="${{ github.workspace }}/sourcemod-${{ matrix.sm_version }}" --mms-path="${{ github.workspace }}/metamod-${{ matrix.mm_version }}"
+ ambuild
+
+ - name: Uploading package
+ uses: actions/upload-artifact@v2
+ with:
+ name: cleaner-sm${{ matrix.sm_version }}-${{ matrix.os_short }}-${{ env.GITHUB_SHA_SHORT }}
+ path: cleaner/build/package
diff --git a/AMBuildScript b/AMBuildScript
new file mode 100644
index 0000000..56b2535
--- /dev/null
+++ b/AMBuildScript
@@ -0,0 +1,499 @@
+import os
+import enum
+
+from typing import List
+
+
+class Platform(str, enum.Enum):
+ """Aliases for target platform from AMB2 builder"""
+ WINDOWS = 'win'
+ LINUX = 'linux'
+ MAC = 'mac'
+
+ def __str__(self):
+ return self.name
+
+ @classmethod
+ def get(cls, name: str):
+ return cls[name.upper()]
+
+
+class SourceEngine(enum.IntEnum):
+ """Source Engine
+
+ Different games uses different Source Engine versions
+ If you you want make compatible Extension with more than one SE
+ you should use this codes to split engine-specific code
+
+ Example:
+
+ .. code-block:: cpp
+
+ // SOURCE_ENGINE passed builder
+
+ #if SOURCE_ENGINE >= SE_LEFT4DEAD2
+ // Here you place code for Left4Dead2 or newer
+ #else
+ // Here older
+ #endif
+
+ """
+ TF2 = 11
+ LEFT4DEAD = 12
+ LEFT4DEAD2 = 15
+ CSS = 6
+ CSGO = 21
+
+ def make_define(self):
+ return f'SE_{self.name}={self.value}'
+
+ @property
+ def code(self):
+ return self.value
+
+ @classmethod
+ def all_defines(cls):
+ return [se.make_define() for se in cls.__members__.values()]
+
+
+class SDK:
+ def __init__(
+ self,
+ short_name: str,
+ envvar: str,
+ engine: SourceEngine,
+ platforms: List[Platform],
+ ):
+ self.folder = 'hl2sdk-' + short_name
+ self.envvar = envvar
+ self.engine = engine
+ self.platforms = platforms
+ self.short_name = short_name
+ self.path = None # Actual path
+
+ def __repr__(self):
+ return f'SDK(n:{self.short_name}, p:{[str(p) for p in self.platforms]})'
+
+
+WinOnly = [Platform.WINDOWS]
+WinLinux = [Platform.WINDOWS, Platform.LINUX]
+WinLinuxMac = WinLinux + [Platform.MAC]
+
+PossibleSDKs = [
+ SDK('tf2', 'HL2SDKTF2', SourceEngine.TF2, WinLinuxMac),
+ SDK('l4d', 'HL2SDKL4D', SourceEngine.LEFT4DEAD, WinLinuxMac),
+ SDK('l4d2', 'HL2SDKL4D2', SourceEngine.LEFT4DEAD2, WinLinuxMac),
+ SDK('csgo', 'HL2SDKCSGO', SourceEngine.CSGO, WinLinuxMac),
+ SDK('css', 'HL2SDKCSS', SourceEngine.CSS, WinLinuxMac),
+]
+
+
+def ResolveEnvPath(env, folder):
+ if env in os.environ:
+ path = os.environ[env]
+ if os.path.isdir(path):
+ return path
+ return None
+
+ head = os.getcwd()
+ oldhead = None
+ while head != None and head != oldhead:
+ path = os.path.join(head, folder)
+ if os.path.isdir(path):
+ return path
+ oldhead = head
+ head, tail = os.path.split(head)
+
+ return None
+
+
+def Normalize(path):
+ return os.path.abspath(os.path.normpath(path))
+
+
+class BuildInfo:
+ def __init__(self, builder):
+ self.builder = builder
+ self.sdks = {}
+ self.binaries = []
+ self.extensions = []
+ self.generated_headers = None
+ self.mms_root = None
+ self.sm_root = None
+
+ @property
+ def tag(self):
+ if self.builder.options.debug == '1':
+ return 'Debug'
+ return 'Release'
+
+ def detectSDKs(self):
+ sdk_list = self.builder.options.sdks.split(',')
+ use_all = sdk_list[0] == 'all'
+ use_present = sdk_list[0] == 'present'
+
+ target_platform = Platform.get(self.builder.target_platform)
+ for sdk in PossibleSDKs:
+ if target_platform not in sdk.platforms:
+ continue
+
+ if self.builder.options.hl2sdk_root:
+ sdk_path = os.path.join(self.builder.options.hl2sdk_root, sdk.folder)
+ else:
+ sdk_path = ResolveEnvPath(sdk.envvar, sdk.folder)
+
+ if sdk_path is None or not os.path.isdir(sdk_path):
+ if use_all or sdk.short_name in sdk_list:
+ raise RuntimeError('Could not find a valid path for {0}'.format(sdk.envvar))
+ continue
+
+ if use_all or use_present or sdk.short_name in sdk_list:
+ sdk.path = Normalize(sdk_path)
+ self.sdks[sdk.short_name] = sdk
+
+ if len(self.sdks) < 1:
+ raise RuntimeError('At least one SDK must be available.')
+
+ if self.builder.options.sm_path:
+ self.sm_root = self.builder.options.sm_path
+ else:
+ self.sm_root = ResolveEnvPath('SOURCEMOD18', 'sourcemod-1.8')
+ if not self.sm_root:
+ self.sm_root = ResolveEnvPath('SOURCEMOD', 'sourcemod')
+ if not self.sm_root:
+ self.sm_root = ResolveEnvPath('SOURCEMOD_DEV', 'sourcemod-central')
+
+ if not self.sm_root or not os.path.isdir(self.sm_root):
+ raise Exception('Could not find a source copy of SourceMod')
+ self.sm_root = Normalize(self.sm_root)
+
+ if self.builder.options.mms_path:
+ self.mms_root = self.builder.options.mms_path
+ else:
+ self.mms_root = ResolveEnvPath('MMSOURCE110', 'mmsource-1.10')
+ if not self.mms_root:
+ self.mms_root = ResolveEnvPath('MMSOURCE', 'metamod-source')
+ if not self.mms_root:
+ self.mms_root = ResolveEnvPath('MMSOURCE_DEV', 'mmsource-central')
+
+ if not self.mms_root or not os.path.isdir(self.mms_root):
+ raise Exception('Could not find a source copy of Metamod:Source')
+ self.mms_root = Normalize(self.mms_root)
+
+ def configure(self):
+ cxx = self.builder.DetectCompilers()
+
+ if cxx.like('gcc'):
+ self.configure_gcc(cxx)
+ elif cxx.vendor == 'msvc':
+ self.configure_msvc(cxx)
+
+ # Optimizaiton
+ if self.builder.options.opt == '1':
+ cxx.defines += ['NDEBUG']
+
+ # Debugging
+ if self.builder.options.debug == '1':
+ cxx.defines += ['DEBUG', '_DEBUG']
+
+ # Platform-specifics
+ if self.builder.target_platform == 'linux':
+ self.configure_linux(cxx)
+ elif self.builder.target_platform == 'mac':
+ self.configure_mac(cxx)
+ elif self.builder.target_platform == 'windows':
+ self.configure_windows(cxx)
+
+ # Finish up.
+ cxx.includes += [
+ os.path.join(self.sm_root, 'public'),
+ ]
+
+ def configure_gcc(self, cxx):
+ cxx.defines += [
+ 'stricmp=strcasecmp',
+ '_stricmp=strcasecmp',
+ '_snprintf=snprintf',
+ '_vsnprintf=vsnprintf',
+ 'HAVE_STDINT_H',
+ 'HAVE_STRING_H',
+ 'GNUC',
+ ]
+ cxx.cflags += [
+ '-pipe',
+ '-fno-strict-aliasing',
+ '-Wall',
+ '-Werror',
+ '-Wno-unused',
+ '-Wno-switch',
+ '-Wno-array-bounds',
+ '-msse',
+ '-m32',
+ '-fvisibility=hidden',
+ ]
+ cxx.cxxflags += [
+ '-std=c++14',
+ '-fno-exceptions',
+ '-fno-threadsafe-statics',
+ '-Wno-non-virtual-dtor',
+ '-Wno-overloaded-virtual',
+ '-fvisibility-inlines-hidden',
+ ]
+ cxx.linkflags += ['-m32']
+
+ have_gcc = cxx.vendor == 'gcc'
+ have_clang = cxx.vendor == 'clang'
+ if cxx.version >= 'clang-3.9' or cxx.version >= 'apple-clang-10.0':
+ cxx.cxxflags += ['-Wno-expansion-to-defined']
+ if cxx.version >= 'clang-3.6':
+ cxx.cxxflags += ['-Wno-inconsistent-missing-override']
+ if have_clang or (cxx.version >= 'gcc-4.6'):
+ cxx.cflags += ['-Wno-narrowing']
+ if have_clang or (cxx.version >= 'gcc-4.7'):
+ cxx.cxxflags += ['-Wno-delete-non-virtual-dtor']
+ if cxx.version >= 'gcc-4.8':
+ cxx.cflags += ['-Wno-unused-result']
+ if cxx.version >= 'gcc-8.0':
+ cxx.cxxflags += ['-Wno-class-memaccess']
+
+ if have_clang:
+ cxx.cxxflags += ['-Wno-implicit-exception-spec-mismatch']
+ if cxx.version >= 'apple-clang-5.1' or cxx.version >= 'clang-3.4':
+ cxx.cxxflags += ['-Wno-deprecated-register']
+ else:
+ cxx.cxxflags += ['-Wno-deprecated']
+ cxx.cflags += ['-Wno-sometimes-uninitialized']
+
+ # Work around SDK warnings.
+ if cxx.version >= 'clang-10.0':
+ cxx.cflags += [
+ '-Wno-implicit-int-float-conversion',
+ '-Wno-tautological-overlap-compare',
+ ]
+
+ if have_gcc:
+ cxx.cflags += ['-mfpmath=sse']
+
+ if self.builder.options.opt == '1':
+ cxx.cflags += ['-O3']
+
+ def configure_msvc(self, cxx):
+ if self.builder.options.debug == '1':
+ cxx.cflags += ['/MTd']
+ cxx.linkflags += ['/NODEFAULTLIB:libcmt']
+ else:
+ cxx.cflags += ['/MT']
+ cxx.defines += [
+ '_CRT_SECURE_NO_DEPRECATE',
+ '_CRT_SECURE_NO_WARNINGS',
+ '_CRT_NONSTDC_NO_DEPRECATE',
+ '_ITERATOR_DEBUG_LEVEL=0',
+ ]
+ cxx.cflags += [
+ '/W3',
+ ]
+ cxx.cxxflags += [
+ '/EHsc',
+ '/GR-',
+ '/TP',
+ ]
+ cxx.linkflags += [
+ '/MACHINE:X86',
+ 'kernel32.lib',
+ 'user32.lib',
+ 'gdi32.lib',
+ 'winspool.lib',
+ 'comdlg32.lib',
+ 'advapi32.lib',
+ 'shell32.lib',
+ 'ole32.lib',
+ 'oleaut32.lib',
+ 'uuid.lib',
+ 'odbc32.lib',
+ 'odbccp32.lib',
+ ]
+
+ if self.builder.options.opt == '1':
+ cxx.cflags += ['/Ox', '/Zo']
+ cxx.linkflags += ['/OPT:ICF', '/OPT:REF']
+
+ if self.builder.options.debug == '1':
+ cxx.cflags += ['/Od', '/RTC1']
+
+ # This needs to be after our optimization flags which could otherwise disable it.
+ # Don't omit the frame pointer.
+ cxx.cflags += ['/Oy-']
+
+ def configure_linux(self, cxx):
+ cxx.defines += ['_LINUX', 'POSIX']
+ cxx.linkflags += ['-lm']
+ if cxx.vendor == 'gcc':
+ cxx.linkflags += ['-static-libgcc']
+ elif cxx.vendor == 'clang':
+ cxx.linkflags += ['-lgcc_eh']
+
+ def configure_mac(self, cxx):
+ cxx.defines += ['OSX', '_OSX', 'POSIX']
+ cxx.cflags += ['-mmacosx-version-min=10.5']
+ cxx.linkflags += [
+ '-mmacosx-version-min=10.5',
+ '-arch', 'i386',
+ '-lstdc++',
+ '-stdlib=libc++',
+ ]
+ cxx.cxxflags += ['-stdlib=libc++']
+
+ def configure_windows(self, cxx):
+ cxx.defines += ['WIN32', '_WINDOWS']
+
+ def ConfigureForExtension(self, context, compiler):
+ compiler.cxxincludes += [
+ os.path.join(context.currentSourcePath),
+ os.path.join(self.sm_root, 'public'),
+ os.path.join(self.sm_root, 'public', 'extensions'),
+ os.path.join(self.sm_root, 'sourcepawn', 'include'),
+ os.path.join(self.sm_root, 'public', 'amtl', 'amtl'),
+ os.path.join(self.sm_root, 'public', 'amtl'),
+ ]
+ return compiler
+
+ def ConfigureForHL2(self, binary, sdk: SDK):
+ compiler = binary.compiler
+
+ compiler.cxxincludes += [
+ os.path.join(self.mms_root, 'core'),
+ os.path.join(self.mms_root, 'core', 'sourcehook'),
+ ]
+
+ compiler.defines += SourceEngine.all_defines()
+
+ paths = [
+ ['public'],
+ ['public', 'engine'],
+ ['public', 'mathlib'],
+ ['public', 'vstdlib'],
+ ['public', 'tier0'],
+ ['public', 'tier1'],
+ ['public', 'game', 'server'],
+ ['public', 'toolframework'],
+ ['game', 'shared'],
+ ['common']
+ ]
+
+ compiler.defines += [f'SOURCE_ENGINE={sdk.engine.code}']
+
+ if compiler.like('msvc'):
+ compiler.defines += ['COMPILER_MSVC', 'COMPILER_MSVC32']
+ else:
+ compiler.defines += ['COMPILER_GCC']
+
+ if sdk.short_name in ['css', 'hl2dm', 'dods', 'sdk2013', 'bms', 'tf2', 'l4d', 'nucleardawn', 'l4d2', 'dota']:
+ if self.builder.target_platform in ['linux', 'mac']:
+ compiler.defines += ['NO_HOOK_MALLOC', 'NO_MALLOC_OVERRIDE']
+
+ if sdk.short_name == 'csgo' and self.builder.target_platform == 'linux':
+ compiler.linkflags += ['-lstdc++']
+
+ # For everything after Swarm, this needs to be defined for entity networking
+ # to work properly with sendprop value changes.
+ if sdk.short_name in ['blade', 'insurgency', 'doi', 'csgo']:
+ compiler.defines += ['NETWORK_VARS_ENABLED']
+
+ for path in paths:
+ compiler.cxxincludes += [os.path.join(sdk.path, *path)]
+
+ if self.builder.target_platform == 'linux':
+ if sdk.short_name == 'episode1':
+ lib_folder = os.path.join(sdk.path, 'linux_sdk')
+ elif sdk.short_name in ['sdk2013', 'bms']:
+ lib_folder = os.path.join(sdk.path, 'lib', 'public', 'linux32')
+ else:
+ lib_folder = os.path.join(sdk.path, 'lib', 'linux')
+ elif self.builder.target_platform == 'mac':
+ if sdk.short_name in ['sdk2013', 'bms']:
+ lib_folder = os.path.join(sdk.path, 'lib', 'public', 'osx32')
+ else:
+ lib_folder = os.path.join(sdk.path, 'lib', 'mac')
+
+ if self.builder.target_platform in ['linux', 'mac']:
+ if sdk.short_name in ['sdk2013', 'bms']:
+ compiler.postlink += [
+ compiler.Dep(os.path.join(lib_folder, 'tier1.a')),
+ compiler.Dep(os.path.join(lib_folder, 'mathlib.a'))
+ ]
+ else:
+ compiler.postlink += [
+ compiler.Dep(os.path.join(lib_folder, 'tier1_i486.a')),
+ compiler.Dep(os.path.join(lib_folder, 'mathlib_i486.a'))
+ ]
+
+ if sdk.short_name in ['blade', 'insurgency', 'csgo', 'dota']:
+ compiler.postlink += [compiler.Dep(os.path.join(lib_folder, 'interfaces_i486.a'))]
+
+ dynamic_libs = []
+ if self.builder.target_platform == 'linux':
+ if sdk.short_name in ['css', 'hl2dm', 'dods', 'tf2', 'sdk2013', 'bms', 'nucleardawn', 'l4d2', 'insurgency']:
+ dynamic_libs = ['libtier0_srv.so', 'libvstdlib_srv.so']
+ elif sdk.short_name in ['l4d', 'blade', 'insurgency', 'csgo', 'dota']:
+ dynamic_libs = ['libtier0.so', 'libvstdlib.so']
+ else:
+ dynamic_libs = ['tier0_i486.so', 'vstdlib_i486.so']
+
+ elif self.builder.target_platform == 'mac':
+ compiler.linkflags.append('-liconv')
+ dynamic_libs = ['libtier0.dylib', 'libvstdlib.dylib']
+
+ elif self.builder.target_platform == 'windows':
+ libs = ['tier0', 'tier1', 'vstdlib', 'mathlib']
+ if sdk.short_name in ['swarm', 'blade', 'insurgency', 'csgo', 'dota']:
+ libs.append('interfaces')
+
+ for lib in libs:
+ lib_path = os.path.join(sdk.path, 'lib', 'public', lib) + '.lib'
+ compiler.linkflags.append(compiler.Dep(lib_path))
+
+ for library in dynamic_libs:
+ source_path = os.path.join(lib_folder, library)
+ output_path = os.path.join(binary.localFolder, library)
+
+ def make_linker(source_path, output_path):
+ def link(context, binary):
+ cmd_node, (output,) = context.AddSymlink(source_path, output_path)
+ return output
+ return link
+
+ linker = make_linker(source_path, output_path)
+ compiler.linkflags.append(compiler.Dep(library, linker))
+
+ return binary
+
+ def HL2Library(self, context, name, sdk):
+ binary = context.compiler.Library(name)
+ self.ConfigureForExtension(context, binary.compiler)
+ return self.ConfigureForHL2(binary, sdk)
+
+ def HL2Project(self, context, name):
+ project = context.compiler.LibraryProject(name)
+ self.ConfigureForExtension(context, project.compiler)
+ return project
+
+ def HL2Config(self, project, name, sdk):
+ binary = project.Configure(name, '{0} - {1}'.format(self.tag, sdk.short_name))
+ return self.ConfigureForHL2(binary, sdk)
+
+
+build_info = BuildInfo(builder)
+build_info.detectSDKs()
+build_info.configure()
+
+# Add additional buildscripts here
+BuildScripts = [
+ 'AMBuilder',
+]
+
+if builder.backend == 'amb2':
+ BuildScripts += [
+ 'PackageScript',
+ ]
+
+builder.RunBuildScripts(BuildScripts, { 'build_info': build_info })
diff --git a/AMBuilder b/AMBuilder
new file mode 100644
index 0000000..0e37461
--- /dev/null
+++ b/AMBuilder
@@ -0,0 +1,35 @@
+import os.path
+
+import typing
+
+if typing.TYPE_CHECKING:
+ from ambuild2.frontend.v2_2.context import BuildContext
+ builder: BuildContext
+
+
+projectName = 'cleaner'
+
+project = build_info.HL2Project(builder, projectName + '.ext')
+project.sources += [
+ 'extension.cpp',
+ os.path.join(build_info.sm_root, 'public', 'smsdk_ext.cpp'),
+ os.path.join(build_info.sm_root, 'public', 'CDetour', 'detours.cpp'),
+ os.path.join(build_info.sm_root, 'public', 'asm', 'asm.c'),
+]
+
+# sm1.10+
+libudis_folder = os.path.join(build_info.sm_root, 'public', 'libudis86')
+if os.path.isdir(libudis_folder):
+ project.sources += [
+ os.path.join(libudis_folder, 'decode.c'),
+ os.path.join(libudis_folder, 'itab.c'),
+ os.path.join(libudis_folder, 'syn-att.c'),
+ os.path.join(libudis_folder, 'syn-intel.c'),
+ os.path.join(libudis_folder, 'syn.c'),
+ os.path.join(libudis_folder, 'udis86.c'),
+ ]
+
+for sdk in build_info.sdks.values():
+ build_info.HL2Config(project, projectName + '.ext.2.' + sdk.short_name, sdk)
+
+build_info.extensions += builder.Add(project)
diff --git a/CDetour/detourhelpers.h b/CDetour/detourhelpers.h
deleted file mode 100644
index 0a08ba1..0000000
--- a/CDetour/detourhelpers.h
+++ /dev/null
@@ -1,139 +0,0 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod
- * Copyright (C) 2004-2010 AlliedModders LLC. All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see .
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation. You must obey the GNU General Public License in
- * all respects for all other code used. Additionally, AlliedModders LLC grants
- * this exception to all derivative works. AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or .
- *
- * Version: $Id: detourhelpers.h 248 2008-08-27 00:56:22Z pred $
- */
-
-#ifndef _INCLUDE_SOURCEMOD_DETOURHELPERS_H_
-#define _INCLUDE_SOURCEMOD_DETOURHELPERS_H_
-
-#if defined PLATFORM_POSIX
-#include
-#ifndef PAGE_SIZE
-#define PAGE_SIZE 4096
-#endif
-#define ALIGN(ar) ((long)ar & ~(PAGE_SIZE-1))
-#define PAGE_EXECUTE_READWRITE PROT_READ|PROT_WRITE|PROT_EXEC
-#endif
-
-#include
-
-struct patch_t
-{
- patch_t()
- {
- patch[0] = 0;
- bytes = 0;
- }
- unsigned char patch[20];
- size_t bytes;
-};
-
-inline void ProtectMemory(void *addr, int length, int prot)
-{
-#if defined PLATFORM_POSIX
- void *addr2 = (void *)ALIGN(addr);
- mprotect(addr2, sysconf(_SC_PAGESIZE), prot);
-#elif defined PLATFORM_WINDOWS
- DWORD old_prot;
- VirtualProtect(addr, length, prot, &old_prot);
-#endif
-}
-
-inline void SetMemPatchable(void *address, size_t size)
-{
- ProtectMemory(address, (int)size, PAGE_EXECUTE_READWRITE);
-}
-
-inline void PatchRelJump32(unsigned char *target, void *callback)
-{
- SetMemPatchable(target, 5);
-
- // jmp <32-bit displacement>
- target[0] = IA32_JMP_IMM32;
- *(int32_t *)(&target[1]) = int32_t((unsigned char *)callback - (target + 5));
-}
-
-inline void PatchAbsJump64(unsigned char *target, void *callback)
-{
- int i = 0;
- SetMemPatchable(target, 14);
-
- // push ; allocates 64-bit stack space on x64
- // mov [rsp+4], ; unnecessary if upper bits are 0
- // ret ; jump to address on stack
- target[i++] = IA32_PUSH_IMM32;
- *(int32_t *)(&target[i]) = int32_t(int64_t(callback));
- i += 4;
- if ((int64_t(callback) >> 32) != 0)
- {
- target[i++] = IA32_MOV_RM_IMM32;
- target[i++] = ia32_modrm(MOD_DISP8, 0, kREG_SIB);
- target[i++] = ia32_sib(NOSCALE, kREG_NOIDX, kREG_ESP);
- target[i++] = 0x04;
- *(int32_t *)(&target[i]) = (int64_t(callback) >> 32);
- i += 4;
- }
- target[i] = IA32_RET;
-}
-
-inline void DoGatePatch(unsigned char *target, void *callback)
-{
-#if defined(_WIN64) || defined(__x86_64__)
- int64_t diff = int64_t(callback) - (int64_t(target) + 5);
- int32_t upperBits = (diff >> 32);
- if (upperBits == 0 || upperBits == -1)
- PatchRelJump32(target, callback);
- else
- PatchAbsJump64(target, callback);
-#else
- PatchRelJump32(target, callback);
-#endif
-}
-
-inline void ApplyPatch(void *address, int offset, const patch_t *patch, patch_t *restore)
-{
- ProtectMemory(address, 20, PAGE_EXECUTE_READWRITE);
-
- unsigned char *addr = (unsigned char *)address + offset;
- if (restore)
- {
- for (size_t i=0; ibytes; i++)
- {
- restore->patch[i] = addr[i];
- }
- restore->bytes = patch->bytes;
- }
-
- for (size_t i=0; ibytes; i++)
- {
- addr[i] = patch->patch[i];
- }
-}
-
-#endif //_INCLUDE_SOURCEMOD_DETOURHELPERS_H_
diff --git a/CDetour/detours.cpp b/CDetour/detours.cpp
deleted file mode 100644
index 3e9b369..0000000
--- a/CDetour/detours.cpp
+++ /dev/null
@@ -1,287 +0,0 @@
-/**
-* vim: set ts=4 :
-* =============================================================================
-* SourceMod
-* Copyright (C) 2004-2010 AlliedModders LLC. All rights reserved.
-* =============================================================================
-*
-* This program is free software; you can redistribute it and/or modify it under
-* the terms of the GNU General Public License, version 3.0, as published by the
-* Free Software Foundation.
-*
-* This program is distributed in the hope that it will be useful, but WITHOUT
-* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-* details.
-*
-* You should have received a copy of the GNU General Public License along with
-* this program. If not, see .
-*
-* As a special exception, AlliedModders LLC gives you permission to link the
-* code of this program (as well as its derivative works) to "Half-Life 2," the
-* "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
-* by the Valve Corporation. You must obey the GNU General Public License in
-* all respects for all other code used. Additionally, AlliedModders LLC grants
-* this exception to all derivative works. AlliedModders LLC defines further
-* exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
-* or .
-*
-* Version: $Id: detours.cpp 248 2008-08-27 00:56:22Z pred $
-*/
-
-#include "detours.h"
-#include
-
-ISourcePawnEngine *CDetourManager::spengine = NULL;
-IGameConfig *CDetourManager::gameconf = NULL;
-
-// Push 64-bit value onto the stack using two instructions.
-//
-// Pushing 0xF00DF00DF00DF00D:
-// push 0xF00DF00D
-// mov [rsp+4], 0xF00DF00D
-static inline void X64_Push_Imm64(JitWriter *jit, jit_int64_t val)
-{
- jit->write_ubyte(IA32_PUSH_IMM32);
- jit->write_int32(jit_int32_t(val));
- if ((val >> 32) != 0)
- IA32_Mov_ESP_Disp8_Imm32(jit, 4, (val >> 32));
-}
-
-// Jump to absolute 64-bit address using multiple instructions.
-//
-// Jumping to address 0xF00DF00DF00DF00D:
-// push 0xF00DF00D
-// mov [rsp+4], 0xF00DF00D
-// ret
-static inline void X64_Jump_Abs(JitWriter *jit, void *dest)
-{
- X64_Push_Imm64(jit, jit_int64_t(dest));
- IA32_Return(jit);
-}
-
-static inline void RelativeJump32(JitWriter *jit, void *target)
-{
- jitoffs_t call = IA32_Jump_Imm32(jit, 0);
- IA32_Write_Jump32_Abs(jit, call, target);
-}
-
-#if defined(_WIN64) || defined(__x86_64__)
-static inline bool IsShortJump(JitWriter *jit, void *target)
-{
- int64_t diff = int64_t(target) - (int64_t(jit->outbase) + jit->get_outputpos() + OP_JMP_SIZE);
- int32_t upperBits = (diff >> 32);
- return upperBits == 0 || upperBits == -1;
-}
-#endif
-
-static inline void AbsJump(JitWriter *jit, void *target)
-{
-#if defined(_WIN64) || defined(__x86_64__)
- if (IsShortJump(jit, target))
- RelativeJump32(jit, target);
- else
- X64_Jump_Abs(jit, target);
-#else
- RelativeJump32(jit, target);
-#endif
-}
-
-void CDetourManager::Init(ISourcePawnEngine *spengine, IGameConfig *gameconf)
-{
- CDetourManager::spengine = spengine;
- CDetourManager::gameconf = gameconf;
-}
-
-CDetour *CDetourManager::CreateDetour(void *callbackfunction, void **trampoline, const char *signame)
-{
- CDetour *detour = new CDetour(callbackfunction, trampoline, signame);
- if (detour)
- {
- if (!detour->Init(spengine, gameconf))
- {
- delete detour;
- return NULL;
- }
-
- return detour;
- }
-
- return NULL;
-}
-
-CDetour *CDetourManager::CreateDetour(void *callbackfunction, void **trampoline, void *pAddress)
-{
- CDetour *detour = new CDetour(callbackfunction, trampoline, pAddress);
- if (detour)
- {
- if (!detour->Init(spengine, gameconf))
- {
- delete detour;
- return NULL;
- }
-
- return detour;
- }
-
- return NULL;
-}
-
-CDetour::CDetour(void *callbackfunction, void **trampoline, const char *signame)
-{
- enabled = false;
- detoured = false;
- detour_address = NULL;
- detour_trampoline = NULL;
- this->signame = signame;
- this->detour_callback = callbackfunction;
- spengine = NULL;
- gameconf = NULL;
- this->trampoline = trampoline;
-}
-
-CDetour::CDetour(void*callbackfunction, void **trampoline, void *pAddress)
-{
- enabled = false;
- detoured = false;
- detour_address = pAddress;
- detour_trampoline = NULL;
- this->signame = NULL;
- this->detour_callback = callbackfunction;
- spengine = NULL;
- gameconf = NULL;
- this->trampoline = trampoline;
-}
-
-bool CDetour::Init(ISourcePawnEngine *spengine, IGameConfig *gameconf)
-{
- this->spengine = spengine;
- this->gameconf = gameconf;
-
- if (!CreateDetour())
- {
- enabled = false;
- return enabled;
- }
-
- enabled = true;
-
- return enabled;
-}
-
-void CDetour::Destroy()
-{
- DeleteDetour();
- delete this;
-}
-
-bool CDetour::IsEnabled()
-{
- return enabled;
-}
-
-bool CDetour::CreateDetour()
-{
- if (signame && !gameconf->GetMemSig(signame, &detour_address))
- {
- g_pSM->LogError(myself, "Could not locate %s - Disabling detour", signame);
- return false;
- }
- else if(!detour_address)
- {
- g_pSM->LogError(myself, "Invalid detour address passed - Disabling detour to prevent crashes");
- return false;
- }
-
- if (!detour_address)
- {
- g_pSM->LogError(myself, "Sigscan for %s failed - Disabling detour to prevent crashes", signame);
- return false;
- }
-
-#if defined(_WIN64) || defined(__x86_64__)
- int shortBytes = copy_bytes((unsigned char *)detour_address, NULL, OP_JMP_SIZE);
- detour_restore.bytes = copy_bytes((unsigned char *)detour_address, NULL, X64_ABS_SIZE);
-#else
- detour_restore.bytes = copy_bytes((unsigned char *)detour_address, NULL, OP_JMP_SIZE);
-#endif
-
- JitWriter wr;
- JitWriter *jit = ≀
- jit_uint32_t CodeSize = 0;
-
- wr.outbase = NULL;
- wr.outptr = NULL;
-
-jit_rewind:
-
- /* Patch old bytes in */
- if (wr.outbase != NULL)
- {
-#if defined(_WIN64) || defined(__x86_64__)
- wr.outptr += shortBytes;
- bool isShort = IsShortJump(jit, detour_address);
- wr.outptr -= shortBytes;
- if (isShort)
- detour_restore.bytes = shortBytes;
-#endif
- /* Save restore bits */
- memcpy(detour_restore.patch, detour_address, detour_restore.bytes);
-
- copy_bytes((unsigned char *)detour_address, (unsigned char*)wr.outptr, detour_restore.bytes);
- }
- wr.outptr += detour_restore.bytes;
-
- /* Return to the original function */
- AbsJump(jit, (unsigned char *)detour_address + detour_restore.bytes);
-
- if (wr.outbase == NULL)
- {
- CodeSize = wr.get_outputpos();
- wr.outbase = (jitcode_t)spengine->AllocatePageMemory(CodeSize);
- spengine->SetReadWrite(wr.outbase);
- wr.outptr = wr.outbase;
- detour_trampoline = wr.outbase;
- goto jit_rewind;
- }
-
- spengine->SetReadExecute(wr.outbase);
-
- *trampoline = detour_trampoline;
-
- return true;
-}
-
-void CDetour::DeleteDetour()
-{
- if (detoured)
- {
- DisableDetour();
- }
-
- if (detour_trampoline)
- {
- /* Free the allocated trampoline memory */
- spengine->FreePageMemory(detour_trampoline);
- detour_trampoline = NULL;
- }
-}
-
-void CDetour::EnableDetour()
-{
- if (!detoured)
- {
- DoGatePatch((unsigned char *)detour_address, detour_callback);
- detoured = true;
- }
-}
-
-void CDetour::DisableDetour()
-{
- if (detoured)
- {
- /* Remove the patch */
- ApplyPatch(detour_address, 0, &detour_restore, NULL);
- detoured = false;
- }
-}
diff --git a/CDetour/detours.h b/CDetour/detours.h
deleted file mode 100644
index add52f0..0000000
--- a/CDetour/detours.h
+++ /dev/null
@@ -1,307 +0,0 @@
-/**
-* vim: set ts=4 :
-* =============================================================================
-* SourceMod
-* Copyright (C) 2004-2010 AlliedModders LLC. All rights reserved.
-* =============================================================================
-*
-* This program is free software; you can redistribute it and/or modify it under
-* the terms of the GNU General Public License, version 3.0, as published by the
-* Free Software Foundation.
-*
-* This program is distributed in the hope that it will be useful, but WITHOUT
-* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-* details.
-*
-* You should have received a copy of the GNU General Public License along with
-* this program. If not, see .
-*
-* As a special exception, AlliedModders LLC gives you permission to link the
-* code of this program (as well as its derivative works) to "Half-Life 2," the
-* "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
-* by the Valve Corporation. You must obey the GNU General Public License in
-* all respects for all other code used. Additionally, AlliedModders LLC grants
-* this exception to all derivative works. AlliedModders LLC defines further
-* exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
-* or .
-*
-* Version: $Id: detours.h 257 2008-09-23 03:12:13Z pred $
-*/
-
-#ifndef _INCLUDE_SOURCEMOD_DETOURS_H_
-#define _INCLUDE_SOURCEMOD_DETOURS_H_
-
-#include "extension.h"
-#include
-#include
-#include "detourhelpers.h"
-
-/**
- * CDetours class for SourceMod Extensions by pRED*
- * detourhelpers.h entirely stolen from CSS:DM and were written by BAILOPAN (I assume).
- * asm.h/c from devmaster.net (thanks cybermind) edited by pRED* to handle gcc -fPIC thunks correctly
- * Concept by Nephyrin Zey (http://www.doublezen.net/) and Windows Detour Library (http://research.microsoft.com/sn/detours/)
- * Member function pointer ideas by Don Clugston (http://www.codeproject.com/cpp/FastDelegate.asp)
- */
-
-#define DETOUR_MEMBER_CALL(name) (this->*name##_Actual)
-#define DETOUR_STATIC_CALL(name) (name##_Actual)
-
-#define DETOUR_DECL_STATIC0(name, ret) \
-ret (*name##_Actual)(void) = NULL; \
-ret name(void)
-
-#define DETOUR_DECL_STATIC1(name, ret, p1type, p1name) \
-ret (*name##_Actual)(p1type) = NULL; \
-ret name(p1type p1name)
-
-#define DETOUR_DECL_STATIC2(name, ret, p1type, p1name, p2type, p2name) \
-ret (*name##_Actual)(p1type, p2type) = NULL; \
-ret name(p1type p1name, p2type p2name)
-
-#define DETOUR_DECL_STATIC3(name, ret, p1type, p1name, p2type, p2name, p3type, p3name) \
-ret (*name##_Actual)(p1type, p2type, p3type) = NULL; \
-ret name(p1type p1name, p2type p2name, p3type p3name)
-
-#define DETOUR_DECL_STATIC4(name, ret, p1type, p1name, p2type, p2name, p3type, p3name, p4type, p4name) \
-ret (*name##_Actual)(p1type, p2type, p3type, p4type) = NULL; \
-ret name(p1type p1name, p2type p2name, p3type p3name, p4type p4name)
-
-#define DETOUR_DECL_STATIC5(name, ret, p1type, p1name, p2type, p2name, p3type, p3name, p4type, p4name, p5type, p5name) \
-ret (*name##_Actual)(p1type, p2type, p3type, p4type, p5type) = NULL; \
-ret name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name)
-
-#define DETOUR_DECL_STATIC6(name, ret, p1type, p1name, p2type, p2name, p3type, p3name, p4type, p4name, p5type, p5name, p6type, p6name) \
-ret (*name##_Actual)(p1type, p2type, p3type, p4type, p5type, p6type) = NULL; \
-ret name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name, p6type p6name)
-
-#define DETOUR_DECL_STATIC7(name, ret, p1type, p1name, p2type, p2name, p3type, p3name, p4type, p4name, p5type, p5name, p6type, p6name, p7type, p7name) \
-ret (*name##_Actual)(p1type, p2type, p3type, p4type, p5type, p6type, p7type) = NULL; \
-ret name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name, p6type p6name, p7type p7name)
-
-#define DETOUR_DECL_STATIC8(name, ret, p1type, p1name, p2type, p2name, p3type, p3name, p4type, p4name, p5type, p5name, p6type, p6name, p7type, p7name, p8type, p8name) \
-ret (*name##_Actual)(p1type, p2type, p3type, p4type, p5type, p6type, p7type, p8type) = NULL; \
-ret name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name, p6type p6name, p7type p7name, p8type p8name)
-
-#define DETOUR_DECL_MEMBER0(name, ret) \
-class name##Class \
-{ \
-public: \
- ret name(); \
- static ret (name##Class::* name##_Actual)(void); \
-}; \
-ret (name##Class::* name##Class::name##_Actual)(void) = NULL; \
-ret name##Class::name()
-
-#define DETOUR_DECL_MEMBER1(name, ret, p1type, p1name) \
-class name##Class \
-{ \
-public: \
- ret name(p1type p1name); \
- static ret (name##Class::* name##_Actual)(p1type); \
-}; \
-ret (name##Class::* name##Class::name##_Actual)(p1type) = NULL; \
-ret name##Class::name(p1type p1name)
-
-#define DETOUR_DECL_MEMBER2(name, ret, p1type, p1name, p2type, p2name) \
-class name##Class \
-{ \
-public: \
- ret name(p1type p1name, p2type p2name); \
- static ret (name##Class::* name##_Actual)(p1type, p2type); \
-}; \
-ret (name##Class::* name##Class::name##_Actual)(p1type, p2type) = NULL; \
-ret name##Class::name(p1type p1name, p2type p2name)
-
-#define DETOUR_DECL_MEMBER3(name, ret, p1type, p1name, p2type, p2name, p3type, p3name) \
-class name##Class \
-{ \
-public: \
- ret name(p1type p1name, p2type p2name, p3type p3name); \
- static ret (name##Class::* name##_Actual)(p1type, p2type, p3type); \
-}; \
-ret (name##Class::* name##Class::name##_Actual)(p1type, p2type, p3type) = NULL; \
-ret name##Class::name(p1type p1name, p2type p2name, p3type p3name)
-
-#define DETOUR_DECL_MEMBER4(name, ret, p1type, p1name, p2type, p2name, p3type, p3name, p4type, p4name) \
-class name##Class \
-{ \
-public: \
- ret name(p1type p1name, p2type p2name, p3type p3name, p4type p4name); \
- static ret (name##Class::* name##_Actual)(p1type, p2type, p3type, p4type); \
-}; \
-ret (name##Class::* name##Class::name##_Actual)(p1type, p2type, p3type, p4type) = NULL; \
-ret name##Class::name(p1type p1name, p2type p2name, p3type p3name, p4type p4name)
-
-#define DETOUR_DECL_MEMBER5(name, ret, p1type, p1name, p2type, p2name, p3type, p3name, p4type, p4name, p5type, p5name) \
-class name##Class \
-{ \
-public: \
- ret name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name); \
- static ret (name##Class::* name##_Actual)(p1type, p2type, p3type, p4type, p5type); \
-}; \
-ret (name##Class::* name##Class::name##_Actual)(p1type, p2type, p3type, p4type, p5type) = NULL; \
-ret name##Class::name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name)
-
-#define DETOUR_DECL_MEMBER6(name, ret, p1type, p1name, p2type, p2name, p3type, p3name, p4type, p4name, p5type, p5name, p6type, p6name) \
-class name##Class \
-{ \
-public: \
- ret name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name, p6type p6name); \
- static ret (name##Class::* name##_Actual)(p1type, p2type, p3type, p4type, p5type, p6type); \
-}; \
-ret (name##Class::* name##Class::name##_Actual)(p1type, p2type, p3type, p4type, p5type, p6type) = NULL; \
-ret name##Class::name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name, p6type p6name)
-
-#define DETOUR_DECL_MEMBER7(name, ret, p1type, p1name, p2type, p2name, p3type, p3name, p4type, p4name, p5type, p5name, p6type, p6name, p7type, p7name) \
-class name##Class \
-{ \
-public: \
- ret name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name, p6type p6name, p7type p7name); \
- static ret (name##Class::* name##_Actual)(p1type, p2type, p3type, p4type, p5type, p6type, p7type); \
-}; \
-ret (name##Class::* name##Class::name##_Actual)(p1type, p2type, p3type, p4type, p5type, p6type, p7type) = NULL; \
-ret name##Class::name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name, p6type p6name, p7type p7name)
-
-#define DETOUR_DECL_MEMBER8(name, ret, p1type, p1name, p2type, p2name, p3type, p3name, p4type, p4name, p5type, p5name, p6type, p6name, p7type, p7name, p8type, p8name) \
-class name##Class \
-{ \
-public: \
- ret name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name, p6type p6name, p7type p7name, p8type p8name); \
- static ret (name##Class::* name##_Actual)(p1type, p2type, p3type, p4type, p5type, p6type, p7type, p8type); \
-}; \
-ret (name##Class::* name##Class::name##_Actual)(p1type, p2type, p3type, p4type, p5type, p6type, p7type, p8type) = NULL; \
-ret name##Class::name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name, p6type p6name, p7type p7name, p8type p8name)
-
-
-#define GET_MEMBER_CALLBACK(name) (void *)GetCodeAddress(&name##Class::name)
-#define GET_MEMBER_TRAMPOLINE(name) (void **)(&name##Class::name##_Actual)
-
-#define GET_STATIC_CALLBACK(name) (void *)&name
-#define GET_STATIC_TRAMPOLINE(name) (void **)&name##_Actual
-
-#define DETOUR_CREATE_MEMBER(name, gamedata) CDetourManager::CreateDetour(GET_MEMBER_CALLBACK(name), GET_MEMBER_TRAMPOLINE(name), gamedata);
-#define DETOUR_CREATE_STATIC(name, gamedata) CDetourManager::CreateDetour(GET_STATIC_CALLBACK(name), GET_STATIC_TRAMPOLINE(name), gamedata);
-
-
-class GenericClass {};
-typedef void (GenericClass::*VoidFunc)();
-
-inline void *GetCodeAddr(VoidFunc mfp)
-{
- return *(void **)&mfp;
-}
-
-/**
- * Converts a member function pointer to a void pointer.
- * This relies on the assumption that the code address lies at mfp+0
- * This is the case for both g++ and later MSVC versions on non virtual functions but may be different for other compilers
- * Based on research by Don Clugston : http://www.codeproject.com/cpp/FastDelegate.asp
- */
-#define GetCodeAddress(mfp) GetCodeAddr(reinterpret_cast(mfp))
-
-class CDetourManager;
-
-class CDetour
-{
-public:
-
- bool IsEnabled();
-
- /**
- * These would be somewhat self-explanatory I hope
- */
- void EnableDetour();
- void DisableDetour();
-
- void Destroy();
-
- friend class CDetourManager;
-
-protected:
- CDetour(void *callbackfunction, void **trampoline, const char *signame);
- CDetour(void*callbackfunction, void **trampoline, void *pAddress);
-
- bool Init(ISourcePawnEngine *spengine, IGameConfig *gameconf);
-private:
-
- /* These create/delete the allocated memory */
- bool CreateDetour();
- void DeleteDetour();
-
- bool enabled;
- bool detoured;
-
- patch_t detour_restore;
- /* Address of the detoured function */
- void *detour_address;
- /* Address of the allocated trampoline function */
- void *detour_trampoline;
- /* Address of the callback handler */
- void *detour_callback;
- /* The function pointer used to call our trampoline */
- void **trampoline;
-
- const char *signame;
- ISourcePawnEngine *spengine;
- IGameConfig *gameconf;
-};
-
-class CDetourManager
-{
-public:
-
- static void Init(ISourcePawnEngine *spengine, IGameConfig *gameconf);
-
- /**
- * Creates a new detour
- *
- * @param callbackfunction Void pointer to your detour callback function.
- * @param trampoline Address of the trampoline pointer
- * @param signame Section name containing a signature to fetch from the gamedata file.
- * @return A new CDetour pointer to control your detour.
- *
- * Example:
- *
- * CBaseServer::ConnectClient(netadr_s &, int, int, int, char const*, char const*, char const*, int)
- *
- * Define a new class with the required function and a member function pointer to the same type:
- *
- * class CBaseServerDetour
- * {
- * public:
- * bool ConnectClient(void *netaddr_s, int, int, int, char const*, char const*, char const*, int);
- * static bool (CBaseServerDetour::* ConnectClient_Actual)(void *netaddr_s, int, int, int, char const*, char const*, char const*, int);
- * }
- *
- * void *callbackfunc = GetCodeAddress(&CBaseServerDetour::ConnectClient);
- * void **trampoline = (void **)(&CBaseServerDetour::ConnectClient_Actual);
- *
- * Creation:
- * CDetourManager::CreateDetour(callbackfunc, trampoline, "ConnectClient");
- *
- * Usage:
- *
- * CBaseServerDetour::ConnectClient(void *netaddr_s, int, int, int, char const*, char const*, char const*, int)
- * {
- * //pre hook code
- * bool result = (this->*ConnectClient_Actual)(netaddr_s, rest of params);
- * //post hook code
- * return result;
- * }
- *
- * Note we changed the netadr_s reference into a void* to avoid needing to define the type
- */
- static CDetour *CreateDetour(void *callbackfunction, void **trampoline, const char *signame);
- static CDetour *CreateDetour(void *callbackfunction, void **trampoline, void *pAddress);
-
- friend class CBlocker;
- friend class CDetour;
-
-private:
- static ISourcePawnEngine *spengine;
- static IGameConfig *gameconf;
-};
-
-#endif // _INCLUDE_SOURCEMOD_DETOURS_H_
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 82514f8..0000000
--- a/Makefile
+++ /dev/null
@@ -1,198 +0,0 @@
-# (C)2004-2008 SourceMod Development Team
-# Makefile written by David "BAILOPAN" Anderson
-
-SMSDK = ../sourcemod
-HL2SDK_ORIG = ../hl2sdk
-HL2SDK_OB = ../hl2sdk-ob
-HL2SDK_CSS = ../hl2sdk-css
-HL2SDK_OB_VALVE = ../hl2sdk-tf2
-HL2SDK_L4D = ../hl2sdk-l4d
-HL2SDK_L4D2 = ../hl2sdk-l4d2
-HL2SDK_CSGO = ../hl2sdk-csgo
-MMSOURCE19 = ../mmsource
-
-#####################################
-### EDIT BELOW FOR OTHER PROJECTS ###
-#####################################
-
-PROJECT = cleaner
-OBJECTS = smsdk_ext.cpp extension.cpp CDetour/detours.cpp
-
-##############################################
-### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ###
-##############################################
-
-C_OPT_FLAGS = -DNDEBUG -O3 -funroll-loops -pipe -fno-strict-aliasing
-C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3
-C_GCC4_FLAGS = -fvisibility=hidden
-CPP_GCC4_FLAGS = -fvisibility-inlines-hidden
-CPP = clang
-
-override ENGSET = false
-ifneq (,$(filter original orangebox orangeboxvalve css left4dead left4dead2 csgo,$(ENGINE)))
- override ENGSET = true
-endif
-
-ifeq "$(ENGINE)" "original"
- HL2SDK = $(HL2SDK_ORIG)
- CFLAGS += -DSOURCE_ENGINE=1
- GAMEFIX = 1.ep1
-endif
-ifeq "$(ENGINE)" "orangebox"
- HL2SDK = $(HL2SDK_OB)
- CFLAGS += -DSOURCE_ENGINE=3
- GAMEFIX = 2.ep2
-endif
-ifeq "$(ENGINE)" "css"
- HL2SDK = $(HL2SDK_CSS)
- CFLAGS += -DSOURCE_ENGINE=6
- GAMEFIX = 2.css
-endif
-ifeq "$(ENGINE)" "orangeboxvalve"
- HL2SDK = $(HL2SDK_OB_VALVE)
- CFLAGS += -DSOURCE_ENGINE=7
- GAMEFIX = 2.ep2v
-endif
-ifeq "$(ENGINE)" "left4dead"
- HL2SDK = $(HL2SDK_L4D)
- CFLAGS += -DSOURCE_ENGINE=8
- GAMEFIX = 2.l4d
-endif
-ifeq "$(ENGINE)" "left4dead2"
- HL2SDK = $(HL2SDK_L4D2)
- CFLAGS += -DSOURCE_ENGINE=9
- GAMEFIX = 2.l4d2
-endif
-ifeq "$(ENGINE)" "csgo"
- HL2SDK = $(HL2SDK_CSGO)
- CFLAGS += -DSOURCE_ENGINE=12
- GAMEFIX = 2.csgo
-endif
-
-HL2PUB = $(HL2SDK)/public
-
-ifeq "$(ENGINE)" "original"
- INCLUDE += -I$(HL2SDK)/public/dlls
- METAMOD = $(MMSOURCE19)/core-legacy
-else
- INCLUDE += -I$(HL2SDK)/public/game/server
- METAMOD = $(MMSOURCE19)/core
-endif
-
-OS := $(shell uname -s)
-
-ifeq "$(OS)" "Darwin"
- LIB_EXT = dylib
- HL2LIB = $(HL2SDK)/lib/mac
-else
- LIB_EXT = so
- ifeq "$(ENGINE)" "original"
- HL2LIB = $(HL2SDK)/linux_sdk
- else
- HL2LIB = $(HL2SDK)/lib/linux
- endif
-endif
-
-# if ENGINE is original or OB
-ifneq (,$(filter original orangebox,$(ENGINE)))
- LIB_SUFFIX = _i486.$(LIB_EXT)
-else
- LIB_PREFIX = lib
- ifneq (,$(filter orangeboxvalve css left4dead2,$(ENGINE)))
- ifneq "$(OS)" "Darwin"
- LIB_SUFFIX = _srv.$(LIB_EXT)
- else
- LIB_SUFFIX = .$(LIB_EXT)
- endif
- else
- LIB_SUFFIX = .$(LIB_EXT)
- endif
-endif
-
-INCLUDE += -I. -I.. -I$(HL2PUB) -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 \
- -I$(HL2PUB)/tier1 -I$(METAMOD) -I$(METAMOD)/sourcehook -I$(SMSDK)/public -I$(SMSDK)/public/extensions \
- -I$(SMSDK)/public/amtl -I$(SMSDK)/public/amtl/amtl -I$(SMSDK)/sourcepawn/include
-
-LINK += $(HL2LIB)/tier1_i486.a $(LIB_PREFIX)vstdlib$(LIB_SUFFIX) $(LIB_PREFIX)tier0$(LIB_SUFFIX)
-
-ifeq "$(ENGINE)" "csgo"
- LINK += $(HL2LIB)/interfaces_i486.a
-endif
-
-CFLAGS += -DSE_EPISODEONE=1 -DSE_DARKMESSIAH=2 -DSE_ORANGEBOX=3 -DSE_BLOODYGOODTIME=4 -DSE_EYE=5 \
- -DSE_CSS=6 -DSE_ORANGEBOXVALVE=7 -DSE_LEFT4DEAD=8 -DSE_LEFT4DEAD2=9 -DSE_ALIENSWARM=10 \
- -DSE_PORTAL2=11 -DSE_CSGO=12
-
-LINK += -m32 -ldl -lm
-
-CFLAGS += -DPOSIX -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp \
- -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -DCOMPILER_GCC \
- -Wno-switch -Wall -Werror -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H -m32
-CPPFLAGS += -Wno-non-virtual-dtor -Wno-unused -fno-exceptions -fno-rtti -fno-threadsafe-statics -std=c++14
-
-################################################
-### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ###
-################################################
-
-BINARY = $(PROJECT).ext.$(GAMEFIX).$(LIB_EXT)
-
-ifeq "$(DEBUG)" "true"
- BIN_DIR = Debug
- CFLAGS += $(C_DEBUG_FLAGS)
-else
- BIN_DIR = Release
- CFLAGS += $(C_OPT_FLAGS)
-endif
-
-ifeq "$(OS)" "Darwin"
- CPP = $(CPP_OSX)
- LIB_EXT = dylib
- CFLAGS += -DOSX -D_OSX
- LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5
-else
- LIB_EXT = so
- CFLAGS += -D_LINUX
- LINK += -static-libgcc -shared
-endif
-
-GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)
-ifeq "$(GCC_VERSION)" "4"
- CFLAGS += $(C_GCC4_FLAGS)
- CPPFLAGS += $(CPP_GCC4_FLAGS)
-endif
-
-OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o)
-
-$(BIN_DIR)/%.o: %.cpp
- $(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
-
-$(BIN_DIR)/CDetour/%.o: CDetour/%.cpp
- $(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
-
-all: check
- ln -sf $(SMSDK)/public/smsdk_ext.cpp
- mkdir -p $(BIN_DIR)/CDetour
- ln -sf $(HL2LIB)/$(LIB_PREFIX)vstdlib$(LIB_SUFFIX); \
- ln -sf $(HL2LIB)/$(LIB_PREFIX)tier0$(LIB_SUFFIX); \
- $(MAKE) -f Makefile extension
-
-check:
- if [ "$(ENGSET)" = "false" ]; then \
- echo "You must supply one of the following values for ENGINE:"; \
- echo "csgo, left4dead2, left4dead, css, orangeboxvalve, orangebox, or original"; \
- exit 1; \
- fi
-
-extension: check $(OBJ_LINUX)
- $(CPP) $(INCLUDE) $(OBJ_LINUX) asm/asm.c $(LINK) -o $(BIN_DIR)/$(BINARY)
-
-debug:
- $(MAKE) -f Makefile all DEBUG=true
-
-default: all
-
-clean: check
- rm -rf $(BIN_DIR)/*.o
- rm -rf $(BIN_DIR)/CDetour/*.o
- rm -rf $(BIN_DIR)/asm/*.o
- rm -rf $(BIN_DIR)/$(BINARY)
diff --git a/PackageScript b/PackageScript
new file mode 100644
index 0000000..b465fcb
--- /dev/null
+++ b/PackageScript
@@ -0,0 +1,46 @@
+import os.path
+import typing
+
+
+if typing.TYPE_CHECKING:
+ from ambuild2.frontend.v2_2.context import BuildContext
+ builder: BuildContext
+
+
+# This is where the files will be output to
+# package is the default
+# noinspection PyUnboundLocalVariable
+builder.SetBuildFolder('package')
+
+# Add any folders you need to this list
+folder_list = [
+ 'addons',
+ 'addons/sourcemod/extensions',
+ 'addons/sourcemod/configs',
+]
+
+# Create the distribution folder hierarchy
+folder_map = {}
+for folder in folder_list:
+ norm_folder = os.path.normpath(folder)
+ folder_map[folder] = builder.AddFolder(norm_folder)
+
+
+# Do all straight-up file copies from the source tree
+def CopyFiles(src, dest, files):
+ if not dest:
+ dest = src
+ dest_entry = folder_map[dest]
+ for source_file in files:
+ source_path = os.path.join(builder.sourcePath, src, source_file)
+ builder.AddCopy(source_path, dest_entry)
+
+
+# Copy extension
+for cxx_task in build_info.extensions:
+ builder.AddCopy(cxx_task.binary, folder_map['addons/sourcemod/extensions'])
+
+CopyFiles('sourcemod/extensions', 'addons/sourcemod/extensions', ['cleaner.autoload'])
+
+# Config file
+CopyFiles('sourcemod/configs', 'addons/sourcemod/configs', ['cleaner.cfg'])
diff --git a/Readme.md b/Readme.md
index 8ba1eed..9f37c8d 100644
--- a/Readme.md
+++ b/Readme.md
@@ -6,7 +6,7 @@ different types of spam messages that are normal, but provide no useful info.
## Installation
-1. Choose the correct .dll (Windows) or .so (linux) file from the `Release` folder.
-2. Download and put it into your servers `addons/sourcemod/extensions` folder.
+1. Download latest build from [Build Workflows](https://github.com/Accelerator74/Cleaner/actions)
+2. Extract and put it into your servers `addons/sourcemod/extensions` folder.
3. Copy the contents of the `sourcemod` folder into your servers sourcemod folder.
4. (Optional) Modify `addons/sourcemod/configs/cleaner.cfg` with more strings you want removed.
diff --git a/Release/cleaner.autoload b/Release/cleaner.autoload
deleted file mode 100644
index e69de29..0000000
diff --git a/Release/cleaner.ext.2.csgo.dll b/Release/cleaner.ext.2.csgo.dll
deleted file mode 100644
index 57b0d4d..0000000
Binary files a/Release/cleaner.ext.2.csgo.dll and /dev/null differ
diff --git a/Release/cleaner.ext.2.csgo.so b/Release/cleaner.ext.2.csgo.so
deleted file mode 100644
index 850da7c..0000000
Binary files a/Release/cleaner.ext.2.csgo.so and /dev/null differ
diff --git a/Release/cleaner.ext.2.css.dll b/Release/cleaner.ext.2.css.dll
deleted file mode 100644
index ff2c49c..0000000
Binary files a/Release/cleaner.ext.2.css.dll and /dev/null differ
diff --git a/Release/cleaner.ext.2.css.so b/Release/cleaner.ext.2.css.so
deleted file mode 100644
index 516943b..0000000
Binary files a/Release/cleaner.ext.2.css.so and /dev/null differ
diff --git a/Release/cleaner.ext.2.l4d.dll b/Release/cleaner.ext.2.l4d.dll
deleted file mode 100644
index 7ce4bee..0000000
Binary files a/Release/cleaner.ext.2.l4d.dll and /dev/null differ
diff --git a/Release/cleaner.ext.2.l4d.so b/Release/cleaner.ext.2.l4d.so
deleted file mode 100644
index 6422233..0000000
Binary files a/Release/cleaner.ext.2.l4d.so and /dev/null differ
diff --git a/Release/cleaner.ext.2.l4d2.dll b/Release/cleaner.ext.2.l4d2.dll
deleted file mode 100644
index 6fd000a..0000000
Binary files a/Release/cleaner.ext.2.l4d2.dll and /dev/null differ
diff --git a/Release/cleaner.ext.2.l4d2.so b/Release/cleaner.ext.2.l4d2.so
deleted file mode 100644
index 6fa15cc..0000000
Binary files a/Release/cleaner.ext.2.l4d2.so and /dev/null differ
diff --git a/Release/cleaner.ext.2.tf2.dll b/Release/cleaner.ext.2.tf2.dll
deleted file mode 100644
index 941d800..0000000
Binary files a/Release/cleaner.ext.2.tf2.dll and /dev/null differ
diff --git a/Release/cleaner.ext.2.tf2.so b/Release/cleaner.ext.2.tf2.so
deleted file mode 100644
index 516943b..0000000
Binary files a/Release/cleaner.ext.2.tf2.so and /dev/null differ
diff --git a/asm/asm.c b/asm/asm.c
deleted file mode 100644
index dc548a9..0000000
--- a/asm/asm.c
+++ /dev/null
@@ -1,420 +0,0 @@
-#include "asm.h"
-
-#ifndef WIN32
-#define _GNU_SOURCE
-#include
-#include
-#include
-#include
-
-#define REG_EAX 0
-#define REG_ECX 1
-#define REG_EDX 2
-#define REG_EBX 3
-
-#define IA32_MOV_REG_IMM 0xB8 // encoding is +r
-#endif
-
-/**
-* Checks if a call to a fpic thunk has just been written into dest.
-* If found replaces it with a direct mov that sets the required register to the value of pc.
-*
-* @param dest Destination buffer where a call opcode + addr (5 bytes) has just been written.
-* @param pc The program counter value that needs to be set (usually the next address from the source).
-* @noreturn
-*/
-void check_thunks(unsigned char *dest, unsigned char *pc)
-{
-#ifndef WIN32
- /* Step write address back 4 to the start of the function address */
- unsigned char *writeaddr = dest - 4;
- unsigned char *calloffset = *(unsigned char **)writeaddr;
- unsigned char *calladdr = (unsigned char *)(dest + (unsigned int)calloffset);
-
- /* Lookup name of function being called */
- if ((*calladdr == 0x8B) && (*(calladdr+2) == 0x24) && (*(calladdr+3) == 0xC3))
- {
- //a thunk maybe?
- char movByte = IA32_MOV_REG_IMM;
-
- /* Calculate the correct mov opcode */
- switch (*(calladdr+1))
- {
- case 0x04:
- {
- movByte += REG_EAX;
- break;
- }
- case 0x1C:
- {
- movByte += REG_EBX;
- break;
- }
- case 0x0C:
- {
- movByte += REG_ECX;
- break;
- }
- case 0x14:
- {
- movByte += REG_EDX;
- break;
- }
- default:
- {
- printf("Unknown thunk: %c\n", *(calladdr+1));
-#ifndef NDEBUG
- abort();
-#endif
- break;
- }
- }
-
- /* Move our write address back one to where the call opcode was */
- writeaddr--;
-
-
- /* Write our mov */
- *writeaddr = movByte;
- writeaddr++;
-
- /* Write the value - The provided program counter value */
- *(void **)writeaddr = (void *)pc;
- writeaddr += 4;
- }
-#endif
-}
-
-//if dest is NULL, returns minimum number of bytes needed to be copied
-//if dest is not NULL, it will copy the bytes to dest as well as fix CALLs and JMPs
-//http://www.devmaster.net/forums/showthread.php?t=2311
-int copy_bytes(unsigned char *func, unsigned char* dest, int required_len) {
- int bytecount = 0;
-
- while(bytecount < required_len && *func != 0xCC)
- {
- // prefixes F0h, F2h, F3h, 66h, 67h, D8h-DFh, 2Eh, 36h, 3Eh, 26h, 64h and 65h
- int operandSize = 4;
- int FPU = 0;
- int twoByte = 0;
- unsigned char opcode = 0x90;
- unsigned char modRM = 0xFF;
- while(*func == 0xF0 ||
- *func == 0xF2 ||
- *func == 0xF3 ||
- (*func & 0xFC) == 0x64 ||
- (*func & 0xF8) == 0xD8 ||
- (*func & 0x7E) == 0x62)
- {
- if(*func == 0x66)
- {
- operandSize = 2;
- }
- else if((*func & 0xF8) == 0xD8)
- {
- FPU = *func;
- if (dest)
- *dest++ = *func++;
- else
- func++;
- bytecount++;
- break;
- }
-
- if (dest)
- *dest++ = *func++;
- else
- func++;
- bytecount++;
- }
-
- // two-byte opcode byte
- if(*func == 0x0F)
- {
- twoByte = 1;
- if (dest)
- *dest++ = *func++;
- else
- func++;
- bytecount++;
- }
-
- // opcode byte
- opcode = *func++;
- if (dest) *dest++ = opcode;
- bytecount++;
-
- // mod R/M byte
- modRM = 0xFF;
- if(FPU)
- {
- if((opcode & 0xC0) != 0xC0)
- {
- modRM = opcode;
- }
- }
- else if(!twoByte)
- {
- if((opcode & 0xC4) == 0x00 ||
- ((opcode & 0xF4) == 0x60 && ((opcode & 0x0A) == 0x02 || (opcode & 0x09) == 0x09)) ||
- (opcode & 0xF0) == 0x80 ||
- ((opcode & 0xF8) == 0xC0 && (opcode & 0x0E) != 0x02) ||
- (opcode & 0xFC) == 0xD0 ||
- (opcode & 0xF6) == 0xF6)
- {
- modRM = *func++;
- if (dest) *dest++ = modRM;
- bytecount++;
- }
- }
- else
- {
- if(((opcode & 0xF0) == 0x00 && (opcode & 0x0F) >= 0x04 && (opcode & 0x0D) != 0x0D) ||
- (opcode & 0xF0) == 0x30 ||
- opcode == 0x77 ||
- (opcode & 0xF0) == 0x80 ||
- ((opcode & 0xF0) == 0xA0 && (opcode & 0x07) <= 0x02) ||
- (opcode & 0xF8) == 0xC8)
- {
- // No mod R/M byte
- }
- else
- {
- modRM = *func++;
- if (dest) *dest++ = modRM;
- bytecount++;
- }
- }
-
- // SIB
- if((modRM & 0x07) == 0x04 &&
- (modRM & 0xC0) != 0xC0)
- {
- if (dest)
- *dest++ = *func++; //SIB
- else
- func++;
- bytecount++;
- }
-
- // mod R/M displacement
-
- // Dword displacement, no base
- if((modRM & 0xC5) == 0x05) {
- if (dest) {
- *(unsigned int*)dest = *(unsigned int*)func;
- dest += 4;
- }
- func += 4;
- bytecount += 4;
- }
-
- // Byte displacement
- if((modRM & 0xC0) == 0x40) {
- if (dest)
- *dest++ = *func++;
- else
- func++;
- bytecount++;
- }
-
- // Dword displacement
- if((modRM & 0xC0) == 0x80) {
- if (dest) {
- *(unsigned int*)dest = *(unsigned int*)func;
- dest += 4;
- }
- func += 4;
- bytecount += 4;
- }
-
- // immediate
- if(FPU)
- {
- // Can't have immediate operand
- }
- else if(!twoByte)
- {
- if((opcode & 0xC7) == 0x04 ||
- (opcode & 0xFE) == 0x6A || // PUSH/POP/IMUL
- (opcode & 0xF0) == 0x70 || // Jcc
- opcode == 0x80 ||
- opcode == 0x83 ||
- (opcode & 0xFD) == 0xA0 || // MOV
- opcode == 0xA8 || // TEST
- (opcode & 0xF8) == 0xB0 || // MOV
- (opcode & 0xFE) == 0xC0 || // RCL
- opcode == 0xC6 || // MOV
- opcode == 0xCD || // INT
- (opcode & 0xFE) == 0xD4 || // AAD/AAM
- (opcode & 0xF8) == 0xE0 || // LOOP/JCXZ
- opcode == 0xEB ||
- (opcode == 0xF6 && (modRM & 0x30) == 0x00)) // TEST
- {
- if (dest)
- *dest++ = *func++;
- else
- func++;
- bytecount++;
- }
- else if((opcode & 0xF7) == 0xC2) // RET
- {
- if (dest) {
- *(unsigned short*)dest = *(unsigned short*)func;
- dest += 2;
- }
- func += 2;
- bytecount += 2;
- }
- else if((opcode & 0xFC) == 0x80 ||
- (opcode & 0xC7) == 0x05 ||
- (opcode & 0xF8) == 0xB8 ||
- (opcode & 0xFE) == 0xE8 || // CALL/Jcc
- (opcode & 0xFE) == 0x68 ||
- (opcode & 0xFC) == 0xA0 ||
- (opcode & 0xEE) == 0xA8 ||
- opcode == 0xC7 ||
- (opcode == 0xF7 && (modRM & 0x30) == 0x00))
- {
- if (dest) {
- //Fix CALL/JMP offset
- if ((opcode & 0xFE) == 0xE8) {
- if (operandSize == 4)
- {
- *(long*)dest = ((func + *(long*)func) - dest);
-
- //pRED* edit. func is the current address of the call address, +4 is the next instruction, so the value of $pc
- check_thunks(dest+4, func+4);
- }
- else
- *(short*)dest = ((func + *(short*)func) - dest);
-
- } else {
- if (operandSize == 4)
- *(unsigned long*)dest = *(unsigned long*)func;
- else
- *(unsigned short*)dest = *(unsigned short*)func;
- }
- dest += operandSize;
- }
- func += operandSize;
- bytecount += operandSize;
-
- }
- }
- else
- {
- if(opcode == 0xBA || // BT
- opcode == 0x0F || // 3DNow!
- (opcode & 0xFC) == 0x70 || // PSLLW
- (opcode & 0xF7) == 0xA4 || // SHLD
- opcode == 0xC2 ||
- opcode == 0xC4 ||
- opcode == 0xC5 ||
- opcode == 0xC6)
- {
- if (dest)
- *dest++ = *func++;
- else
- func++;
- }
- else if((opcode & 0xF0) == 0x80) // Jcc -i
- {
- if (dest) {
- if (operandSize == 4)
- *(unsigned long*)dest = *(unsigned long*)func;
- else
- *(unsigned short*)dest = *(unsigned short*)func;
-
- dest += operandSize;
- }
- func += operandSize;
- bytecount += operandSize;
- }
- }
- }
-
- return bytecount;
-}
-
-//insert a specific JMP instruction at the given location
-void inject_jmp(void* src, void* dest) {
- *(unsigned char*)src = OP_JMP;
- *(long*)((unsigned char*)src+1) = (long)((unsigned char*)dest - ((unsigned char*)src + OP_JMP_SIZE));
-}
-
-//fill a given block with NOPs
-void fill_nop(void* src, unsigned int len) {
- unsigned char* src2 = (unsigned char*)src;
- while (len) {
- *src2++ = OP_NOP;
- --len;
- }
-}
-
-void* eval_jump(void* src) {
- unsigned char* addr = (unsigned char*)src;
-
- if (!addr) return 0;
-
- //import table jump
- if (addr[0] == OP_PREFIX && addr[1] == OP_JMP_SEG) {
- addr += 2;
- addr = *(unsigned char**)addr;
- //TODO: if addr points into the IAT
- return *(void**)addr;
- }
-
- //8bit offset
- else if (addr[0] == OP_JMP_BYTE) {
- addr = &addr[OP_JMP_BYTE_SIZE] + *(char*)&addr[1];
- //mangled 32bit jump?
- if (addr[0] == OP_JMP) {
- addr = addr + *(int*)&addr[1];
- }
- return addr;
- }
- /*
- //32bit offset
- else if (addr[0] == OP_JMP) {
- addr = &addr[OP_JMP_SIZE] + *(int*)&addr[1];
- }
- */
-
- return addr;
-}
-/*
-from ms detours package
-static bool detour_is_imported(PBYTE pbCode, PBYTE pbAddress)
-{
- MEMORY_BASIC_INFORMATION mbi;
- VirtualQuery((PVOID)pbCode, &mbi, sizeof(mbi));
- __try {
- PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER)mbi.AllocationBase;
- if (pDosHeader->e_magic != IMAGE_DOS_SIGNATURE) {
- return false;
- }
-
- PIMAGE_NT_HEADERS pNtHeader = (PIMAGE_NT_HEADERS)((PBYTE)pDosHeader +
- pDosHeader->e_lfanew);
- if (pNtHeader->Signature != IMAGE_NT_SIGNATURE) {
- return false;
- }
-
- if (pbAddress >= ((PBYTE)pDosHeader +
- pNtHeader->OptionalHeader
- .DataDirectory[IMAGE_DIRECTORY_ENTRY_IAT].VirtualAddress) &&
- pbAddress < ((PBYTE)pDosHeader +
- pNtHeader->OptionalHeader
- .DataDirectory[IMAGE_DIRECTORY_ENTRY_IAT].VirtualAddress +
- pNtHeader->OptionalHeader
- .DataDirectory[IMAGE_DIRECTORY_ENTRY_IAT].Size)) {
- return true;
- }
- return false;
- }
- __except(EXCEPTION_EXECUTE_HANDLER) {
- return false;
- }
-}
-*/
diff --git a/asm/asm.h b/asm/asm.h
deleted file mode 100644
index 838e691..0000000
--- a/asm/asm.h
+++ /dev/null
@@ -1,40 +0,0 @@
-#ifndef __ASM_H__
-#define __ASM_H__
-
-#define OP_JMP 0xE9
-#define OP_JMP_SIZE 5
-
-#define OP_NOP 0x90
-#define OP_NOP_SIZE 1
-
-#define OP_PREFIX 0xFF
-#define OP_JMP_SEG 0x25
-
-#define OP_JMP_BYTE 0xEB
-#define OP_JMP_BYTE_SIZE 2
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void check_thunks(unsigned char *dest, unsigned char *pc);
-
-//if dest is NULL, returns minimum number of bytes needed to be copied
-//if dest is not NULL, it will copy the bytes to dest as well as fix CALLs and JMPs
-//http://www.devmaster.net/forums/showthread.php?t=2311
-int copy_bytes(unsigned char *func, unsigned char* dest, int required_len);
-
-//insert a specific JMP instruction at the given location
-void inject_jmp(void* src, void* dest);
-
-//fill a given block with NOPs
-void fill_nop(void* src, unsigned int len);
-
-//evaluate a JMP at the target
-void* eval_jump(void* src);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif //__ASM_H__
diff --git a/configure.py b/configure.py
new file mode 100644
index 0000000..0461e94
--- /dev/null
+++ b/configure.py
@@ -0,0 +1,21 @@
+# vim: set sts=2 ts=8 sw=2 tw=99 et:
+import sys
+from ambuild2 import run
+
+builder = run.PrepareBuild(sourcePath = sys.path[0])
+
+builder.options.add_option('--hl2sdk-root', type=str, dest='hl2sdk_root', default=None,
+ help='Root search folder for HL2SDKs')
+builder.options.add_option('--mms-path', type=str, dest='mms_path', default=None,
+ help='Path to Metamod:Source')
+builder.options.add_option('--sm-path', type=str, dest='sm_path', default=None,
+ help='Path to SourceMod')
+builder.options.add_option('--enable-debug', action='store_const', const='1', dest='debug',
+ help='Enable debugging symbols')
+builder.options.add_option('--enable-optimize', action='store_const', const='1', dest='opt',
+ help='Enable optimization')
+builder.options.add_option('-s', '--sdks', default='all', dest='sdks',
+ help='Build against specified SDKs; valid args are "all", "present", or '
+ 'comma-delimited list of engine names (default: %default)')
+
+builder.Configure()
diff --git a/msvc10/sdk.sln b/msvc10/sdk.sln
deleted file mode 100644
index 28a35ca..0000000
--- a/msvc10/sdk.sln
+++ /dev/null
@@ -1,80 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sdk", "sdk.vcxproj", "{B3E797CF-4E77-4C9D-B8A8-7589B6902206}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug - CSGO|Win32 = Debug - CSGO|Win32
- Debug - Alien Swarm|Win32 = Debug - Alien Swarm|Win32
- Debug - CSS|Win32 = Debug - CSS|Win32
- Debug - Dark Messiah|Win32 = Debug - Dark Messiah|Win32
- Debug - Episode 1|Win32 = Debug - Episode 1|Win32
- Debug - Left 4 Dead 2|Win32 = Debug - Left 4 Dead 2|Win32
- Debug - Left 4 Dead|Win32 = Debug - Left 4 Dead|Win32
- Debug - Old Metamod|Win32 = Debug - Old Metamod|Win32
- Debug - Orange Box Valve|Win32 = Debug - Orange Box Valve|Win32
- Debug - Orange Box|Win32 = Debug - Orange Box|Win32
- Debug|Win32 = Debug|Win32
- Release - CSGO|Win32 = Release - CSGO|Win32
- Release - CSS|Win32 = Release - CSS|Win32
- Release - Alien Swarm|Win32 = Release - Alien Swarm|Win32
- Release - Dark Messiah|Win32 = Release - Dark Messiah|Win32
- Release - Episode 1|Win32 = Release - Episode 1|Win32
- Release - Left 4 Dead 2|Win32 = Release - Left 4 Dead 2|Win32
- Release - Left 4 Dead|Win32 = Release - Left 4 Dead|Win32
- Release - Old Metamod|Win32 = Release - Old Metamod|Win32
- Release - Orange Box Valve|Win32 = Release - Orange Box Valve|Win32
- Release - Orange Box|Win32 = Release - Orange Box|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Alien Swarm|Win32.ActiveCfg = Debug - Alien Swarm|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Alien Swarm|Win32.Build.0 = Debug - Alien Swarm|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - CSGO|Win32.ActiveCfg = Debug - CSGO|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - CSGO|Win32.Build.0 = Debug - CSGO|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - CSS|Win32.ActiveCfg = Debug - CSS|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - CSS|Win32.Build.0 = Debug - CSS|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Dark Messiah|Win32.ActiveCfg = Debug - Dark Messiah|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Dark Messiah|Win32.Build.0 = Debug - Dark Messiah|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Episode 1|Win32.ActiveCfg = Debug - Episode 1|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Episode 1|Win32.Build.0 = Debug - Episode 1|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Left 4 Dead 2|Win32.ActiveCfg = Debug - Left 4 Dead 2|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Left 4 Dead 2|Win32.Build.0 = Debug - Left 4 Dead 2|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Left 4 Dead|Win32.ActiveCfg = Debug - Left 4 Dead|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Left 4 Dead|Win32.Build.0 = Debug - Left 4 Dead|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Old Metamod|Win32.ActiveCfg = Debug - Old Metamod|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Old Metamod|Win32.Build.0 = Debug - Old Metamod|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Orange Box Valve|Win32.ActiveCfg = Debug - Orange Box Valve|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Orange Box Valve|Win32.Build.0 = Debug - Orange Box Valve|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Orange Box|Win32.ActiveCfg = Debug - Orange Box|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Orange Box|Win32.Build.0 = Debug - Orange Box|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug|Win32.ActiveCfg = Debug|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug|Win32.Build.0 = Debug|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Alien Swarm|Win32.ActiveCfg = Release - Alien Swarm|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Alien Swarm|Win32.Build.0 = Release - Alien Swarm|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Dark Messiah|Win32.ActiveCfg = Release - Dark Messiah|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Dark Messiah|Win32.Build.0 = Release - Dark Messiah|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - CSGO|Win32.ActiveCfg = Release - CSGO|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - CSGO|Win32.Build.0 = Release - CSGO|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - CSS|Win32.ActiveCfg = Release - CSS|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - CSS|Win32.Build.0 = Release - CSS|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Episode 1|Win32.ActiveCfg = Release - Episode 1|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Episode 1|Win32.Build.0 = Release - Episode 1|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Left 4 Dead 2|Win32.ActiveCfg = Release - Left 4 Dead 2|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Left 4 Dead 2|Win32.Build.0 = Release - Left 4 Dead 2|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Left 4 Dead|Win32.ActiveCfg = Release - Left 4 Dead|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Left 4 Dead|Win32.Build.0 = Release - Left 4 Dead|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Old Metamod|Win32.ActiveCfg = Release - Old Metamod|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Old Metamod|Win32.Build.0 = Release - Old Metamod|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Orange Box Valve|Win32.ActiveCfg = Release - Orange Box Valve|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Orange Box Valve|Win32.Build.0 = Release - Orange Box Valve|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Orange Box|Win32.ActiveCfg = Release - Orange Box|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Orange Box|Win32.Build.0 = Release - Orange Box|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release|Win32.ActiveCfg = Release|Win32
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/msvc10/sdk.vcxproj b/msvc10/sdk.vcxproj
deleted file mode 100644
index 7b59bb1..0000000
--- a/msvc10/sdk.vcxproj
+++ /dev/null
@@ -1,1164 +0,0 @@
-
-
-
-
- Debug - CSGO
- Win32
-
-
- Debug - CSS
- Win32
-
-
- Debug - Alien Swarm
- Win32
-
-
- Debug - Dark Messiah
- Win32
-
-
- Debug - Episode 1
- Win32
-
-
- Debug - Left 4 Dead 2
- Win32
-
-
- Debug - Left 4 Dead
- Win32
-
-
- Debug - Old Metamod
- Win32
-
-
- Debug - Orange Box Valve
- Win32
-
-
- Debug - Orange Box
- Win32
-
-
- Debug - Orange Box
- Win32
-
-
- Debug - Orange Box
- Win32
-
-
- Debug
- Win32
-
-
- Release - CSGO
- Win32
-
-
- Release - CSS
- Win32
-
-
- Release - Alien Swarm
- Win32
-
-
- Release - Dark Messiah
- Win32
-
-
- Release - Episode 1
- Win32
-
-
- Release - Left 4 Dead 2
- Win32
-
-
- Release - Left 4 Dead
- Win32
-
-
- Release - Old Metamod
- Win32
-
-
- Release - Orange Box Valve
- Win32
-
-
- Release - Orange Box
- Win32
-
-
- Release - Bloody Good Time
- Win32
-
-
- Release - EYE
- Win32
-
-
- Release
- Win32
-
-
-
- {B3E797CF-4E77-4C9D-B8A8-7589B6902206}
- sdk
- Win32Proj
-
-
-
- DynamicLibrary
- MultiByte
- true
-
-
- DynamicLibrary
- MultiByte
-
-
- DynamicLibrary
- MultiByte
- true
-
-
- DynamicLibrary
- MultiByte
- true
-
-
- DynamicLibrary
- MultiByte
- true
-
-
- DynamicLibrary
- MultiByte
-
-
- DynamicLibrary
- MultiByte
-
-
- DynamicLibrary
- MultiByte
- true
-
-
- DynamicLibrary
- MultiByte
-
-
- DynamicLibrary
- MultiByte
-
-
- DynamicLibrary
- MultiByte
- true
-
-
- DynamicLibrary
- MultiByte
-
-
- DynamicLibrary
- MultiByte
- true
-
-
- DynamicLibrary
- MultiByte
-
-
- DynamicLibrary
- MultiByte
- true
-
-
- DynamicLibrary
- MultiByte
-
-
- DynamicLibrary
- MultiByte
-
-
- DynamicLibrary
- MultiByte
- true
-
-
- DynamicLibrary
- MultiByte
-
-
- DynamicLibrary
- MultiByte
- true
-
-
- DynamicLibrary
- MultiByte
- true
-
-
- DynamicLibrary
- MultiByte
-
-
- DynamicLibrary
- MultiByte
- true
-
-
- DynamicLibrary
- MultiByte
-
-
- DynamicLibrary
- MultiByte
- true
-
-
- DynamicLibrary
- MultiByte
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_ProjectFileVersion>10.0.30319.1
- true
- false
- true
- false
- true
- false
- true
- false
- true
- false
- true
- false
- true
- false
- true
- false
- true
- true
- true
- false
- false
- false
- true
- false
- true
- false
- AllRules.ruleset
-
-
- AllRules.ruleset
-
-
- AllRules.ruleset
- AllRules.ruleset
- AllRules.ruleset
-
-
-
-
-
-
- AllRules.ruleset
-
-
- AllRules.ruleset
-
-
- AllRules.ruleset
-
-
- AllRules.ruleset
-
-
- AllRules.ruleset
-
-
- AllRules.ruleset
-
-
- AllRules.ruleset
-
-
- AllRules.ruleset
-
-
- AllRules.ruleset
-
-
- AllRules.ruleset
-
-
- AllRules.ruleset
-
-
- AllRules.ruleset
-
-
- AllRules.ruleset
- AllRules.ruleset
-
-
-
-
- AllRules.ruleset
-
-
- AllRules.ruleset
-
-
- AllRules.ruleset
-
-
- AllRules.ruleset
-
-
- AllRules.ruleset
-
-
- AllRules.ruleset
-
-
- AllRules.ruleset
-
-
- cleaner.ext.2.darkm
- cleaner.ext.2.ep1
- cleaner.ext.2.l4d2
- cleaner.ext.2.csgo
- cleaner.ext.2.css
- cleaner.ext.2.swarm
- cleaner.ext.2.l4d
- cleaner.ext.1.ep1
- cleaner.ext.2.ep2v
- cleaner.ext.2.ep2
- cleaner.ext.2.bgt
- cleaner.ext.2.eye
- cleaner.ext
- cleaner.ext.2.darkm
- cleaner.ext.2.ep1
- cleaner.ext.2.l4d2
- cleaner.ext.2.csgo
- cleaner.ext.2.css
- cleaner.ext.2.swarm
- cleaner.ext.2.l4d
- cleaner.ext.1.ep1
- cleaner.ext.2.ep2v
- cleaner.ext.2.ep2
- cleaner.ext.2.bgt
- cleaner.ext.2.eye
- cleaner.ext
-
-
-
- Disabled
- ..;..\..;$(SOURCEMOD)\sourcepawn\include;$(SOURCEMOD)\public;%(AdditionalIncludeDirectories)
- WIN32;_DEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;%(PreprocessorDefinitions)
- true
- EnableFastChecks
- MultiThreadedDebug
- NotSet
- false
-
-
- Level3
- EditAndContinue
-
-
- LIBC;LIBCD;LIBCMT;%(IgnoreSpecificDefaultLibraries)
- true
- Windows
- false
-
-
- MachineX86
-
-
-
-
- Speed
- ..;..\..;$(SOURCEMOD)\sourcepawn\include;$(SOURCEMOD)\public;%(AdditionalIncludeDirectories)
- WIN32;NDEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;%(PreprocessorDefinitions)
- MultiThreaded
- NotSet
- false
-
-
- Level3
- ProgramDatabase
- /MP /D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_BLOODYGOODTIME=4 /D SE_EYE=5 /D SE_CSS=6 /D SE_ORANGEBOXVALVE=7 /D SE_LEFT4DEAD=8 /D SE_LEFT4DEAD2=9 /D SE_ALIENSWARM=10 /D SE_PORTAL2=11 /D SE_CSGO=12
-
-
- LIBC;LIBCD;LIBCMTD;%(IgnoreSpecificDefaultLibraries)
- true
- Windows
- true
- true
- false
-
-
- MachineX86
-
-
-
-
- /D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_BLOODYGOODTIME=4 /D SE_EYE=5 /D SE_CSS=6 /D SE_ORANGEBOXVALVE=7 /D SE_LEFT4DEAD=8 /D SE_LEFT4DEAD2=9 /D SE_ALIENSWARM=10 /D SE_PORTAL2=11 /D SE_CSGO=12
- Disabled
- ..;..\..;$(SOURCEMOD)\sourcepawn\include;$(SOURCEMOD)\public;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(MMSOURCE19)\core-legacy;$(MMSOURCE19)\core-legacy\sourcehook;%(AdditionalIncludeDirectories)
- WIN32;_DEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;SOURCE_ENGINE=1;%(PreprocessorDefinitions)
- true
- EnableFastChecks
- MultiThreadedDebug
- NotSet
- false
-
-
- Level3
- EditAndContinue
-
-
- $(HL2SDK)\lib\public\tier0.lib;$(HL2SDK)\lib\public\tier1.lib;$(HL2SDK)\lib\public\vstdlib.lib;%(AdditionalDependencies)
- LIBC;LIBCD;LIBCMT;%(IgnoreSpecificDefaultLibraries)
- true
- Windows
- false
-
-
- MachineX86
-
-
-
-
- /MP /D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_BLOODYGOODTIME=4 /D SE_EYE=5 /D SE_CSS=6 /D SE_ORANGEBOXVALVE=7 /D SE_LEFT4DEAD=8 /D SE_LEFT4DEAD2=9 /D SE_ALIENSWARM=10 /D SE_PORTAL2=11 /D SE_CSGO=12
- Speed
- ..;..\..;$(SOURCEMOD)\sourcepawn\include;$(SOURCEMOD)\public;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(MMSOURCE19)\core-legacy;$(MMSOURCE19)\core-legacy\sourcehook;%(AdditionalIncludeDirectories)
- WIN32;NDEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;SOURCE_ENGINE=1;%(PreprocessorDefinitions)
- MultiThreaded
- NotSet
- false
-
-
- Level3
- ProgramDatabase
-
-
- $(HL2SDK)\lib\public\tier0.lib;$(HL2SDK)\lib\public\tier1.lib;$(HL2SDK)\lib\public\vstdlib.lib;%(AdditionalDependencies)
- LIBC;LIBCD;LIBCMTD;%(IgnoreSpecificDefaultLibraries)
- true
- Windows
- true
- true
- false
-
-
- MachineX86
-
-
-
-
- /D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_BLOODYGOODTIME=4 /D SE_EYE=5 /D SE_CSS=6 /D SE_ORANGEBOXVALVE=7 /D SE_LEFT4DEAD=8 /D SE_LEFT4DEAD2=9 /D SE_ALIENSWARM=10 /D SE_PORTAL2=11 /D SE_CSGO=12
- Disabled
- ..;..\..;$(SOURCEMOD)\sourcepawn\include;$(SOURCEMOD)\public;$(HL2SDK-DARKM)\public;$(HL2SDK-DARKM)\public\dlls;$(HL2SDK-DARKM)\public\engine;$(HL2SDK-DARKM)\public\tier0;$(HL2SDK-DARKM)\public\tier1;$(MMSOURCE19)\core;$(MMSOURCE19)\core\sourcehook;%(AdditionalIncludeDirectories)
- WIN32;_DEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;SOURCE_ENGINE=2;%(PreprocessorDefinitions)
- true
- EnableFastChecks
- MultiThreadedDebug
- NotSet
- false
-
-
- Level3
- EditAndContinue
-
-
- $(HL2SDK-DARKM)\lib\public\tier0.lib;$(HL2SDK-DARKM)\lib\public\tier1.lib;$(HL2SDK-DARKM)\lib\public\vstdlib.lib;%(AdditionalDependencies)
- LIBC;LIBCD;LIBCMT;%(IgnoreSpecificDefaultLibraries)
- true
- Windows
- false
-
-
- MachineX86
-
-
-
-
- /MP /D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_BLOODYGOODTIME=4 /D SE_EYE=5 /D SE_CSS=6 /D SE_ORANGEBOXVALVE=7 /D SE_LEFT4DEAD=8 /D SE_LEFT4DEAD2=9 /D SE_ALIENSWARM=10 /D SE_PORTAL2=11 /D SE_CSGO=12
- Speed
- ..;..\..;$(SOURCEMOD)\sourcepawn\include;$(SOURCEMOD)\public;$(HL2SDK-DARKM)\public;$(HL2SDK-DARKM)\public\dlls;$(HL2SDK-DARKM)\public\engine;$(HL2SDK-DARKM)\public\tier0;$(HL2SDK-DARKM)\public\tier1;$(MMSOURCE19)\core;$(MMSOURCE19)\core\sourcehook;%(AdditionalIncludeDirectories)
- WIN32;NDEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;SOURCE_ENGINE=2;%(PreprocessorDefinitions)
- MultiThreaded
- NotSet
- false
-
-
- Level3
- ProgramDatabase
-
-
- $(HL2SDK-DARKM)\lib\public\tier0.lib;$(HL2SDK-DARKM)\lib\public\tier1.lib;$(HL2SDK-DARKM)\lib\public\vstdlib.lib;%(AdditionalDependencies)
- LIBC;LIBCD;LIBCMTD;%(IgnoreSpecificDefaultLibraries)
- true
- Windows
- true
- true
- false
-
-
- MachineX86
-
-
-
-
- /D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_BLOODYGOODTIME=4 /D SE_EYE=5 /D SE_CSS=6 /D SE_ORANGEBOXVALVE=7 /D SE_LEFT4DEAD=8 /D SE_LEFT4DEAD2=9 /D SE_ALIENSWARM=10 /D SE_PORTAL2=11 /D SE_CSGO=12
- Disabled
- ..;..\..;$(SOURCEMOD)\sourcepawn\include;$(SOURCEMOD)\public;$(HL2SDKOB)\public;$(HL2SDKOB)\public\engine;$(HL2SDKOB)\public\game\server;$(HL2SDKOB)\public\tier0;$(HL2SDKOB)\public\tier1;$(MMSOURCE19)\core;$(MMSOURCE19)\core\sourcehook;%(AdditionalIncludeDirectories)
- WIN32;_DEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;SOURCE_ENGINE=3;%(PreprocessorDefinitions)
- true
- EnableFastChecks
- MultiThreadedDebug
- NotSet
- false
-
-
- Level3
- EditAndContinue
-
-
- $(HL2SDKOB)\lib\public\tier0.lib;$(HL2SDKOB)\lib\public\tier1.lib;$(HL2SDKOB)\lib\public\vstdlib.lib;%(AdditionalDependencies)
- LIBC;LIBCD;LIBCMT;%(IgnoreSpecificDefaultLibraries)
- true
- Windows
- false
-
-
- MachineX86
-
-
-
-
- /MP /D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_BLOODYGOODTIME=4 /D SE_EYE=5 /D SE_CSS=6 /D SE_ORANGEBOXVALVE=7 /D SE_LEFT4DEAD=8 /D SE_LEFT4DEAD2=9 /D SE_ALIENSWARM=10 /D SE_PORTAL2=11 /D SE_CSGO=12
- Speed
- ..;..\..;$(SOURCEMOD)\sourcepawn\include;$(SOURCEMOD)\public;$(HL2SDKOB)\public;$(HL2SDKOB)\public\engine;$(HL2SDKOB)\public\game\server;$(HL2SDKOB)\public\tier0;$(HL2SDKOB)\public\tier1;$(MMSOURCE19)\core;$(MMSOURCE19)\core\sourcehook;%(AdditionalIncludeDirectories)
- WIN32;NDEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;SOURCE_ENGINE=3;%(PreprocessorDefinitions)
- MultiThreaded
- NotSet
- false
-
-
- Level3
- ProgramDatabase
-
-
- $(HL2SDKOB)\lib\public\tier0.lib;$(HL2SDKOB)\lib\public\tier1.lib;$(HL2SDKOB)\lib\public\vstdlib.lib;%(AdditionalDependencies)
- LIBC;LIBCD;LIBCMTD;%(IgnoreSpecificDefaultLibraries)
- true
- Windows
- true
- true
- false
-
-
- MachineX86
-
-
-
-
- /D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_BLOODYGOODTIME=4 /D SE_EYE=5 /D SE_CSS=6 /D SE_ORANGEBOXVALVE=7 /D SE_LEFT4DEAD=8 /D SE_LEFT4DEAD2=9 /D SE_ALIENSWARM=10 /D SE_PORTAL2=11 /D SE_CSGO=12
- Disabled
- ..;..\..;$(SOURCEMOD)\sourcepawn\include;$(SOURCEMOD)\public;$(HL2SDKOBVALVE)\public;$(HL2SDKOBVALVE)\public\engine;$(HL2SDKOBVALVE)\public\game\server;$(HL2SDKOBVALVE)\public\tier0;$(HL2SDKOBVALVE)\public\tier1;$(MMSOURCE19)\core;$(MMSOURCE19)\core\sourcehook;%(AdditionalIncludeDirectories)
- WIN32;_DEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;SOURCE_ENGINE=7;%(PreprocessorDefinitions)
- true
- EnableFastChecks
- MultiThreadedDebug
- NotSet
- false
-
-
- Level3
- EditAndContinue
-
-
- $(HL2SDKOBVALVE)\lib\public\tier0.lib;$(HL2SDKOBVALVE)\lib\public\tier1.lib;$(HL2SDKOBVALVE)\lib\public\vstdlib.lib;%(AdditionalDependencies)
- LIBC;LIBCD;LIBCMT;%(IgnoreSpecificDefaultLibraries)
- true
- Windows
- false
-
-
- MachineX86
-
-
-
-
- /MP /D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_BLOODYGOODTIME=4 /D SE_EYE=5 /D SE_CSS=6 /D SE_ORANGEBOXVALVE=7 /D SE_LEFT4DEAD=8 /D SE_LEFT4DEAD2=9 /D SE_ALIENSWARM=10 /D SE_PORTAL2=11 /D SE_CSGO=12
- Speed
- ..;..\..;$(SOURCEMOD)\sourcepawn\include;$(SOURCEMOD)\public;$(HL2SDKOBVALVE)\public;$(HL2SDKOBVALVE)\public\engine;$(HL2SDKOBVALVE)\public\game\server;$(HL2SDKOBVALVE)\public\tier0;$(HL2SDKOBVALVE)\public\tier1;$(MMSOURCE19)\core;$(MMSOURCE19)\core\sourcehook;%(AdditionalIncludeDirectories)
- WIN32;NDEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;SOURCE_ENGINE=7;%(PreprocessorDefinitions)
- MultiThreaded
- NotSet
- false
-
-
- Level3
- ProgramDatabase
-
-
- $(HL2SDKOBVALVE)\lib\public\tier0.lib;$(HL2SDKOBVALVE)\lib\public\tier1.lib;$(HL2SDKOBVALVE)\lib\public\vstdlib.lib;%(AdditionalDependencies)
- LIBC;LIBCD;LIBCMTD;%(IgnoreSpecificDefaultLibraries)
- true
- Windows
- true
- true
- false
-
-
- MachineX86
-
-
-
-
- /D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_BLOODYGOODTIME=4 /D SE_EYE=5 /D SE_CSS=6 /D SE_ORANGEBOXVALVE=7 /D SE_LEFT4DEAD=8 /D SE_LEFT4DEAD2=9 /D SE_ALIENSWARM=10 /D SE_PORTAL2=11 /D SE_CSGO=12
- Disabled
- ..;..\..;$(SOURCEMOD)\sourcepawn\include;$(SOURCEMOD)\public;$(HL2SDKCSS)\public;$(HL2SDKCSS)\public\engine;$(HL2SDKCSS)\public\game\server;$(HL2SDKCSS)\public\tier0;$(HL2SDKCSS)\public\tier1;$(MMSOURCE19)\core;$(MMSOURCE19)\core\sourcehook;%(AdditionalIncludeDirectories)
- WIN32;_DEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;SOURCE_ENGINE=6;%(PreprocessorDefinitions)
- true
- EnableFastChecks
- MultiThreadedDebug
- NotSet
- false
-
-
- Level3
- EditAndContinue
-
-
- $(HL2SDKCSS)\lib\public\tier0.lib;$(HL2SDKCSS)\lib\public\tier1.lib;$(HL2SDKCSS)\lib\public\vstdlib.lib;%(AdditionalDependencies)
- LIBC;LIBCD;LIBCMT;%(IgnoreSpecificDefaultLibraries)
- true
- Windows
- false
-
-
- MachineX86
-
-
-
-
- /MP /D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_BLOODYGOODTIME=4 /D SE_EYE=5 /D SE_CSS=6 /D SE_ORANGEBOXVALVE=7 /D SE_LEFT4DEAD=8 /D SE_LEFT4DEAD2=9 /D SE_ALIENSWARM=10 /D SE_PORTAL2=11 /D SE_CSGO=12
- Speed
- ..;..\..;$(SOURCEMOD)\sourcepawn\include;$(SOURCEMOD)\public;$(HL2SDKCSS)\public;$(HL2SDKCSS)\public\engine;$(HL2SDKCSS)\public\game\server;$(HL2SDKCSS)\public\tier0;$(HL2SDKCSS)\public\tier1;$(MMSOURCE19)\core;$(MMSOURCE19)\core\sourcehook;%(AdditionalIncludeDirectories)
- WIN32;NDEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;SOURCE_ENGINE=6;%(PreprocessorDefinitions)
- MultiThreaded
- NotSet
- false
-
-
- Level3
- ProgramDatabase
-
-
- $(HL2SDKCSS)\lib\public\tier0.lib;$(HL2SDKCSS)\lib\public\tier1.lib;$(HL2SDKCSS)\lib\public\vstdlib.lib;%(AdditionalDependencies)
- LIBC;LIBCD;LIBCMTD;%(IgnoreSpecificDefaultLibraries)
- true
- Windows
- true
- true
- false
-
-
- MachineX86
-
-
-
-
- /D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_BLOODYGOODTIME=4 /D SE_EYE=5 /D SE_CSS=6 /D SE_ORANGEBOXVALVE=7 /D SE_LEFT4DEAD=8 /D SE_LEFT4DEAD2=9 /D SE_ALIENSWARM=10 /D SE_PORTAL2=11 /D SE_CSGO=12
- Disabled
- ..;..\..;$(SOURCEMOD)\sourcepawn\include;$(SOURCEMOD)\public;$(HL2SDK-BGT)\public;$(HL2SDK-BGT)\public\engine;$(HL2SDK-BGT)\public\game\server;$(HL2SDK-BGT)\public\tier0;$(HL2SDK-BGT)\public\tier1;$(MMSOURCE19)\core;$(MMSOURCE19)\core\sourcehook;%(AdditionalIncludeDirectories)
- WIN32;_DEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;SOURCE_ENGINE=4;%(PreprocessorDefinitions)
- true
- EnableFastChecks
- MultiThreadedDebug
- NotSet
- false
-
-
- Level3
- EditAndContinue
-
-
- $(HL2SDK-BGT)\lib\public\tier0.lib;$(HL2SDK-BGT)\lib\public\tier1.lib;$(HL2SDK-BGT)\lib\public\vstdlib.lib;%(AdditionalDependencies)
- LIBC;LIBCD;LIBCMT;%(IgnoreSpecificDefaultLibraries)
- true
- Windows
- false
-
-
- MachineX86
-
-
-
-
- /MP /D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_BLOODYGOODTIME=4 /D SE_EYE=5 /D SE_CSS=6 /D SE_ORANGEBOXVALVE=7 /D SE_LEFT4DEAD=8 /D SE_LEFT4DEAD2=9 /D SE_ALIENSWARM=10 /D SE_PORTAL2=11 /D SE_CSGO=12
- Speed
- ..;..\..;$(SOURCEMOD)\sourcepawn\include;$(SOURCEMOD)\public;$(HL2SDK-BGT)\public;$(HL2SDK-BGT)\public\engine;$(HL2SDK-BGT)\public\game\server;$(HL2SDK-BGT)\public\tier0;$(HL2SDK-BGT)\public\tier1;$(MMSOURCE19)\core;$(MMSOURCE19)\core\sourcehook;%(AdditionalIncludeDirectories)
- WIN32;NDEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;SOURCE_ENGINE=4;%(PreprocessorDefinitions)
- MultiThreaded
- NotSet
- false
-
-
- Level3
- ProgramDatabase
-
-
- $(HL2SDK-BGT)\lib\public\tier0.lib;$(HL2SDK-BGT)\lib\public\tier1.lib;$(HL2SDK-BGT)\lib\public\vstdlib.lib;%(AdditionalDependencies)
- LIBC;LIBCD;LIBCMTD;%(IgnoreSpecificDefaultLibraries)
- true
- Windows
- true
- true
- false
-
-
- MachineX86
-
-
-
-
- /D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_BLOODYGOODTIME=4 /D SE_EYE=5 /D SE_CSS=6 /D SE_ORANGEBOXVALVE=7 /D SE_LEFT4DEAD=8 /D SE_LEFT4DEAD2=9 /D SE_ALIENSWARM=10 /D SE_PORTAL2=11 /D SE_CSGO=12
- Disabled
- ..;..\..;$(SOURCEMOD)\sourcepawn\include;$(SOURCEMOD)\public;$(HL2SDK-EYE)\public;$(HL2SDK-EYE)\public\engine;$(HL2SDK-EYE)\public\game\server;$(HL2SDK-EYE)\public\tier0;$(HL2SDK-EYE)\public\tier1;$(MMSOURCE19)\core;$(MMSOURCE19)\core\sourcehook;%(AdditionalIncludeDirectories)
- WIN32;_DEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;SOURCE_ENGINE=5;%(PreprocessorDefinitions)
- true
- EnableFastChecks
- MultiThreadedDebug
- NotSet
- false
-
-
- Level3
- EditAndContinue
-
-
- $(HL2SDK-EYE)\lib\public\tier0.lib;$(HL2SDK-EYE)\lib\public\tier1.lib;$(HL2SDK-EYE)\lib\public\vstdlib.lib;%(AdditionalDependencies)
- LIBC;LIBCD;LIBCMT;%(IgnoreSpecificDefaultLibraries)
- true
- Windows
- false
-
-
- MachineX86
-
-
-
-
- /MP /D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_BLOODYGOODTIME=4 /D SE_EYE=5 /D SE_CSS=6 /D SE_ORANGEBOXVALVE=7 /D SE_LEFT4DEAD=8 /D SE_LEFT4DEAD2=9 /D SE_ALIENSWARM=10 /D SE_PORTAL2=11 /D SE_CSGO=12
- Speed
- ..;..\..;$(SOURCEMOD)\sourcepawn\include;$(SOURCEMOD)\public;$(HL2SDK-EYE)\public;$(HL2SDK-EYE)\public\engine;$(HL2SDK-EYE)\public\game\server;$(HL2SDK-EYE)\public\tier0;$(HL2SDK-EYE)\public\tier1;$(MMSOURCE19)\core;$(MMSOURCE19)\core\sourcehook;%(AdditionalIncludeDirectories)
- WIN32;NDEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;SOURCE_ENGINE=5;%(PreprocessorDefinitions)
- MultiThreaded
- NotSet
- false
-
-
- Level3
- ProgramDatabase
-
-
- $(HL2SDK-EYE)\lib\public\tier0.lib;$(HL2SDK-EYE)\lib\public\tier1.lib;$(HL2SDK-EYE)\lib\public\vstdlib.lib;%(AdditionalDependencies)
- LIBC;LIBCD;LIBCMTD;%(IgnoreSpecificDefaultLibraries)
- true
- Windows
- true
- true
- false
-
-
- MachineX86
-
-
-
-
- /D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_BLOODYGOODTIME=4 /D SE_EYE=5 /D SE_CSS=6 /D SE_ORANGEBOXVALVE=7 /D SE_LEFT4DEAD=8 /D SE_LEFT4DEAD2=9 /D SE_ALIENSWARM=10 /D SE_PORTAL2=11 /D SE_CSGO=12
- Disabled
- ..;..\..;$(SOURCEMOD)\sourcepawn\include;$(SOURCEMOD)\public;$(HL2SDKL4D)\public;$(HL2SDKL4D)\public\engine;$(HL2SDKL4D)\public\game\server;$(HL2SDKL4D)\public\tier0;$(HL2SDKL4D)\public\tier1;$(MMSOURCE19)\core;$(MMSOURCE19)\core\sourcehook;%(AdditionalIncludeDirectories)
- WIN32;_DEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;SOURCE_ENGINE=8;%(PreprocessorDefinitions)
- true
- EnableFastChecks
- MultiThreadedDebug
- NotSet
- false
-
-
- Level3
- EditAndContinue
-
-
- $(HL2SDKL4D)\lib\public\tier0.lib;$(HL2SDKL4D)\lib\public\tier1.lib;$(HL2SDKL4D)\lib\public\vstdlib.lib;%(AdditionalDependencies)
- LIBC;LIBCD;LIBCMT;%(IgnoreSpecificDefaultLibraries)
- true
- Windows
- false
-
-
- MachineX86
-
-
-
-
- /MP /D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_BLOODYGOODTIME=4 /D SE_EYE=5 /D SE_CSS=6 /D SE_ORANGEBOXVALVE=7 /D SE_LEFT4DEAD=8 /D SE_LEFT4DEAD2=9 /D SE_ALIENSWARM=10 /D SE_PORTAL2=11 /D SE_CSGO=12
- Speed
- ..;..\..;$(SOURCEMOD)\sourcepawn\include;$(SOURCEMOD)\public;$(HL2SDKL4D)\public;$(HL2SDKL4D)\public\engine;$(HL2SDKL4D)\public\game\server;$(HL2SDKL4D)\public\tier0;$(HL2SDKL4D)\public\tier1;$(MMSOURCE19)\core;$(MMSOURCE19)\core\sourcehook;%(AdditionalIncludeDirectories)
- WIN32;NDEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;SOURCE_ENGINE=8;%(PreprocessorDefinitions)
- MultiThreaded
- NotSet
- false
-
-
- Level3
- ProgramDatabase
-
-
- $(HL2SDKL4D)\lib\public\tier0.lib;$(HL2SDKL4D)\lib\public\tier1.lib;$(HL2SDKL4D)\lib\public\vstdlib.lib;%(AdditionalDependencies)
- LIBC;LIBCD;LIBCMTD;%(IgnoreSpecificDefaultLibraries)
- true
- Windows
- true
- true
- false
-
-
- MachineX86
-
-
-
-
- /D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_BLOODYGOODTIME=4 /D SE_EYE=5 /D SE_CSS=6 /D SE_ORANGEBOXVALVE=7 /D SE_LEFT4DEAD=8 /D SE_LEFT4DEAD2=9 /D SE_ALIENSWARM=10 /D SE_PORTAL2=11 /D SE_CSGO=12
- Disabled
- ..;..\..;$(SOURCEMOD)\sourcepawn\include;$(SOURCEMOD)\public;$(HL2SDKL4D2)\public;$(HL2SDKL4D2)\public\engine;$(HL2SDKL4D2)\public\game\server;$(HL2SDKL4D2)\public\tier0;$(HL2SDKL4D2)\public\tier1;$(MMSOURCE19)\core;$(MMSOURCE19)\core\sourcehook;%(AdditionalIncludeDirectories)
- WIN32;_DEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;SOURCE_ENGINE=9;%(PreprocessorDefinitions)
- true
- EnableFastChecks
- MultiThreadedDebug
- NotSet
- false
-
-
- Level3
- EditAndContinue
-
-
- $(HL2SDKL4D2)\lib\public\tier0.lib;$(HL2SDKL4D2)\lib\public\tier1.lib;$(HL2SDKL4D2)\lib\public\vstdlib.lib;%(AdditionalDependencies)
- LIBC;LIBCD;LIBCMT;%(IgnoreSpecificDefaultLibraries)
- true
- Windows
- false
-
-
- MachineX86
-
-
-
-
- /D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_BLOODYGOODTIME=4 /D SE_EYE=5 /D SE_CSS=6 /D SE_ORANGEBOXVALVE=7 /D SE_LEFT4DEAD=8 /D SE_LEFT4DEAD2=9 /D SE_ALIENSWARM=10 /D SE_PORTAL2=11 /D SE_CSGO=12
- Disabled
- ..;..\..;$(SOURCEMOD)\sourcepawn\include;$(SOURCEMOD)\public;$(HL2SDK-SWARM)\public;$(HL2SDK-SWARM)\public\engine;$(HL2SDK-SWARM)\public\game\server;$(HL2SDK-SWARM)\public\tier0;$(HL2SDK-SWARM)\public\tier1;$(MMSOURCE19)\core;$(MMSOURCE19)\core\sourcehook;%(AdditionalIncludeDirectories)
- WIN32;_DEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;COMPILER_MSVC;COMPILER_MSVC32;SOURCE_ENGINE=10;%(PreprocessorDefinitions)
- true
- EnableFastChecks
- MultiThreadedDebug
- NotSet
- false
-
-
- Level3
- EditAndContinue
-
-
- $(HL2SDK-SWARM)\lib\public\interfaces.lib;$(HL2SDK-SWARM)\lib\public\tier0.lib;$(HL2SDK-SWARM)\lib\public\tier1.lib;$(HL2SDK-SWARM)\lib\public\vstdlib.lib;%(AdditionalDependencies)
- LIBC;LIBCD;LIBCMT;%(IgnoreSpecificDefaultLibraries)
- true
- Windows
- false
-
-
- MachineX86
-
-
-
-
- /MP /D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_BLOODYGOODTIME=4 /D SE_EYE=5 /D SE_CSS=6 /D SE_ORANGEBOXVALVE=7 /D SE_LEFT4DEAD=8 /D SE_LEFT4DEAD2=9 /D SE_ALIENSWARM=10 /D SE_PORTAL2=11 /D SE_CSGO=12
- Speed
- ..;..\..;$(SOURCEMOD)\sourcepawn\include;$(SOURCEMOD)\public;$(HL2SDKL4D2)\public;$(HL2SDKL4D2)\public\engine;$(HL2SDKL4D2)\public\game\server;$(HL2SDKL4D2)\public\tier0;$(HL2SDKL4D2)\public\tier1;$(MMSOURCE19)\core;$(MMSOURCE19)\core\sourcehook;%(AdditionalIncludeDirectories)
- WIN32;NDEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;SOURCE_ENGINE=9;%(PreprocessorDefinitions)
- MultiThreaded
- NotSet
- false
-
-
- Level3
- ProgramDatabase
-
-
- $(HL2SDKL4D2)\lib\public\tier0.lib;$(HL2SDKL4D2)\lib\public\tier1.lib;$(HL2SDKL4D2)\lib\public\vstdlib.lib;%(AdditionalDependencies)
- LIBC;LIBCD;LIBCMTD;%(IgnoreSpecificDefaultLibraries)
- true
- Windows
- true
- true
- false
-
-
- MachineX86
-
-
-
-
- /MP /D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_BLOODYGOODTIME=4 /D SE_EYE=5 /D SE_CSS=6 /D SE_ORANGEBOXVALVE=7 /D SE_LEFT4DEAD=8 /D SE_LEFT4DEAD2=9 /D SE_ALIENSWARM=10 /D SE_PORTAL2=11 /D SE_CSGO=12
- Speed
- ..;..\..;$(SOURCEMOD)\sourcepawn\include;$(SOURCEMOD)\public;$(HL2SDK-SWARM)\public;$(HL2SDK-SWARM)\public\engine;$(HL2SDK-SWARM)\public\game\server;$(HL2SDK-SWARM)\public\tier0;$(HL2SDK-SWARM)\public\tier1;$(MMSOURCE19)\core;$(MMSOURCE19)\core\sourcehook;%(AdditionalIncludeDirectories)
- WIN32;NDEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;COMPILER_MSVC;COMPILER_MSVC32;SOURCE_ENGINE=10;%(PreprocessorDefinitions)
- MultiThreaded
- NotSet
- false
-
-
- Level3
- ProgramDatabase
-
-
- $(HL2SDK-SWARM)\lib\public\interfaces.lib;$(HL2SDK-SWARM)\lib\public\tier0.lib;$(HL2SDK-SWARM)\lib\public\tier1.lib;$(HL2SDK-SWARM)\lib\public\vstdlib.lib;%(AdditionalDependencies)
- LIBC;LIBCD;LIBCMTD;%(IgnoreSpecificDefaultLibraries)
- true
- Windows
- true
- true
- false
-
-
- MachineX86
-
-
-
-
- /D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_BLOODYGOODTIME=4 /D SE_EYE=5 /D SE_CSS=6 /D SE_ORANGEBOXVALVE=7 /D SE_LEFT4DEAD=8 /D SE_LEFT4DEAD2=9 /D SE_ALIENSWARM=10 /D SE_PORTAL2=11 /D SE_CSGO=12
- Disabled
- ..;..\..;$(SOURCEMOD)\sourcepawn\include;$(SOURCEMOD)\public;$(HL2SDKCSGO)\public;$(HL2SDKCSGO)\public\engine;$(HL2SDKCSGO)\public\game\server;$(HL2SDKCSGO)\public\tier0;$(HL2SDKCSGO)\public\tier1;$(MMSOURCE19)\core;$(MMSOURCE19)\core\sourcehook;%(AdditionalIncludeDirectories)
- WIN32;_DEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;COMPILER_MSVC;COMPILER_MSVC32;SOURCE_ENGINE=12;%(PreprocessorDefinitions)
- true
- EnableFastChecks
- MultiThreadedDebug
- NotSet
- false
-
-
- Level3
- EditAndContinue
-
-
- $(HL2SDKCSGO)\lib\public\interfaces.lib;$(HL2SDKCSGO)\lib\public\tier0.lib;$(HL2SDKCSGO)\lib\public\tier1.lib;$(HL2SDKCSGO)\lib\public\vstdlib.lib;%(AdditionalDependencies)
- LIBC;LIBCD;LIBCMT;%(IgnoreSpecificDefaultLibraries)
- true
- Windows
- false
-
-
- MachineX86
-
-
-
-
- /MP /D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_BLOODYGOODTIME=4 /D SE_EYE=5 /D SE_CSS=6 /D SE_ORANGEBOXVALVE=7 /D SE_LEFT4DEAD=8 /D SE_LEFT4DEAD2=9 /D SE_ALIENSWARM=10 /D SE_PORTAL2=11 /D SE_CSGO=12
- Speed
- ..;..\..;$(SOURCEMOD)\sourcepawn\include;$(SOURCEMOD)\public;$(HL2SDKCSGO)\public;$(HL2SDKCSGO)\public\engine;$(HL2SDKCSGO)\public\game\server;$(HL2SDKCSGO)\public\tier0;$(HL2SDKCSGO)\public\tier1;$(MMSOURCE19)\core;$(MMSOURCE19)\core\sourcehook;%(AdditionalIncludeDirectories)
- WIN32;NDEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;COMPILER_MSVC;COMPILER_MSVC32;SOURCE_ENGINE=12;%(PreprocessorDefinitions)
- MultiThreaded
- NotSet
- false
-
-
- Level3
- ProgramDatabase
-
-
- $(HL2SDKCSGO)\lib\public\interfaces.lib;$(HL2SDKCSGO)\lib\public\tier0.lib;$(HL2SDKCSGO)\lib\public\tier1.lib;$(HL2SDKCSGO)\lib\public\vstdlib.lib;%(AdditionalDependencies)
- LIBC;LIBCD;LIBCMTD;%(IgnoreSpecificDefaultLibraries)
- true
- Windows
- true
- true
- false
-
-
- MachineX86
-
-
-
-
- /D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_BLOODYGOODTIME=4 /D SE_EYE=5 /D SE_CSS=6 /D SE_ORANGEBOXVALVE=7 /D SE_LEFT4DEAD=8 /D SE_LEFT4DEAD2=9 /D SE_ALIENSWARM=10 /D SE_PORTAL2=11 /D SE_CSGO=12
- Disabled
- ..;..\..;$(SOURCEMOD)\sourcepawn\include;$(SOURCEMOD)\public;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(MMSOURCE19)\core;$(MMSOURCE19)\core\sourcehook;%(AdditionalIncludeDirectories)
- WIN32;_DEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;SOURCE_ENGINE=2;%(PreprocessorDefinitions)
- true
- EnableFastChecks
- MultiThreadedDebug
- NotSet
- false
-
-
- Level3
- EditAndContinue
-
-
- $(HL2SDK)\lib\public\tier0.lib;$(HL2SDK)\lib\public\tier1.lib;$(HL2SDK)\lib\public\vstdlib.lib;%(AdditionalDependencies)
- LIBC;LIBCD;LIBCMT;%(IgnoreSpecificDefaultLibraries)
- true
- Windows
- false
-
-
- MachineX86
-
-
-
-
- /MP /D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_BLOODYGOODTIME=4 /D SE_EYE=5 /D SE_CSS=6 /D SE_ORANGEBOXVALVE=7 /D SE_LEFT4DEAD=8 /D SE_LEFT4DEAD2=9 /D SE_ALIENSWARM=10 /D SE_PORTAL2=11 /D SE_CSGO=12
- Speed
- ..;..\..;$(SOURCEMOD)\sourcepawn\include;$(SOURCEMOD)\public;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(MMSOURCE19)\core;$(MMSOURCE19)\core\sourcehook;%(AdditionalIncludeDirectories)
- WIN32;NDEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;SOURCE_ENGINE=2;%(PreprocessorDefinitions)
- MultiThreaded
- NotSet
- false
-
-
- Level3
- ProgramDatabase
-
-
- $(HL2SDK)\lib\public\tier0.lib;$(HL2SDK)\lib\public\tier1.lib;$(HL2SDK)\lib\public\vstdlib.lib;%(AdditionalDependencies)
- LIBC;LIBCD;LIBCMTD;%(IgnoreSpecificDefaultLibraries)
- true
- Windows
- true
- true
- false
-
-
- MachineX86
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/msvc10/sdk.vcxproj.filters b/msvc10/sdk.vcxproj.filters
deleted file mode 100644
index 4702f12..0000000
--- a/msvc10/sdk.vcxproj.filters
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
- {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
- cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
-
-
- {93995380-89BD-4b04-88EB-625FBE52EBFB}
- h;hpp;hxx;hm;inl;inc;xsd
-
-
- {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
- rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav
-
-
- {31958233-BB2D-4e41-A8F9-CE8A4684F436}
-
-
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- SourceMod SDK
-
-
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- SourceMod SDK
-
-
- SourceMod SDK
-
-
-
\ No newline at end of file