mirror of
https://github.com/alliedmodders/metamod-source.git
synced 2025-12-06 18:08:31 +00:00
Added support for Dark Messiah engine and game. (no bug, r=me).
The development of this feature would not be possible without the support of the following people from the game's community: Dylan Riggs, Carl Pettengill, Ed Moreland, and Christian.
This commit is contained in:
parent
04f5af1828
commit
303176ab70
@ -42,6 +42,7 @@
|
|||||||
#define SOURCE_ENGINE_EPISODEONE 2 /**< Episode 1 Source Engine (second major SDK) */
|
#define SOURCE_ENGINE_EPISODEONE 2 /**< Episode 1 Source Engine (second major SDK) */
|
||||||
#define SOURCE_ENGINE_ORANGEBOX 3 /**< Orange Box Source Engine (third major SDK) */
|
#define SOURCE_ENGINE_ORANGEBOX 3 /**< Orange Box Source Engine (third major SDK) */
|
||||||
#define SOURCE_ENGINE_LEFT4DEAD 4 /**< Left 4 Dead */
|
#define SOURCE_ENGINE_LEFT4DEAD 4 /**< Left 4 Dead */
|
||||||
|
#define SOURCE_ENGINE_DARKMESSIAH 5 /**< Dark Messiah Multiplayer (based on original engine) */
|
||||||
|
|
||||||
#define METAMOD_PLAPI_VERSION 14 /**< Version of this header file */
|
#define METAMOD_PLAPI_VERSION 14 /**< Version of this header file */
|
||||||
#define METAMOD_PLAPI_NAME "ISmmPlugin" /**< Name of the plugin interface */
|
#define METAMOD_PLAPI_NAME "ISmmPlugin" /**< Name of the plugin interface */
|
||||||
|
|||||||
@ -194,13 +194,22 @@ mm_DetectGameInformation()
|
|||||||
metamod_path.assign(mm_path);
|
metamod_path.assign(mm_path);
|
||||||
|
|
||||||
/* Get value of -game from command line, defaulting to hl2 as engine seems to do */
|
/* Get value of -game from command line, defaulting to hl2 as engine seems to do */
|
||||||
const char *game_dir = provider->GetCommandLineValue("-game", "hl2");
|
const char *game_dir = provider->GetCommandLineValue("-game");
|
||||||
|
|
||||||
|
if (game_dir)
|
||||||
|
{
|
||||||
|
/* Get absolute path */
|
||||||
|
abspath(game_path, game_dir);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Get absolute path for current directory */
|
||||||
|
abspath(game_path, ".");
|
||||||
|
}
|
||||||
|
|
||||||
/* Get absolute path */
|
|
||||||
abspath(game_path, game_dir);
|
|
||||||
mod_path.assign(game_path);
|
mod_path.assign(game_path);
|
||||||
|
|
||||||
engine_build = provider->DetermineSourceEngine(game_dir);;
|
engine_build = provider->DetermineSourceEngine(game_dir);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -113,10 +113,12 @@ bool Command_Meta(IMetamodSourceCommandInfo *info)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if SOURCE_ENGINE == SE_ORANGEBOX
|
#if SOURCE_ENGINE == SE_LEFT4DEAD
|
||||||
|
CONMSG(" Engine: Left 4 Dead (2008)\n");
|
||||||
|
#elif SOURCE_ENGINE == SE_ORANGEBOX
|
||||||
CONMSG(" Engine: Episode 2 (Orange Box, 2007)\n");
|
CONMSG(" Engine: Episode 2 (Orange Box, 2007)\n");
|
||||||
#else
|
#else
|
||||||
CONMSG(" Engine: Left 4 Dead (2008)\n");
|
CONMSG(" Engine: Dark Messiah (2006)\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Display user messages
|
// Display user messages
|
||||||
|
|||||||
@ -115,7 +115,7 @@ namespace SourceMM
|
|||||||
* @param val Default string to return if none found.
|
* @param val Default string to return if none found.
|
||||||
* @return Parameter value.
|
* @return Parameter value.
|
||||||
*/
|
*/
|
||||||
virtual const char *GetCommandLineValue(const char *key, const char *defval) =0;
|
virtual const char *GetCommandLineValue(const char *key, const char *defval=NULL) =0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Prints a string to the remote server console.
|
* @brief Prints a string to the remote server console.
|
||||||
|
|||||||
@ -341,3 +341,19 @@ bool UTIL_Relatize(char buffer[],
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool UTIL_VerifySignature(const void *addr, const char *sig, size_t len)
|
||||||
|
{
|
||||||
|
unsigned char *addr1 = (unsigned char *) addr;
|
||||||
|
unsigned char *addr2 = (unsigned char *) sig;
|
||||||
|
|
||||||
|
for (size_t i = 0; i < len; i++)
|
||||||
|
{
|
||||||
|
if (addr2[i] == '*')
|
||||||
|
continue;
|
||||||
|
if (addr1[i] != addr2[i])
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|||||||
@ -85,5 +85,15 @@ bool UTIL_Relatize(char buffer[],
|
|||||||
const char *relTo,
|
const char *relTo,
|
||||||
const char *relFrom);
|
const char *relFrom);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Compares memory address against a signature.
|
||||||
|
*
|
||||||
|
* @param addr Memory address to check.
|
||||||
|
* @param sig Signature used to check against memory address. Accept 0x2A as wildcard.
|
||||||
|
* @param len Length of signature.
|
||||||
|
* @return True if signature was verified, false otherwise.
|
||||||
|
*/
|
||||||
|
bool UTIL_VerifySignature(const void *addr, const char *sig, size_t len);
|
||||||
|
|
||||||
#endif //_INCLUDE_UTIL_H
|
#endif //_INCLUDE_UTIL_H
|
||||||
|
|
||||||
|
|||||||
@ -5,16 +5,22 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mm_core", "mm_core.vcproj",
|
|||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug - Dark Messiah|Win32 = Debug - Dark Messiah|Win32
|
||||||
Debug - Left 4 Dead|Win32 = Debug - Left 4 Dead|Win32
|
Debug - Left 4 Dead|Win32 = Debug - Left 4 Dead|Win32
|
||||||
Debug - Orange Box|Win32 = Debug - Orange Box|Win32
|
Debug - Orange Box|Win32 = Debug - Orange Box|Win32
|
||||||
|
Release - Dark Messiah|Win32 = Release - Dark Messiah|Win32
|
||||||
Release - Left 4 Dead|Win32 = Release - Left 4 Dead|Win32
|
Release - Left 4 Dead|Win32 = Release - Left 4 Dead|Win32
|
||||||
Release - Orange Box|Win32 = Release - Orange Box|Win32
|
Release - Orange Box|Win32 = Release - Orange Box|Win32
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{F7D47743-73B3-49B5-9D76-2333C5DFD565}.Debug - Dark Messiah|Win32.ActiveCfg = Debug - Dark Messiah|Win32
|
||||||
|
{F7D47743-73B3-49B5-9D76-2333C5DFD565}.Debug - Dark Messiah|Win32.Build.0 = Debug - Dark Messiah|Win32
|
||||||
{F7D47743-73B3-49B5-9D76-2333C5DFD565}.Debug - Left 4 Dead|Win32.ActiveCfg = Debug - Left 4 Dead|Win32
|
{F7D47743-73B3-49B5-9D76-2333C5DFD565}.Debug - Left 4 Dead|Win32.ActiveCfg = Debug - Left 4 Dead|Win32
|
||||||
{F7D47743-73B3-49B5-9D76-2333C5DFD565}.Debug - Left 4 Dead|Win32.Build.0 = Debug - Left 4 Dead|Win32
|
{F7D47743-73B3-49B5-9D76-2333C5DFD565}.Debug - Left 4 Dead|Win32.Build.0 = Debug - Left 4 Dead|Win32
|
||||||
{F7D47743-73B3-49B5-9D76-2333C5DFD565}.Debug - Orange Box|Win32.ActiveCfg = Debug - Orange Box|Win32
|
{F7D47743-73B3-49B5-9D76-2333C5DFD565}.Debug - Orange Box|Win32.ActiveCfg = Debug - Orange Box|Win32
|
||||||
{F7D47743-73B3-49B5-9D76-2333C5DFD565}.Debug - Orange Box|Win32.Build.0 = Debug - Orange Box|Win32
|
{F7D47743-73B3-49B5-9D76-2333C5DFD565}.Debug - Orange Box|Win32.Build.0 = Debug - Orange Box|Win32
|
||||||
|
{F7D47743-73B3-49B5-9D76-2333C5DFD565}.Release - Dark Messiah|Win32.ActiveCfg = Release - Dark Messiah|Win32
|
||||||
|
{F7D47743-73B3-49B5-9D76-2333C5DFD565}.Release - Dark Messiah|Win32.Build.0 = Release - Dark Messiah|Win32
|
||||||
{F7D47743-73B3-49B5-9D76-2333C5DFD565}.Release - Left 4 Dead|Win32.ActiveCfg = Release - Left 4 Dead|Win32
|
{F7D47743-73B3-49B5-9D76-2333C5DFD565}.Release - Left 4 Dead|Win32.ActiveCfg = Release - Left 4 Dead|Win32
|
||||||
{F7D47743-73B3-49B5-9D76-2333C5DFD565}.Release - Left 4 Dead|Win32.Build.0 = Release - Left 4 Dead|Win32
|
{F7D47743-73B3-49B5-9D76-2333C5DFD565}.Release - Left 4 Dead|Win32.Build.0 = Release - Left 4 Dead|Win32
|
||||||
{F7D47743-73B3-49B5-9D76-2333C5DFD565}.Release - Orange Box|Win32.ActiveCfg = Release - Orange Box|Win32
|
{F7D47743-73B3-49B5-9D76-2333C5DFD565}.Release - Orange Box|Win32.ActiveCfg = Release - Orange Box|Win32
|
||||||
|
|||||||
@ -40,9 +40,10 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
AdditionalOptions="/D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories="..;..\..\loader;..\sourcehook;"$(HL2SDKOB)\public";"$(HL2SDKOB)\public\engine";"$(HL2SDKOB)\public\game\server";"$(HL2SDKOB)\public\tier0";"$(HL2SDKOB)\public\tier1";"$(HL2SDKOB)\public\vstdlib""
|
AdditionalIncludeDirectories="..;..\..\loader;..\sourcehook;"$(HL2SDKOB)\public";"$(HL2SDKOB)\public\engine";"$(HL2SDKOB)\public\game\server";"$(HL2SDKOB)\public\tier0";"$(HL2SDKOB)\public\tier1";"$(HL2SDKOB)\public\vstdlib""
|
||||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SOURCEMM_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SE_ORANGEBOX=3;SE_LEFT4DEAD=4;SOURCE_ENGINE=3"
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SOURCEMM_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCE_ENGINE=3"
|
||||||
MinimalRebuild="true"
|
MinimalRebuild="true"
|
||||||
BasicRuntimeChecks="3"
|
BasicRuntimeChecks="3"
|
||||||
RuntimeLibrary="1"
|
RuntimeLibrary="1"
|
||||||
@ -123,11 +124,12 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
AdditionalOptions="/D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
Optimization="3"
|
Optimization="3"
|
||||||
FavorSizeOrSpeed="1"
|
FavorSizeOrSpeed="1"
|
||||||
OmitFramePointers="true"
|
OmitFramePointers="true"
|
||||||
AdditionalIncludeDirectories="..;..\..\loader;..\sourcehook;"$(HL2SDKOB)\public";"$(HL2SDKOB)\public\engine";"$(HL2SDKOB)\public\game\server";"$(HL2SDKOB)\public\tier0";"$(HL2SDKOB)\public\tier1";"$(HL2SDKOB)\public\vstdlib""
|
AdditionalIncludeDirectories="..;..\..\loader;..\sourcehook;"$(HL2SDKOB)\public";"$(HL2SDKOB)\public\engine";"$(HL2SDKOB)\public\game\server";"$(HL2SDKOB)\public\tier0";"$(HL2SDKOB)\public\tier1";"$(HL2SDKOB)\public\vstdlib""
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SOURCEMM_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SE_ORANGEBOX=3;SE_LEFT4DEAD=4;SOURCE_ENGINE=3"
|
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SOURCEMM_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCE_ENGINE=3"
|
||||||
StringPooling="true"
|
StringPooling="true"
|
||||||
ExceptionHandling="1"
|
ExceptionHandling="1"
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
@ -209,9 +211,10 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
AdditionalOptions="/D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories="..;..\..\loader;..\sourcehook;"$(HL2SDKL4D)\public";"$(HL2SDKL4D)\public\engine";"$(HL2SDKL4D)\public\game\server";"$(HL2SDKL4D)\public\tier0";"$(HL2SDKL4D)\public\tier1";"$(HL2SDKL4D)\public\vstdlib""
|
AdditionalIncludeDirectories="..;..\..\loader;..\sourcehook;"$(HL2SDKL4D)\public";"$(HL2SDKL4D)\public\engine";"$(HL2SDKL4D)\public\game\server";"$(HL2SDKL4D)\public\tier0";"$(HL2SDKL4D)\public\tier1";"$(HL2SDKL4D)\public\vstdlib""
|
||||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SOURCEMM_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SE_ORANGEBOX=3;SE_LEFT4DEAD=4;SOURCE_ENGINE=4"
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SOURCEMM_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCE_ENGINE=4"
|
||||||
MinimalRebuild="true"
|
MinimalRebuild="true"
|
||||||
BasicRuntimeChecks="3"
|
BasicRuntimeChecks="3"
|
||||||
RuntimeLibrary="1"
|
RuntimeLibrary="1"
|
||||||
@ -292,11 +295,12 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
|
AdditionalOptions="/D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
Optimization="3"
|
Optimization="3"
|
||||||
FavorSizeOrSpeed="1"
|
FavorSizeOrSpeed="1"
|
||||||
OmitFramePointers="true"
|
OmitFramePointers="true"
|
||||||
AdditionalIncludeDirectories="..;..\..\loader;..\sourcehook;"$(HL2SDKL4D)\public";"$(HL2SDKL4D)\public\engine";"$(HL2SDKL4D)\public\game\server";"$(HL2SDKL4D)\public\tier0";"$(HL2SDKL4D)\public\tier1";"$(HL2SDKL4D)\public\vstdlib""
|
AdditionalIncludeDirectories="..;..\..\loader;..\sourcehook;"$(HL2SDKL4D)\public";"$(HL2SDKL4D)\public\engine";"$(HL2SDKL4D)\public\game\server";"$(HL2SDKL4D)\public\tier0";"$(HL2SDKL4D)\public\tier1";"$(HL2SDKL4D)\public\vstdlib""
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SOURCEMM_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SE_ORANGEBOX=3;SE_LEFT4DEAD=4;SOURCE_ENGINE=4"
|
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SOURCEMM_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCE_ENGINE=4"
|
||||||
StringPooling="true"
|
StringPooling="true"
|
||||||
ExceptionHandling="1"
|
ExceptionHandling="1"
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
@ -354,6 +358,177 @@
|
|||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
/>
|
/>
|
||||||
</Configuration>
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Debug - Dark Messiah|Win32"
|
||||||
|
OutputDirectory="$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="$(ConfigurationName)"
|
||||||
|
ConfigurationType="2"
|
||||||
|
CharacterSet="2"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
AdditionalOptions="/D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
|
Optimization="0"
|
||||||
|
AdditionalIncludeDirectories="..;..\..\loader;..\sourcehook;"$(HL2SDK-DARKM)\public";"$(HL2SDK-DARKM)\public\engine";"$(HL2SDK-DARKM)\public\dlls";"$(HL2SDK-DARKM)\public\tier0";"$(HL2SDK-DARKM)\public\tier1";"$(HL2SDK-DARKM)\public\vstdlib""
|
||||||
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SOURCEMM_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCE_ENGINE=2"
|
||||||
|
MinimalRebuild="true"
|
||||||
|
BasicRuntimeChecks="3"
|
||||||
|
RuntimeLibrary="1"
|
||||||
|
RuntimeTypeInfo="false"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
Detect64BitPortabilityProblems="false"
|
||||||
|
DebugInformationFormat="4"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
PreprocessorDefinitions="BINARY_NAME=\"$(TargetFileName)\""
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies=""$(HL2SDK-DARKM)\lib\public\tier0.lib" "$(HL2SDK-DARKM)\lib\public\tier1.lib" "$(HL2SDK-DARKM)\lib\public\vstdlib.lib""
|
||||||
|
OutputFile="$(OutDir)/metamod.2.darkm.dll"
|
||||||
|
LinkIncremental="2"
|
||||||
|
IgnoreDefaultLibraryNames="libc.lib;libcd.lib;libcmt.lib"
|
||||||
|
GenerateDebugInformation="true"
|
||||||
|
ProgramDatabaseFile="$(OutDir)/sourcemm.pdb"
|
||||||
|
SubSystem="2"
|
||||||
|
EnableCOMDATFolding="1"
|
||||||
|
RandomizedBaseAddress="1"
|
||||||
|
DataExecutionPrevention="0"
|
||||||
|
ImportLibrary="$(OutDir)/sourcemm.lib"
|
||||||
|
TargetMachine="1"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Release - Dark Messiah|Win32"
|
||||||
|
OutputDirectory="$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="$(ConfigurationName)"
|
||||||
|
ConfigurationType="2"
|
||||||
|
CharacterSet="2"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
AdditionalOptions="/D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
|
Optimization="3"
|
||||||
|
FavorSizeOrSpeed="1"
|
||||||
|
OmitFramePointers="true"
|
||||||
|
AdditionalIncludeDirectories="..;..\..\loader;..\sourcehook;"$(HL2SDK-DARKM)\public";"$(HL2SDK-DARKM)\public\engine";"$(HL2SDK-DARKM)\public\dlls";"$(HL2SDK-DARKM)\public\tier0";"$(HL2SDK-DARKM)\public\tier1";"$(HL2SDK-DARKM)\public\vstdlib""
|
||||||
|
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SOURCEMM_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCE_ENGINE=2"
|
||||||
|
StringPooling="true"
|
||||||
|
ExceptionHandling="1"
|
||||||
|
RuntimeLibrary="0"
|
||||||
|
BufferSecurityCheck="false"
|
||||||
|
RuntimeTypeInfo="false"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
Detect64BitPortabilityProblems="false"
|
||||||
|
DebugInformationFormat="3"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
PreprocessorDefinitions="BINARY_NAME=\"$(TargetFileName)\""
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies=""$(HL2SDK-DARKM)\lib\public\tier0.lib" "$(HL2SDK-DARKM)\lib\public\tier1.lib" "$(HL2SDK-DARKM)\lib\public\vstdlib.lib""
|
||||||
|
OutputFile="$(OutDir)/metamod.2.darkm.dll"
|
||||||
|
LinkIncremental="1"
|
||||||
|
IgnoreDefaultLibraryNames="libc.lib;libcd.lib;libcmtd.lib"
|
||||||
|
GenerateDebugInformation="true"
|
||||||
|
SubSystem="2"
|
||||||
|
OptimizeReferences="2"
|
||||||
|
EnableCOMDATFolding="2"
|
||||||
|
RandomizedBaseAddress="1"
|
||||||
|
DataExecutionPrevention="0"
|
||||||
|
ImportLibrary="$(OutDir)/sourcemm.lib"
|
||||||
|
TargetMachine="1"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
</Configurations>
|
</Configurations>
|
||||||
<References>
|
<References>
|
||||||
</References>
|
</References>
|
||||||
|
|||||||
@ -27,13 +27,20 @@
|
|||||||
|
|
||||||
#include "console.h"
|
#include "console.h"
|
||||||
#include "provider_ep2.h"
|
#include "provider_ep2.h"
|
||||||
|
#include "metamod_util.h"
|
||||||
|
|
||||||
using namespace SourceHook;
|
using namespace SourceHook;
|
||||||
|
|
||||||
SMConVarAccessor g_SMConVarAccessor;
|
SMConVarAccessor g_SMConVarAccessor;
|
||||||
|
|
||||||
|
#if SOURCE_ENGINE >= SE_ORANGEBOX
|
||||||
|
#else
|
||||||
|
#define RegisterConCommand RegisterConCommandBase
|
||||||
|
#endif
|
||||||
|
|
||||||
bool SMConVarAccessor::RegisterConCommandBase(ConCommandBase *pCommand)
|
bool SMConVarAccessor::RegisterConCommandBase(ConCommandBase *pCommand)
|
||||||
{
|
{
|
||||||
|
m_RegisteredCommands.push_back(pCommand);
|
||||||
pCommand->SetNext(NULL);
|
pCommand->SetNext(NULL);
|
||||||
icvar->RegisterConCommand(pCommand);
|
icvar->RegisterConCommand(pCommand);
|
||||||
|
|
||||||
@ -48,8 +55,128 @@ bool SMConVarAccessor::Register(ConCommandBase *pCommand)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMConVarAccessor::Unregister(ConCommandBase *pCommand)
|
void SMConVarAccessor::RemoveMetamodCommands()
|
||||||
{
|
{
|
||||||
icvar->UnregisterConCommand(pCommand);
|
List<ConCommandBase *>::iterator iter;
|
||||||
|
|
||||||
|
for (iter = m_RegisteredCommands.begin(); iter != m_RegisteredCommands.end(); iter++)
|
||||||
|
{
|
||||||
|
Unregister(*iter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#if SOURCE_ENGINE == SE_DARKMESSIAH
|
||||||
|
/* Signature for ICvar::GetCommands() in vstdlib for Win32 and Linux.
|
||||||
|
*
|
||||||
|
* 20226EE0 A1 50 5C 5A 20 mov eax,dword ptr ds:[205A5C50h] <-- What we want
|
||||||
|
* 20226EE5 C3 ret
|
||||||
|
*/
|
||||||
|
#define CMDLIST_SIG "\xA1\x2A\x2A\x2A\x2A\xC3"
|
||||||
|
#define CMDLIST_SIGLEN 6
|
||||||
|
|
||||||
|
/* Linux symbol name of ConCommandBase list in vstdlib */
|
||||||
|
#define CMDLIST_SYMBOL "_ZN14ConCommandBase18s_pConCommandBasesE"
|
||||||
|
|
||||||
|
/* This function retrieves the address of the var that holds the top of the ConCommandBase list.
|
||||||
|
* Having this allows us to change the beginning of this list with ease.
|
||||||
|
*
|
||||||
|
* This craziness eliminates the need for the eternal command/cvar used previously which
|
||||||
|
* could have caused a crash as a result of registering commands/cvars more than once.
|
||||||
|
*/
|
||||||
|
bool SMConVarAccessor::InitConCommandBaseList()
|
||||||
|
{
|
||||||
|
char *vfunc = (char *)SH_GET_ORIG_VFNPTR_ENTRY(icvar, &ICvar::GetCommands);
|
||||||
|
|
||||||
|
if (*vfunc == '\xE9')
|
||||||
|
{
|
||||||
|
/* Get address from displacement...
|
||||||
|
*
|
||||||
|
* Add 5 because it's relative to next instruction:
|
||||||
|
* Opcode <1 byte> + 32-bit displacement <4 bytes>
|
||||||
|
*/
|
||||||
|
vfunc += *reinterpret_cast<int *>(vfunc + 1) + 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!vfunc)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef OS_WIN32
|
||||||
|
if (UTIL_VerifySignature(vfunc, CMDLIST_SIG, CMDLIST_SIGLEN))
|
||||||
|
{
|
||||||
|
/* Skip past 0xA1 and get addr of ConCommandBase list var */
|
||||||
|
m_TopConCommandBase = *reinterpret_cast<ConCommandBase ***>(vfunc + 1);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#elif defined OS_LINUX
|
||||||
|
/* Try dlsym first */
|
||||||
|
char path[PATH_SIZE];
|
||||||
|
if (GetFileOfAddress((void *)icvar, path, sizeof(path)))
|
||||||
|
{
|
||||||
|
void *handle = dlopen(path, RTLD_NOW);
|
||||||
|
if (handle)
|
||||||
|
{
|
||||||
|
m_TopConCommandBase = reinterpret_cast<ConCommandBase **>(dlsym(handle, CMDLIST_SYMBOL));
|
||||||
|
dlclose(handle);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If dlsym failed, then verify signature of function */
|
||||||
|
if (!m_TopConCommandBase && UTIL_VerifySignature(vfunc, CMDLIST_SIG, CMDLIST_SIGLEN))
|
||||||
|
{
|
||||||
|
/* Skip past 0xA1 and get addr of ConCommandBase list var */
|
||||||
|
m_TopConCommandBase = *reinterpret_cast<ConCommandBase ***>(vfunc + 1);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void SMConVarAccessor::Unregister(ConCommandBase *pCommand)
|
||||||
|
{
|
||||||
|
#if SOURCE_ENGINE >= SE_ORANGEBOX
|
||||||
|
icvar->UnregisterConCommand(pCommand);
|
||||||
|
#else
|
||||||
|
ConCommandBase *pCur = NULL;
|
||||||
|
ConCommandBase *pPrev = NULL;
|
||||||
|
|
||||||
|
if (!pCommand)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
pCur = icvar->GetCommands();
|
||||||
|
|
||||||
|
if (!m_TopConCommandBase || !pCur)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pCur == pCommand)
|
||||||
|
{
|
||||||
|
*m_TopConCommandBase = const_cast<ConCommandBase *>(pCommand->GetNext());
|
||||||
|
pCommand->SetNext(NULL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
pPrev = pCur;
|
||||||
|
pCur = const_cast<ConCommandBase *>(pCur->GetNext());
|
||||||
|
|
||||||
|
while (pCur)
|
||||||
|
{
|
||||||
|
if (pCur == pCommand)
|
||||||
|
{
|
||||||
|
pPrev->SetNext(const_cast<ConCommandBase *>(pCommand->GetNext()));
|
||||||
|
pCommand->SetNext(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
pPrev = pCur;
|
||||||
|
pCur = const_cast<ConCommandBase *>(pCur->GetNext());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -33,8 +33,8 @@
|
|||||||
#undef _DEBUG
|
#undef _DEBUG
|
||||||
#endif
|
#endif
|
||||||
#include <interface.h>
|
#include <interface.h>
|
||||||
#include <eiface.h>
|
|
||||||
#include "convar.h"
|
#include "convar.h"
|
||||||
|
#include <eiface.h>
|
||||||
#include <sh_list.h>
|
#include <sh_list.h>
|
||||||
#if defined DEBUG2
|
#if defined DEBUG2
|
||||||
#undef DEBUG2
|
#undef DEBUG2
|
||||||
@ -47,6 +47,14 @@ public:
|
|||||||
bool RegisterConCommandBase(ConCommandBase *pCommand);
|
bool RegisterConCommandBase(ConCommandBase *pCommand);
|
||||||
bool Register(ConCommandBase *pCommand);
|
bool Register(ConCommandBase *pCommand);
|
||||||
void Unregister(ConCommandBase *pCommand);
|
void Unregister(ConCommandBase *pCommand);
|
||||||
|
void RemoveMetamodCommands();
|
||||||
|
#if SOURCE_ENGINE == SE_DARKMESSIAH
|
||||||
|
bool InitConCommandBaseList();
|
||||||
|
private:
|
||||||
|
ConCommandBase **m_TopConCommandBase;
|
||||||
|
#endif
|
||||||
|
private:
|
||||||
|
SourceHook::List<ConCommandBase *> m_RegisteredCommands;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern SMConVarAccessor g_SMConVarAccessor;
|
extern SMConVarAccessor g_SMConVarAccessor;
|
||||||
|
|||||||
@ -56,13 +56,23 @@ struct UsrMsgInfo
|
|||||||
int size;
|
int size;
|
||||||
String name;
|
String name;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Imports */
|
/* Imports */
|
||||||
|
#if SOURCE_ENGINE == SE_DARKMESSIAH
|
||||||
#undef CommandLine
|
#undef CommandLine
|
||||||
DLL_IMPORT ICommandLine *CommandLine();
|
DLL_IMPORT ICommandLine *CommandLine();
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Functions */
|
/* Functions */
|
||||||
bool CacheUserMessages();
|
bool CacheUserMessages();
|
||||||
|
#if SOURCE_ENGINE >= SE_ORANGEBOX
|
||||||
void ClientCommand(edict_t *pEdict, const CCommand &args);
|
void ClientCommand(edict_t *pEdict, const CCommand &args);
|
||||||
void LocalCommand_Meta(const CCommand &args);
|
void LocalCommand_Meta(const CCommand &args);
|
||||||
|
#else
|
||||||
|
void ClientCommand(edict_t *pEdict);
|
||||||
|
void LocalCommand_Meta();
|
||||||
|
#endif
|
||||||
|
|
||||||
void _ServerCommand();
|
void _ServerCommand();
|
||||||
/* Variables */
|
/* Variables */
|
||||||
static bool usermsgs_extracted = false;
|
static bool usermsgs_extracted = false;
|
||||||
@ -79,7 +89,11 @@ IServerGameClients *gameclients = NULL;
|
|||||||
IMetamodSourceProvider *provider = &g_Ep1Provider;
|
IMetamodSourceProvider *provider = &g_Ep1Provider;
|
||||||
ConCommand meta_local_cmd("meta", LocalCommand_Meta, "Metamod:Source control options");
|
ConCommand meta_local_cmd("meta", LocalCommand_Meta, "Metamod:Source control options");
|
||||||
|
|
||||||
|
#if SOURCE_ENGINE >= SE_ORANGEBOX
|
||||||
SH_DECL_HOOK2_void(IServerGameClients, ClientCommand, SH_NOATTRIB, 0, edict_t *, const CCommand &);
|
SH_DECL_HOOK2_void(IServerGameClients, ClientCommand, SH_NOATTRIB, 0, edict_t *, const CCommand &);
|
||||||
|
#else
|
||||||
|
SH_DECL_HOOK1_void(IServerGameClients, ClientCommand, SH_NOATTRIB, 0, edict_t *);
|
||||||
|
#endif
|
||||||
|
|
||||||
bool AssumeUserMessages()
|
bool AssumeUserMessages()
|
||||||
{
|
{
|
||||||
@ -99,7 +113,11 @@ bool AssumeUserMessages()
|
|||||||
|
|
||||||
void BaseProvider::ConsolePrint(const char *str)
|
void BaseProvider::ConsolePrint(const char *str)
|
||||||
{
|
{
|
||||||
|
#if SOURCE_ENGINE >= SE_ORANGEBOX
|
||||||
ConMsg("%s", str);
|
ConMsg("%s", str);
|
||||||
|
#else
|
||||||
|
Msg("%s", str);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void BaseProvider::Notify_DLLInit_Pre(CreateInterfaceFn engineFactory,
|
void BaseProvider::Notify_DLLInit_Pre(CreateInterfaceFn engineFactory,
|
||||||
@ -111,13 +129,17 @@ void BaseProvider::Notify_DLLInit_Pre(CreateInterfaceFn engineFactory,
|
|||||||
DisplayError("Could not find IVEngineServer! Metamod cannot load.");
|
DisplayError("Could not find IVEngineServer! Metamod cannot load.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#if SOURCE_ENGINE >= SE_ORANGEBOX
|
||||||
icvar = (ICvar *)((engineFactory)(CVAR_INTERFACE_VERSION, NULL));
|
icvar = (ICvar *)((engineFactory)(CVAR_INTERFACE_VERSION, NULL));
|
||||||
|
#else
|
||||||
|
icvar = (ICvar *)((engineFactory)(VENGINE_CVAR_INTERFACE_VERSION, NULL));
|
||||||
|
#endif
|
||||||
if (!icvar)
|
if (!icvar)
|
||||||
{
|
{
|
||||||
DisplayError("Could not find ICvar! Metamod cannot load.");
|
DisplayError("Could not find ICvar! Metamod cannot load.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
g_pCVar = icvar;
|
|
||||||
|
|
||||||
if ((gameclients = (IServerGameClients *)(serverFactory("ServerGameClients003", NULL)))
|
if ((gameclients = (IServerGameClients *)(serverFactory("ServerGameClients003", NULL)))
|
||||||
== NULL)
|
== NULL)
|
||||||
@ -132,14 +154,26 @@ void BaseProvider::Notify_DLLInit_Pre(CreateInterfaceFn engineFactory,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
RegisterConCommandBase(&meta_local_cmd);
|
#if SOURCE_ENGINE >= SE_ORANGEBOX
|
||||||
conbases_unreg.push_back(&meta_local_cmd);
|
g_pCVar = icvar;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
g_SMConVarAccessor.RegisterConCommandBase(&meta_local_cmd);
|
||||||
|
|
||||||
if ((usermsgs_extracted = CacheUserMessages()) == false)
|
if ((usermsgs_extracted = CacheUserMessages()) == false)
|
||||||
{
|
{
|
||||||
usermsgs_extracted = AssumeUserMessages();
|
usermsgs_extracted = AssumeUserMessages();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if SOURCE_ENGINE == SE_DARKMESSIAH
|
||||||
|
if (!g_SMConVarAccessor.InitConCommandBaseList())
|
||||||
|
{
|
||||||
|
/* This is very unlikely considering it's old engine */
|
||||||
|
mm_LogMessage("[META] Warning: Failed to find ConCommandBase list!");
|
||||||
|
mm_LogMessage("[META] Warning: ConVars and ConCommands cannot be unregistered properly! Please file a bug report.");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (gameclients)
|
if (gameclients)
|
||||||
{
|
{
|
||||||
SH_ADD_HOOK_STATICFUNC(IServerGameClients, ClientCommand, gameclients, ClientCommand, false);
|
SH_ADD_HOOK_STATICFUNC(IServerGameClients, ClientCommand, gameclients, ClientCommand, false);
|
||||||
@ -148,14 +182,14 @@ void BaseProvider::Notify_DLLInit_Pre(CreateInterfaceFn engineFactory,
|
|||||||
|
|
||||||
void BaseProvider::Notify_DLLShutdown_Pre()
|
void BaseProvider::Notify_DLLShutdown_Pre()
|
||||||
{
|
{
|
||||||
List<ConCommandBase *>::iterator iter;
|
g_SMConVarAccessor.RemoveMetamodCommands();
|
||||||
|
|
||||||
for (iter = conbases_unreg.begin();
|
#if SOURCE_ENGINE == SE_DARKMESSIAH
|
||||||
iter != conbases_unreg.end();
|
if (g_Metamod.IsLoadedAsGameDLL())
|
||||||
iter++)
|
|
||||||
{
|
{
|
||||||
UnregisterConCommandBase((*iter));
|
icvar->UnlinkVariables(FCVAR_GAMEDLL);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BaseProvider::IsRemotePrintingAvailable()
|
bool BaseProvider::IsRemotePrintingAvailable()
|
||||||
@ -204,7 +238,7 @@ const char *BaseProvider::GetCommandLineValue(const char *key, const char *defva
|
|||||||
{
|
{
|
||||||
if (key[0] == '-' || key[0] == '+')
|
if (key[0] == '-' || key[0] == '+')
|
||||||
{
|
{
|
||||||
return CommandLine_Tier0()->ParmValue(key, defval);
|
return CommandLine()->ParmValue(key, defval);
|
||||||
}
|
}
|
||||||
else if (icvar)
|
else if (icvar)
|
||||||
{
|
{
|
||||||
@ -354,8 +388,10 @@ int BaseProvider::DetermineSourceEngine(const char *game)
|
|||||||
{
|
{
|
||||||
#if SOURCE_ENGINE == SE_LEFT4DEAD
|
#if SOURCE_ENGINE == SE_LEFT4DEAD
|
||||||
return SOURCE_ENGINE_LEFT4DEAD;
|
return SOURCE_ENGINE_LEFT4DEAD;
|
||||||
#else
|
#elif SOURCE_ENGINE == SE_ORANGEBOX
|
||||||
return SOURCE_ENGINE_ORANGEBOX;
|
return SOURCE_ENGINE_ORANGEBOX;
|
||||||
|
#else
|
||||||
|
return SOURCE_ENGINE_DARKMESSIAH;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -376,8 +412,7 @@ ConVar *BaseProvider::CreateConVar(const char *name,
|
|||||||
|
|
||||||
ConVar *pVar = new ConVar(name, defval, newflags, help);
|
ConVar *pVar = new ConVar(name, defval, newflags, help);
|
||||||
|
|
||||||
RegisterConCommandBase(pVar);
|
g_SMConVarAccessor.RegisterConCommandBase(pVar);
|
||||||
conbases_unreg.push_back(pVar);
|
|
||||||
|
|
||||||
return pVar;
|
return pVar;
|
||||||
}
|
}
|
||||||
@ -433,6 +468,7 @@ bool BaseProvider::ProcessVDF(const char *file, char path[], size_t path_len, ch
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if SOURCE_ENGINE >= SE_ORANGEBOX
|
||||||
class GlobCommand : public IMetamodSourceCommandInfo
|
class GlobCommand : public IMetamodSourceCommandInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -457,17 +493,48 @@ public:
|
|||||||
private:
|
private:
|
||||||
const CCommand *m_cmd;
|
const CCommand *m_cmd;
|
||||||
};
|
};
|
||||||
|
#else
|
||||||
|
class GlobCommand : public IMetamodSourceCommandInfo
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
unsigned int GetArgCount()
|
||||||
|
{
|
||||||
|
return engine->Cmd_Argc() - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *GetArg(unsigned int num)
|
||||||
|
{
|
||||||
|
return engine->Cmd_Argv(num);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *GetArgString()
|
||||||
|
{
|
||||||
|
return engine->Cmd_Args();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if SOURCE_ENGINE >= SE_ORANGEBOX
|
||||||
void LocalCommand_Meta(const CCommand &args)
|
void LocalCommand_Meta(const CCommand &args)
|
||||||
{
|
{
|
||||||
GlobCommand cmd(&args);
|
GlobCommand cmd(&args);
|
||||||
|
#else
|
||||||
|
void LocalCommand_Meta()
|
||||||
|
{
|
||||||
|
GlobCommand cmd;
|
||||||
|
#endif
|
||||||
Command_Meta(&cmd);
|
Command_Meta(&cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if SOURCE_ENGINE >= SE_ORANGEBOX
|
||||||
void ClientCommand(edict_t *pEdict, const CCommand &_cmd)
|
void ClientCommand(edict_t *pEdict, const CCommand &_cmd)
|
||||||
{
|
{
|
||||||
GlobCommand cmd(&_cmd);
|
GlobCommand cmd(&_cmd);
|
||||||
|
#else
|
||||||
|
void ClientCommand(edict_t *pEdict)
|
||||||
|
{
|
||||||
|
GlobCommand cmd;
|
||||||
|
#endif
|
||||||
if (strcmp(cmd.GetArg(0), "meta") == 0)
|
if (strcmp(cmd.GetArg(0), "meta") == 0)
|
||||||
{
|
{
|
||||||
Command_ClientMeta(pEdict, &cmd);
|
Command_ClientMeta(pEdict, &cmd);
|
||||||
@ -477,26 +544,6 @@ void ClientCommand(edict_t *pEdict, const CCommand &_cmd)
|
|||||||
RETURN_META(MRES_IGNORED);
|
RETURN_META(MRES_IGNORED);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool vcmp(const void *_addr1, const void *_addr2, size_t len)
|
|
||||||
{
|
|
||||||
unsigned char *addr1 = (unsigned char *)_addr1;
|
|
||||||
unsigned char *addr2 = (unsigned char *)_addr2;
|
|
||||||
|
|
||||||
for (size_t i=0; i<len; i++)
|
|
||||||
{
|
|
||||||
if (addr2[i] == '*')
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (addr1[i] != addr2[i])
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// EVEN MORE HACKS HERE! YOU HAVE BEEN WARNED! //
|
// EVEN MORE HACKS HERE! YOU HAVE BEEN WARNED! //
|
||||||
// Signatures necessary in finding the pointer to the CUtlDict that //
|
// Signatures necessary in finding the pointer to the CUtlDict that //
|
||||||
@ -510,7 +557,7 @@ bool vcmp(const void *_addr1, const void *_addr2, size_t len)
|
|||||||
#define MSGCLASS_SIG "\x8B\x0D\x2A\x2A\x2A\x2A\x56"
|
#define MSGCLASS_SIG "\x8B\x0D\x2A\x2A\x2A\x2A\x56"
|
||||||
#define MSGCLASS_OFFS 2
|
#define MSGCLASS_OFFS 2
|
||||||
|
|
||||||
/* Dystopia Wimdows hack */
|
/* Dystopia Windows hack */
|
||||||
#define MSGCLASS2_SIGLEN 16
|
#define MSGCLASS2_SIGLEN 16
|
||||||
#define MSGCLASS2_SIG "\x56\x8B\x74\x24\x2A\x85\xF6\x7C\x2A\x3B\x35\x2A\x2A\x2A\x2A\x7D"
|
#define MSGCLASS2_SIG "\x56\x8B\x74\x24\x2A\x85\xF6\x7C\x2A\x3B\x35\x2A\x2A\x2A\x2A\x7D"
|
||||||
#define MSGCLASS2_OFFS 11
|
#define MSGCLASS2_OFFS 11
|
||||||
@ -539,9 +586,11 @@ struct UserMessage
|
|||||||
|
|
||||||
typedef CUtlDict<UserMessage *, int> UserMsgDict;
|
typedef CUtlDict<UserMessage *, int> UserMsgDict;
|
||||||
|
|
||||||
/* This is the ugliest function in all of SourceMM */
|
/* This is the ugliest function in all of MM:S */
|
||||||
bool CacheUserMessages()
|
bool CacheUserMessages()
|
||||||
{
|
{
|
||||||
|
UserMsgDict *dict = NULL;
|
||||||
|
|
||||||
/* Get address of original GetUserMessageInfo() */
|
/* Get address of original GetUserMessageInfo() */
|
||||||
char *vfunc = (char *)SH_GET_ORIG_VFNPTR_ENTRY(server, &IServerGameDLL::GetUserMessageInfo);
|
char *vfunc = (char *)SH_GET_ORIG_VFNPTR_ENTRY(server, &IServerGameDLL::GetUserMessageInfo);
|
||||||
|
|
||||||
@ -558,9 +607,7 @@ bool CacheUserMessages()
|
|||||||
vfunc += *reinterpret_cast<int *>(vfunc + 1) + 5;
|
vfunc += *reinterpret_cast<int *>(vfunc + 1) + 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
CUtlDict<UserMessage *, int> *dict = NULL;
|
if (UTIL_VerifySignature(vfunc, MSGCLASS_SIG, MSGCLASS_SIGLEN))
|
||||||
|
|
||||||
if (vcmp(vfunc, MSGCLASS_SIG, MSGCLASS_SIGLEN))
|
|
||||||
{
|
{
|
||||||
/* Get address of CUserMessages instance */
|
/* Get address of CUserMessages instance */
|
||||||
char **userMsgClass = *reinterpret_cast<char ***>(vfunc + MSGCLASS_OFFS);
|
char **userMsgClass = *reinterpret_cast<char ***>(vfunc + MSGCLASS_OFFS);
|
||||||
@ -568,7 +615,7 @@ bool CacheUserMessages()
|
|||||||
/* Get address of CUserMessages::m_UserMessages */
|
/* Get address of CUserMessages::m_UserMessages */
|
||||||
dict = reinterpret_cast<UserMsgDict *>(*userMsgClass);
|
dict = reinterpret_cast<UserMsgDict *>(*userMsgClass);
|
||||||
}
|
}
|
||||||
else if (vcmp(vfunc, MSGCLASS2_SIG, MSGCLASS2_SIGLEN))
|
else if (UTIL_VerifySignature(vfunc, MSGCLASS2_SIG, MSGCLASS2_SIGLEN))
|
||||||
{
|
{
|
||||||
#ifdef OS_WIN32
|
#ifdef OS_WIN32
|
||||||
/* If we get here, the code is possibly inlined like in Dystopia */
|
/* If we get here, the code is possibly inlined like in Dystopia */
|
||||||
@ -587,7 +634,7 @@ bool CacheUserMessages()
|
|||||||
#endif
|
#endif
|
||||||
#ifdef OS_WIN32
|
#ifdef OS_WIN32
|
||||||
}
|
}
|
||||||
else if (vcmp(vfunc, MSGCLASS3_SIG, MSGCLASS3_SIGLEN))
|
else if (UTIL_VerifySignature(vfunc, MSGCLASS3_SIG, MSGCLASS3_SIGLEN))
|
||||||
{
|
{
|
||||||
/* Get address of CUserMessages instance */
|
/* Get address of CUserMessages instance */
|
||||||
char **userMsgClass = *reinterpret_cast<char ***>(vfunc + MSGCLASS3_OFFS);
|
char **userMsgClass = *reinterpret_cast<char ***>(vfunc + MSGCLASS3_OFFS);
|
||||||
|
|||||||
@ -48,7 +48,11 @@ void VSPListener::ClientActive(edict_t *pEntity)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if SOURCE_ENGINE >= SE_ORANGEBOX
|
||||||
PLUGIN_RESULT VSPListener::ClientCommand(edict_t *pEntity, const CCommand &cmd)
|
PLUGIN_RESULT VSPListener::ClientCommand(edict_t *pEntity, const CCommand &cmd)
|
||||||
|
#else
|
||||||
|
PLUGIN_RESULT VSPListener::ClientCommand(edict_t *pEntity)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
return PLUGIN_CONTINUE;
|
return PLUGIN_CONTINUE;
|
||||||
}
|
}
|
||||||
@ -134,6 +138,7 @@ bool VSPListener::Load(CreateInterfaceFn interfaceFactory, CreateInterfaceFn gam
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if SOURCE_ENGINE != SE_DARKMESSIAH
|
||||||
void VSPListener::OnQueryCvarValueFinished(QueryCvarCookie_t iCookie,
|
void VSPListener::OnQueryCvarValueFinished(QueryCvarCookie_t iCookie,
|
||||||
edict_t *pPlayerEntity,
|
edict_t *pPlayerEntity,
|
||||||
EQueryCvarValueStatus eStatus,
|
EQueryCvarValueStatus eStatus,
|
||||||
@ -141,4 +146,5 @@ void VSPListener::OnQueryCvarValueFinished(QueryCvarCookie_t iCookie,
|
|||||||
const char *pCvarValue)
|
const char *pCvarValue)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|||||||
@ -38,6 +38,8 @@
|
|||||||
#define _DEBUG
|
#define _DEBUG
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class VSPListener : public IServerPluginCallbacks
|
class VSPListener : public IServerPluginCallbacks
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -58,9 +60,15 @@ public:
|
|||||||
virtual void SetCommandClient(int index);
|
virtual void SetCommandClient(int index);
|
||||||
virtual void ClientSettingsChanged(edict_t *pEdict);
|
virtual void ClientSettingsChanged(edict_t *pEdict);
|
||||||
virtual PLUGIN_RESULT ClientConnect(bool *bAllowConnect, edict_t *pEntity, const char *pszName, const char *pszAddress, char *reject, int maxrejectlen);
|
virtual PLUGIN_RESULT ClientConnect(bool *bAllowConnect, edict_t *pEntity, const char *pszName, const char *pszAddress, char *reject, int maxrejectlen);
|
||||||
|
#if SOURCE_ENGINE >= SE_ORANGEBOX
|
||||||
virtual PLUGIN_RESULT ClientCommand(edict_t *pEntity, const CCommand &cmd);
|
virtual PLUGIN_RESULT ClientCommand(edict_t *pEntity, const CCommand &cmd);
|
||||||
|
#else
|
||||||
|
virtual PLUGIN_RESULT ClientCommand(edict_t *pEntity);
|
||||||
|
#endif
|
||||||
virtual PLUGIN_RESULT NetworkIDValidated(const char *pszUserName, const char *pszNetworkID);
|
virtual PLUGIN_RESULT NetworkIDValidated(const char *pszUserName, const char *pszNetworkID);
|
||||||
|
#if SOURCE_ENGINE != SE_DARKMESSIAH
|
||||||
virtual void OnQueryCvarValueFinished( QueryCvarCookie_t iCookie, edict_t *pPlayerEntity, EQueryCvarValueStatus eStatus, const char *pCvarName, const char *pCvarValue );
|
virtual void OnQueryCvarValueFinished( QueryCvarCookie_t iCookie, edict_t *pPlayerEntity, EQueryCvarValueStatus eStatus, const char *pCvarName, const char *pCvarValue );
|
||||||
|
#endif
|
||||||
public:
|
public:
|
||||||
bool IsLoaded();
|
bool IsLoaded();
|
||||||
void SetLoadable(bool loadable);
|
void SetLoadable(bool loadable);
|
||||||
|
|||||||
@ -34,17 +34,29 @@
|
|||||||
#include <loader_bridge.h>
|
#include <loader_bridge.h>
|
||||||
#include "provider/provider_ep2.h"
|
#include "provider/provider_ep2.h"
|
||||||
|
|
||||||
|
#if SOURCE_ENGINE >= SE_ORANGEBOX
|
||||||
SH_DECL_HOOK1_void(ConCommand, Dispatch, SH_NOATTRIB, false, const CCommand &);
|
SH_DECL_HOOK1_void(ConCommand, Dispatch, SH_NOATTRIB, false, const CCommand &);
|
||||||
|
#else
|
||||||
|
SH_DECL_HOOK0_void(ConCommand, Dispatch, SH_NOATTRIB, false);
|
||||||
|
#endif
|
||||||
|
|
||||||
ConCommand *g_plugin_unload = NULL;
|
ConCommand *g_plugin_unload = NULL;
|
||||||
bool g_bIsTryingToUnload;
|
bool g_bIsTryingToUnload;
|
||||||
|
|
||||||
|
#if SOURCE_ENGINE >= SE_ORANGEBOX
|
||||||
void InterceptPluginUnloads(const CCommand &args)
|
void InterceptPluginUnloads(const CCommand &args)
|
||||||
|
#else
|
||||||
|
void InterceptPluginUnloads()
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
g_bIsTryingToUnload = true;
|
g_bIsTryingToUnload = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if SOURCE_ENGINE >= SE_ORANGEBOX
|
||||||
void InterceptPluginUnloads_Post(const CCommand &args)
|
void InterceptPluginUnloads_Post(const CCommand &args)
|
||||||
|
#else
|
||||||
|
void InterceptPluginUnloads_Post()
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
g_bIsTryingToUnload = false;
|
g_bIsTryingToUnload = false;
|
||||||
}
|
}
|
||||||
@ -69,7 +81,7 @@ public:
|
|||||||
pGlobals = playerInfoManager->GetGlobalVars();
|
pGlobals = playerInfoManager->GetGlobalVars();
|
||||||
|
|
||||||
char gamedll_iface[] = "ServerGameDLL000";
|
char gamedll_iface[] = "ServerGameDLL000";
|
||||||
for (unsigned int i = 5; i <= 50; i++)
|
for (unsigned int i = 3; i <= 50; i++)
|
||||||
{
|
{
|
||||||
gamedll_iface[15] = '0' + i;
|
gamedll_iface[15] = '0' + i;
|
||||||
if ((server = (IServerGameDLL *)info->gsFactory(gamedll_iface, NULL)) != NULL)
|
if ((server = (IServerGameDLL *)info->gsFactory(gamedll_iface, NULL)) != NULL)
|
||||||
@ -107,7 +119,20 @@ public:
|
|||||||
g_Metamod.NotifyVSPListening(info->vsp_callbacks, info->vsp_version);
|
g_Metamod.NotifyVSPListening(info->vsp_callbacks, info->vsp_version);
|
||||||
mm_StartupMetamod(true);
|
mm_StartupMetamod(true);
|
||||||
|
|
||||||
|
#if SOURCE_ENGINE >= SE_ORANGEBOX
|
||||||
g_plugin_unload = icvar->FindCommand("plugin_unload");
|
g_plugin_unload = icvar->FindCommand("plugin_unload");
|
||||||
|
#else
|
||||||
|
const ConCommandBase *pBase = icvar->GetCommands();
|
||||||
|
while (pBase != NULL)
|
||||||
|
{
|
||||||
|
if (pBase->IsCommand() && strcmp(pBase->GetName(), "plugin_unload") == 0)
|
||||||
|
{
|
||||||
|
g_plugin_unload = (ConCommand *)pBase;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
pBase = pBase->GetNext();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (g_plugin_unload != NULL)
|
if (g_plugin_unload != NULL)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -36,17 +36,14 @@
|
|||||||
#include <sh_memory.h>
|
#include <sh_memory.h>
|
||||||
#include "utility.h"
|
#include "utility.h"
|
||||||
#include "gamedll.h"
|
#include "gamedll.h"
|
||||||
#include "valve_commandline.h"
|
|
||||||
|
|
||||||
#undef GetCommandLine
|
|
||||||
|
|
||||||
class IServerGameDLL;
|
class IServerGameDLL;
|
||||||
typedef ICommandLine *(*GetCommandLine)();
|
|
||||||
|
|
||||||
#define MAX_GAMEDLL_PATHS 10
|
#define MAX_GAMEDLL_PATHS 10
|
||||||
|
|
||||||
IGameDllBridge* gamedll_bridge = NULL;
|
IGameDllBridge* gamedll_bridge = NULL;
|
||||||
static int game_info_detected = 0;
|
static int game_info_detected = 0;
|
||||||
|
static const char *game_name = NULL;
|
||||||
static char gamedll_paths[MAX_GAMEDLL_PATHS][PLATFORM_MAX_PATH];
|
static char gamedll_paths[MAX_GAMEDLL_PATHS][PLATFORM_MAX_PATH];
|
||||||
static void *gamedll_libs[MAX_GAMEDLL_PATHS];
|
static void *gamedll_libs[MAX_GAMEDLL_PATHS];
|
||||||
static unsigned int gamedll_path_count = 0;
|
static unsigned int gamedll_path_count = 0;
|
||||||
@ -57,24 +54,15 @@ static int gamedll_version = 0;
|
|||||||
static int isgd_shutdown_index = -1;
|
static int isgd_shutdown_index = -1;
|
||||||
|
|
||||||
#if defined _WIN32
|
#if defined _WIN32
|
||||||
#define TIER0_NAME "bin\\tier0.dll"
|
|
||||||
#define VSTDLIB_NAME "bin\\vstdlib.dll"
|
|
||||||
#define SERVER_NAME "server.dll"
|
#define SERVER_NAME "server.dll"
|
||||||
#elif defined __linux__
|
#elif defined __linux__
|
||||||
#define TIER0_NAME "bin/tier0_i486.so"
|
|
||||||
#define VSTDLIB_NAME "bin/vstdlib_i486.so"
|
|
||||||
#define SERVER_NAME "server_i486.so"
|
#define SERVER_NAME "server_i486.so"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
mm_DetectGameInformation()
|
mm_DetectGameInformation()
|
||||||
{
|
{
|
||||||
void *lib;
|
|
||||||
char error[255];
|
|
||||||
GetCommandLine valve_cmdline;
|
|
||||||
char mm_path[PLATFORM_MAX_PATH];
|
char mm_path[PLATFORM_MAX_PATH];
|
||||||
char lib_path[PLATFORM_MAX_PATH];
|
|
||||||
char game_name[PLATFORM_MAX_PATH];
|
|
||||||
char game_path[PLATFORM_MAX_PATH];
|
char game_path[PLATFORM_MAX_PATH];
|
||||||
|
|
||||||
if (game_info_detected)
|
if (game_info_detected)
|
||||||
@ -82,43 +70,8 @@ mm_DetectGameInformation()
|
|||||||
|
|
||||||
game_info_detected = -1;
|
game_info_detected = -1;
|
||||||
|
|
||||||
if (!mm_ResolvePath(TIER0_NAME, lib_path, sizeof(lib_path)))
|
if ((game_name = mm_GetGameName()) == NULL)
|
||||||
{
|
{
|
||||||
mm_LogFatal("Could not find path for: " TIER0_NAME);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((lib = mm_LoadLibrary(lib_path, error, sizeof(error))) == NULL)
|
|
||||||
{
|
|
||||||
mm_LogFatal("Could not load %s: %s", lib_path, error);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
valve_cmdline = (GetCommandLine)mm_GetLibAddress(lib, "CommandLine_Tier0");
|
|
||||||
if (valve_cmdline == NULL)
|
|
||||||
{
|
|
||||||
/* We probably have a Ship engine. */
|
|
||||||
mm_UnloadLibrary(lib);
|
|
||||||
if (!mm_ResolvePath(VSTDLIB_NAME, lib_path, sizeof(lib_path)))
|
|
||||||
{
|
|
||||||
mm_LogFatal("Could not find path for: " VSTDLIB_NAME);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((lib = mm_LoadLibrary(lib_path, error, sizeof(error))) == NULL)
|
|
||||||
{
|
|
||||||
mm_LogFatal("Could not load %s: %s", lib_path, error);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
valve_cmdline = (GetCommandLine)mm_GetLibAddress(lib, "CommandLine");
|
|
||||||
}
|
|
||||||
|
|
||||||
mm_UnloadLibrary(lib);
|
|
||||||
|
|
||||||
if (valve_cmdline == NULL)
|
|
||||||
{
|
|
||||||
mm_LogFatal("Could not locate any command line functionality");
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -128,10 +81,6 @@ mm_DetectGameInformation()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
mm_Format(game_name,
|
|
||||||
sizeof(game_name),
|
|
||||||
"%s",
|
|
||||||
valve_cmdline()->ParmValue("-game", "hl2"));
|
|
||||||
if (!mm_ResolvePath(game_name, game_path, sizeof(game_path)))
|
if (!mm_ResolvePath(game_name, game_path, sizeof(game_path)))
|
||||||
{
|
{
|
||||||
mm_LogFatal("Could not resolve path: %s", game_name);
|
mm_LogFatal("Could not resolve path: %s", game_name);
|
||||||
@ -261,7 +210,7 @@ public:
|
|||||||
QueryValveInterface fileSystemFactory,
|
QueryValveInterface fileSystemFactory,
|
||||||
void *pGlobals)
|
void *pGlobals)
|
||||||
{
|
{
|
||||||
MetamodBackend backend = mm_DetermineBackend(engineFactory);
|
MetamodBackend backend = mm_DetermineBackend(engineFactory, game_name);
|
||||||
|
|
||||||
char error[255];
|
char error[255];
|
||||||
if (backend == MMBackend_UNKNOWN)
|
if (backend == MMBackend_UNKNOWN)
|
||||||
|
|||||||
@ -35,6 +35,11 @@
|
|||||||
#include "serverplugin.h"
|
#include "serverplugin.h"
|
||||||
#include "gamedll.h"
|
#include "gamedll.h"
|
||||||
#include "utility.h"
|
#include "utility.h"
|
||||||
|
#include "valve_commandline.h"
|
||||||
|
|
||||||
|
#undef GetCommandLine
|
||||||
|
|
||||||
|
typedef ICommandLine *(*GetCommandLine)();
|
||||||
|
|
||||||
static HMODULE mm_library = NULL;
|
static HMODULE mm_library = NULL;
|
||||||
static char mm_fatal_logfile[PLATFORM_MAX_PATH] = "metamod-fatal.log";
|
static char mm_fatal_logfile[PLATFORM_MAX_PATH] = "metamod-fatal.log";
|
||||||
@ -64,11 +69,12 @@ mm_LogFatal(const char *message, ...)
|
|||||||
fclose(fp);
|
fclose(fp);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *backend_names[3] =
|
static const char *backend_names[] =
|
||||||
{
|
{
|
||||||
"1.ep1",
|
"1.ep1",
|
||||||
"2.ep2",
|
"2.ep2",
|
||||||
"2.l4d"
|
"2.l4d",
|
||||||
|
"2.darkm"
|
||||||
};
|
};
|
||||||
|
|
||||||
#if defined _WIN32
|
#if defined _WIN32
|
||||||
@ -163,8 +169,76 @@ mm_GetProcAddress(const char *name)
|
|||||||
return mm_GetLibAddress(mm_library, name);
|
return mm_GetLibAddress(mm_library, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined _WIN32
|
||||||
|
#define TIER0_NAME "bin\\tier0.dll"
|
||||||
|
#define VSTDLIB_NAME "bin\\vstdlib.dll"
|
||||||
|
#elif defined __linux__
|
||||||
|
#define TIER0_NAME "bin/tier0_i486.so"
|
||||||
|
#define VSTDLIB_NAME "bin/vstdlib_i486.so"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const char *
|
||||||
|
mm_GetGameName()
|
||||||
|
{
|
||||||
|
void *lib;
|
||||||
|
char error[255];
|
||||||
|
GetCommandLine valve_cmdline;
|
||||||
|
char lib_path[PLATFORM_MAX_PATH];
|
||||||
|
const char *game_name;
|
||||||
|
|
||||||
|
if (!mm_ResolvePath(TIER0_NAME, lib_path, sizeof(lib_path)))
|
||||||
|
{
|
||||||
|
mm_LogFatal("Could not find path for: " TIER0_NAME);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((lib = mm_LoadLibrary(lib_path, error, sizeof(error))) == NULL)
|
||||||
|
{
|
||||||
|
mm_LogFatal("Could not load %s: %s", lib_path, error);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
valve_cmdline = (GetCommandLine)mm_GetLibAddress(lib, "CommandLine_Tier0");
|
||||||
|
if (valve_cmdline == NULL)
|
||||||
|
{
|
||||||
|
/* We probably have a Ship engine. */
|
||||||
|
mm_UnloadLibrary(lib);
|
||||||
|
if (!mm_ResolvePath(VSTDLIB_NAME, lib_path, sizeof(lib_path)))
|
||||||
|
{
|
||||||
|
mm_LogFatal("Could not find path for: " VSTDLIB_NAME);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((lib = mm_LoadLibrary(lib_path, error, sizeof(error))) == NULL)
|
||||||
|
{
|
||||||
|
mm_LogFatal("Could not load %s: %s", lib_path, error);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
valve_cmdline = (GetCommandLine)mm_GetLibAddress(lib, "CommandLine");
|
||||||
|
}
|
||||||
|
|
||||||
|
mm_UnloadLibrary(lib);
|
||||||
|
|
||||||
|
if (valve_cmdline == NULL)
|
||||||
|
{
|
||||||
|
mm_LogFatal("Could not locate any command line functionality");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
game_name = valve_cmdline()->ParmValue("-game");
|
||||||
|
|
||||||
|
/* This probably means that the game directory is actually the current directory */
|
||||||
|
if (!game_name)
|
||||||
|
{
|
||||||
|
game_name = ".";
|
||||||
|
}
|
||||||
|
|
||||||
|
return game_name;
|
||||||
|
}
|
||||||
|
|
||||||
MetamodBackend
|
MetamodBackend
|
||||||
mm_DetermineBackend(QueryValveInterface engineFactory)
|
mm_DetermineBackend(QueryValveInterface engineFactory, const char *game_name)
|
||||||
{
|
{
|
||||||
/* Check for L4D */
|
/* Check for L4D */
|
||||||
if (engineFactory("VEngineServer022", NULL) != NULL &&
|
if (engineFactory("VEngineServer022", NULL) != NULL &&
|
||||||
@ -180,11 +254,16 @@ mm_DetermineBackend(QueryValveInterface engineFactory)
|
|||||||
{
|
{
|
||||||
return MMBackend_Episode2;
|
return MMBackend_Episode2;
|
||||||
}
|
}
|
||||||
/* Check for EP1 */
|
/* Check for Episode One/Old Engine */
|
||||||
else if (engineFactory("VModelInfoServer001", NULL) != NULL &&
|
else if (engineFactory("VModelInfoServer001", NULL) != NULL &&
|
||||||
(engineFactory("VEngineCvar003", NULL) != NULL ||
|
(engineFactory("VEngineCvar003", NULL) != NULL ||
|
||||||
engineFactory("VEngineCvar002", NULL) != NULL))
|
engineFactory("VEngineCvar002", NULL) != NULL))
|
||||||
{
|
{
|
||||||
|
/* Check for Dark Messiah which has a weird directory structure */
|
||||||
|
if (strcmp(game_name, ".") == 0)
|
||||||
|
{
|
||||||
|
return MMBackend_DarkMessiah;
|
||||||
|
}
|
||||||
return MMBackend_Episode1;
|
return MMBackend_Episode1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -64,6 +64,7 @@ enum MetamodBackend
|
|||||||
MMBackend_Episode1 = 0,
|
MMBackend_Episode1 = 0,
|
||||||
MMBackend_Episode2,
|
MMBackend_Episode2,
|
||||||
MMBackend_Left4Dead,
|
MMBackend_Left4Dead,
|
||||||
|
MMBackend_DarkMessiah,
|
||||||
MMBackend_UNKNOWN
|
MMBackend_UNKNOWN
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -79,8 +80,11 @@ mm_UnloadMetamodLibrary();
|
|||||||
extern void
|
extern void
|
||||||
mm_LogFatal(const char *message, ...);
|
mm_LogFatal(const char *message, ...);
|
||||||
|
|
||||||
|
extern const char *
|
||||||
|
mm_GetGameName();
|
||||||
|
|
||||||
extern MetamodBackend
|
extern MetamodBackend
|
||||||
mm_DetermineBackend(QueryValveInterface qvi);
|
mm_DetermineBackend(QueryValveInterface qvi, const char *game_name);
|
||||||
|
|
||||||
#endif /* _INCLUDE_METAMOD_SOURCE_LOADER_H_ */
|
#endif /* _INCLUDE_METAMOD_SOURCE_LOADER_H_ */
|
||||||
|
|
||||||
|
|||||||
@ -77,6 +77,7 @@ IVspBridge *vsp_bridge = NULL;
|
|||||||
*/
|
*/
|
||||||
class ServerPlugin
|
class ServerPlugin
|
||||||
{
|
{
|
||||||
|
const char *game_name;
|
||||||
unsigned int vsp_version;
|
unsigned int vsp_version;
|
||||||
bool load_allowed;
|
bool load_allowed;
|
||||||
public:
|
public:
|
||||||
@ -91,14 +92,19 @@ public:
|
|||||||
|
|
||||||
load_allowed = false;
|
load_allowed = false;
|
||||||
|
|
||||||
MetamodBackend backend = mm_DetermineBackend(engineFactory);
|
if ((game_name = mm_GetGameName()) == NULL)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
MetamodBackend backend = mm_DetermineBackend(engineFactory, game_name);
|
||||||
|
|
||||||
if (backend == MMBackend_UNKNOWN)
|
if (backend == MMBackend_UNKNOWN)
|
||||||
{
|
{
|
||||||
mm_LogFatal("Could not detect engine version");
|
mm_LogFatal("Could not detect engine version");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if (backend >= MMBackend_Episode2)
|
else if (backend == MMBackend_Episode2 || backend == MMBackend_Left4Dead)
|
||||||
{
|
{
|
||||||
/* We need to insert the right type of call into this vtable */
|
/* We need to insert the right type of call into this vtable */
|
||||||
void **vtable_src;
|
void **vtable_src;
|
||||||
|
|||||||
@ -22,10 +22,9 @@
|
|||||||
extern IVEngineServer *engine;
|
extern IVEngineServer *engine;
|
||||||
extern CGlobalVars *gpGlobals;
|
extern CGlobalVars *gpGlobals;
|
||||||
|
|
||||||
/**
|
#if SOURCE_ENGINE == SE_EPISODEONE && defined METAMOD_PLAPI_VERSION
|
||||||
* For non-OrangeBox builds, we have to make wrappers.
|
#error "Metamod:Source 1.6 API is not supported on the old engine."
|
||||||
*/
|
#endif
|
||||||
#if SOURCE_ENGINE == SE_EPISODEONE
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MM:S 1.4.x needs older API calls.
|
* MM:S 1.4.x needs older API calls.
|
||||||
@ -35,12 +34,15 @@ extern CGlobalVars *gpGlobals;
|
|||||||
#define GetServerFactory serverFactory
|
#define GetServerFactory serverFactory
|
||||||
#define MM_Format snprintf
|
#define MM_Format snprintf
|
||||||
#define GetCGlobals pGlobals
|
#define GetCGlobals pGlobals
|
||||||
|
#define ENGINE_CALL(func) SH_CALL(m_EngineCC, func)
|
||||||
#else
|
#else
|
||||||
#error "Metamod:Source 1.6 is not supported on the old engine."
|
#define ENGINE_CALL(func) SH_CALL(engine, func)
|
||||||
|
#define MM_Format g_SMAPI->Format
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if SOURCE_ENGINE <= SE_DARKMESSIAH
|
||||||
/**
|
/**
|
||||||
* Wrap the CCommand class so our code looks the same for both engines.
|
* Wrap the CCommand class so our code looks the same on all engines.
|
||||||
*/
|
*/
|
||||||
class CCommand
|
class CCommand
|
||||||
{
|
{
|
||||||
@ -60,14 +62,7 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#define CVAR_INTERFACE_VERSION VENGINE_CVAR_INTERFACE_VERSION
|
#define CVAR_INTERFACE_VERSION VENGINE_CVAR_INTERFACE_VERSION
|
||||||
#define ENGINE_CALL(func) SH_CALL(m_EngineCC, func)
|
|
||||||
|
|
||||||
#elif SOURCE_ENGINE >= SE_ORANGEBOX
|
|
||||||
|
|
||||||
#define ENGINE_CALL(func) SH_CALL(engine, func)
|
|
||||||
#define MM_Format g_SMAPI->Format
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -5,20 +5,26 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sample_mm", "sample_mm.vcpr
|
|||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug - Dark Messiah|Win32 = Debug - Dark Messiah|Win32
|
||||||
Debug - Left 4 Dead|Win32 = Debug - Left 4 Dead|Win32
|
Debug - Left 4 Dead|Win32 = Debug - Left 4 Dead|Win32
|
||||||
Debug - Orange Box|Win32 = Debug - Orange Box|Win32
|
Debug - Orange Box|Win32 = Debug - Orange Box|Win32
|
||||||
Debug - Original|Win32 = Debug - Original|Win32
|
Debug - Original|Win32 = Debug - Original|Win32
|
||||||
|
Release - Dark Messiah|Win32 = Release - Dark Messiah|Win32
|
||||||
Release - Left 4 Dead|Win32 = Release - Left 4 Dead|Win32
|
Release - Left 4 Dead|Win32 = Release - Left 4 Dead|Win32
|
||||||
Release - Orange Box|Win32 = Release - Orange Box|Win32
|
Release - Orange Box|Win32 = Release - Orange Box|Win32
|
||||||
Release - Original|Win32 = Release - Original|Win32
|
Release - Original|Win32 = Release - Original|Win32
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Dark Messiah|Win32.ActiveCfg = Debug - Dark Messiah|Win32
|
||||||
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Dark Messiah|Win32.Build.0 = Debug - Dark Messiah|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Left 4 Dead|Win32.ActiveCfg = Debug - Left 4 Dead|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Left 4 Dead|Win32.ActiveCfg = Debug - Left 4 Dead|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Left 4 Dead|Win32.Build.0 = Debug - Left 4 Dead|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Left 4 Dead|Win32.Build.0 = Debug - Left 4 Dead|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Orange Box|Win32.ActiveCfg = Debug - Orange Box|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Orange Box|Win32.ActiveCfg = Debug - Orange Box|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Orange Box|Win32.Build.0 = Debug - Orange Box|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Orange Box|Win32.Build.0 = Debug - Orange Box|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Original|Win32.ActiveCfg = Debug - Original|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Original|Win32.ActiveCfg = Debug - Original|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Original|Win32.Build.0 = Debug - Original|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Original|Win32.Build.0 = Debug - Original|Win32
|
||||||
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Dark Messiah|Win32.ActiveCfg = Release - Dark Messiah|Win32
|
||||||
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Dark Messiah|Win32.Build.0 = Release - Dark Messiah|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Left 4 Dead|Win32.ActiveCfg = Release - Left 4 Dead|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Left 4 Dead|Win32.ActiveCfg = Release - Left 4 Dead|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Left 4 Dead|Win32.Build.0 = Release - Left 4 Dead|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Left 4 Dead|Win32.Build.0 = Release - Left 4 Dead|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Orange Box|Win32.ActiveCfg = Release - Orange Box|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Orange Box|Win32.ActiveCfg = Release - Orange Box|Win32
|
||||||
@ -27,6 +33,6 @@ Global
|
|||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Original|Win32.Build.0 = Release - Original|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Original|Win32.Build.0 = Release - Original|Win32
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNodde = FALSE
|
HideSolutionNode = FALSE
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
|||||||
@ -39,10 +39,10 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalOptions="/D SE_EPISODEONE=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories=""$(MMSOURCE17)\core-legacy";"$(MMSOURCE17)\core-legacy\sourcehook";"$(HL2SDK)\public";"$(HL2SDK)\public\dlls";"$(HL2SDK)\public\engine";"$(HL2SDK)\public\tier0";"$(HL2SDK)\public\tier1";"$(HL2SDK)\public\vstdlib""
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core-legacy";"$(MMSOURCE17)\core-legacy\sourcehook";"$(HL2SDK)\public";"$(HL2SDK)\public\dlls";"$(HL2SDK)\public\engine";"$(HL2SDK)\public\tier0";"$(HL2SDK)\public\tier1";"$(HL2SDK)\public\vstdlib""
|
||||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SAMPLE_MM_EXPORTS;SOURCE_ENGINE=2"
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SAMPLE_MM_EXPORTS;SOURCE_ENGINE=1"
|
||||||
MinimalRebuild="true"
|
MinimalRebuild="true"
|
||||||
BasicRuntimeChecks="3"
|
BasicRuntimeChecks="3"
|
||||||
RuntimeLibrary="1"
|
RuntimeLibrary="1"
|
||||||
@ -120,9 +120,9 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalOptions="/D SE_EPISODEONE=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
AdditionalIncludeDirectories=""$(MMSOURCE17)\core-legacy";"$(MMSOURCE17)\core-legacy\sourcehook";"$(HL2SDK)\public";"$(HL2SDK)\public\dlls";"$(HL2SDK)\public\engine";"$(HL2SDK)\public\tier0";"$(HL2SDK)\public\tier1";"$(HL2SDK)\public\vstdlib""
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core-legacy";"$(MMSOURCE17)\core-legacy\sourcehook";"$(HL2SDK)\public";"$(HL2SDK)\public\dlls";"$(HL2SDK)\public\engine";"$(HL2SDK)\public\tier0";"$(HL2SDK)\public\tier1";"$(HL2SDK)\public\vstdlib""
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SAMPLE_MM_EXPORTS;SOURCE_ENGINE=2"
|
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SAMPLE_MM_EXPORTS;SOURCE_ENGINE=1"
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
@ -175,6 +175,166 @@
|
|||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
/>
|
/>
|
||||||
</Configuration>
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Debug - Dark Messiah|Win32"
|
||||||
|
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="$(ConfigurationName)"
|
||||||
|
ConfigurationType="2"
|
||||||
|
CharacterSet="2"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
|
Optimization="0"
|
||||||
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDK-DARKM)\public";"$(HL2SDK-DARKM)\public\engine";"$(HL2SDK-DARKM)\public\dlls";"$(HL2SDK-DARKM)\public\tier0";"$(HL2SDK-DARKM)\public\tier1";"$(HL2SDK-DARKM)\public\vstdlib""
|
||||||
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SAMPLE_MM_EXPORTS;SOURCE_ENGINE=2"
|
||||||
|
MinimalRebuild="true"
|
||||||
|
BasicRuntimeChecks="3"
|
||||||
|
RuntimeLibrary="1"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
Detect64BitPortabilityProblems="false"
|
||||||
|
DebugInformationFormat="4"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies=""$(HL2SDK-DARKM)\lib\public\tier0.lib" "$(HL2SDK-DARKM)\lib\public\tier1.lib" "$(HL2SDK-DARKM)\lib\public\vstdlib.lib""
|
||||||
|
OutputFile="$(OutDir)\sample_mm.dll"
|
||||||
|
LinkIncremental="2"
|
||||||
|
IgnoreDefaultLibraryNames="LIBC;LIBCD;LIBCMT"
|
||||||
|
GenerateDebugInformation="true"
|
||||||
|
SubSystem="2"
|
||||||
|
TargetMachine="1"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebDeploymentTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Release - Dark Messiah|Win32"
|
||||||
|
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="$(ConfigurationName)"
|
||||||
|
ConfigurationType="2"
|
||||||
|
CharacterSet="2"
|
||||||
|
WholeProgramOptimization="1"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDK-DARKM)\public";"$(HL2SDK-DARKM)\public\engine";"$(HL2SDK-DARKM)\public\dlls";"$(HL2SDK-DARKM)\public\tier0";"$(HL2SDK-DARKM)\public\tier1";"$(HL2SDK-DARKM)\public\vstdlib""
|
||||||
|
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SAMPLE_MM_EXPORTS;SOURCE_ENGINE=2"
|
||||||
|
RuntimeLibrary="0"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
Detect64BitPortabilityProblems="false"
|
||||||
|
DebugInformationFormat="3"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies=""$(HL2SDK-DARKM)\lib\public\tier0.lib" "$(HL2SDK-DARKM)\lib\public\tier1.lib" "$(HL2SDK-DARKM)\lib\public\vstdlib.lib""
|
||||||
|
OutputFile="$(OutDir)\sample_mm.dll"
|
||||||
|
LinkIncremental="1"
|
||||||
|
IgnoreDefaultLibraryNames="LIBC;LIBCD;LIBCMTD"
|
||||||
|
GenerateDebugInformation="true"
|
||||||
|
SubSystem="2"
|
||||||
|
OptimizeReferences="2"
|
||||||
|
EnableCOMDATFolding="2"
|
||||||
|
TargetMachine="1"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebDeploymentTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
<Configuration
|
<Configuration
|
||||||
Name="Debug - Orange Box|Win32"
|
Name="Debug - Orange Box|Win32"
|
||||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||||
@ -199,7 +359,7 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalOptions="/D SE_EPISODEONE=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKOB)\public";"$(HL2SDKOB)\public\engine";"$(HL2SDKOB)\public\game\server";"$(HL2SDKOB)\public\tier0";"$(HL2SDKOB)\public\tier1";"$(HL2SDKOB)\public\vstdlib""
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKOB)\public";"$(HL2SDKOB)\public\engine";"$(HL2SDKOB)\public\game\server";"$(HL2SDKOB)\public\tier0";"$(HL2SDKOB)\public\tier1";"$(HL2SDKOB)\public\vstdlib""
|
||||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SAMPLE_MM_EXPORTS;SOURCE_ENGINE=3"
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SAMPLE_MM_EXPORTS;SOURCE_ENGINE=3"
|
||||||
@ -280,7 +440,7 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalOptions="/D SE_EPISODEONE=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKOB)\public";"$(HL2SDKOB)\public\engine";"$(HL2SDKOB)\public\game\server";"$(HL2SDKOB)\public\tier0";"$(HL2SDKOB)\public\tier1";"$(HL2SDKOB)\public\vstdlib""
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKOB)\public";"$(HL2SDKOB)\public\engine";"$(HL2SDKOB)\public\game\server";"$(HL2SDKOB)\public\tier0";"$(HL2SDKOB)\public\tier1";"$(HL2SDKOB)\public\vstdlib""
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SAMPLE_MM_EXPORTS;SOURCE_ENGINE=3"
|
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SAMPLE_MM_EXPORTS;SOURCE_ENGINE=3"
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
@ -359,7 +519,7 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalOptions="/D SE_EPISODEONE=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKL4D)\public";"$(HL2SDKL4D)\public\engine";"$(HL2SDKL4D)\public\game\server";"$(HL2SDKL4D)\public\tier0";"$(HL2SDKL4D)\public\tier1";"$(HL2SDKL4D)\public\vstdlib""
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKL4D)\public";"$(HL2SDKL4D)\public\engine";"$(HL2SDKL4D)\public\game\server";"$(HL2SDKL4D)\public\tier0";"$(HL2SDKL4D)\public\tier1";"$(HL2SDKL4D)\public\vstdlib""
|
||||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SAMPLE_MM_EXPORTS;SOURCE_ENGINE=4"
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SAMPLE_MM_EXPORTS;SOURCE_ENGINE=4"
|
||||||
@ -440,7 +600,7 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalOptions="/D SE_EPISODEONE=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKL4D)\public";"$(HL2SDKL4D)\public\engine";"$(HL2SDKL4D)\public\game\server";"$(HL2SDKL4D)\public\tier0";"$(HL2SDKL4D)\public\tier1";"$(HL2SDKL4D)\public\vstdlib""
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKL4D)\public";"$(HL2SDKL4D)\public\engine";"$(HL2SDKL4D)\public\game\server";"$(HL2SDKL4D)\public\tier0";"$(HL2SDKL4D)\public\tier1";"$(HL2SDKL4D)\public\vstdlib""
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SAMPLE_MM_EXPORTS;SOURCE_ENGINE=4"
|
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SAMPLE_MM_EXPORTS;SOURCE_ENGINE=4"
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
|
|||||||
@ -5,20 +5,26 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sample_mm", "sample_mm.vcpr
|
|||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug - Dark Messiah|Win32 = Debug - Dark Messiah|Win32
|
||||||
Debug - Left 4 Dead|Win32 = Debug - Left 4 Dead|Win32
|
Debug - Left 4 Dead|Win32 = Debug - Left 4 Dead|Win32
|
||||||
Debug - Orange Box|Win32 = Debug - Orange Box|Win32
|
Debug - Orange Box|Win32 = Debug - Orange Box|Win32
|
||||||
Debug - Original|Win32 = Debug - Original|Win32
|
Debug - Original|Win32 = Debug - Original|Win32
|
||||||
|
Release - Dark Messiah|Win32 = Release - Dark Messiah|Win32
|
||||||
Release - Left 4 Dead|Win32 = Release - Left 4 Dead|Win32
|
Release - Left 4 Dead|Win32 = Release - Left 4 Dead|Win32
|
||||||
Release - Orange Box|Win32 = Release - Orange Box|Win32
|
Release - Orange Box|Win32 = Release - Orange Box|Win32
|
||||||
Release - Original|Win32 = Release - Original|Win32
|
Release - Original|Win32 = Release - Original|Win32
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Dark Messiah|Win32.ActiveCfg = Debug - Dark Messiah|Win32
|
||||||
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Dark Messiah|Win32.Build.0 = Debug - Dark Messiah|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Left 4 Dead|Win32.ActiveCfg = Debug - Left 4 Dead|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Left 4 Dead|Win32.ActiveCfg = Debug - Left 4 Dead|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Left 4 Dead|Win32.Build.0 = Debug - Left 4 Dead|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Left 4 Dead|Win32.Build.0 = Debug - Left 4 Dead|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Orange Box|Win32.ActiveCfg = Debug - Orange Box|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Orange Box|Win32.ActiveCfg = Debug - Orange Box|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Orange Box|Win32.Build.0 = Debug - Orange Box|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Orange Box|Win32.Build.0 = Debug - Orange Box|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Original|Win32.ActiveCfg = Debug - Original|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Original|Win32.ActiveCfg = Debug - Original|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Original|Win32.Build.0 = Debug - Original|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Original|Win32.Build.0 = Debug - Original|Win32
|
||||||
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Dark Messiah|Win32.ActiveCfg = Release - Dark Messiah|Win32
|
||||||
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Dark Messiah|Win32.Build.0 = Release - Dark Messiah|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Left 4 Dead|Win32.ActiveCfg = Release - Left 4 Dead|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Left 4 Dead|Win32.ActiveCfg = Release - Left 4 Dead|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Left 4 Dead|Win32.Build.0 = Release - Left 4 Dead|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Left 4 Dead|Win32.Build.0 = Release - Left 4 Dead|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Orange Box|Win32.ActiveCfg = Release - Orange Box|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Orange Box|Win32.ActiveCfg = Release - Orange Box|Win32
|
||||||
|
|||||||
@ -40,10 +40,10 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalOptions="/D SE_EPISODEONE=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories=""$(MMSOURCE17)\core-legacy";"$(MMSOURCE17)\core-legacy\sourcehook";"$(HL2SDK)\public";"$(HL2SDK)\public\dlls";"$(HL2SDK)\public\engine";"$(HL2SDK)\public\tier0";"$(HL2SDK)\public\tier1";"$(HL2SDK)\public\vstdlib""
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core-legacy";"$(MMSOURCE17)\core-legacy\sourcehook";"$(HL2SDK)\public";"$(HL2SDK)\public\dlls";"$(HL2SDK)\public\engine";"$(HL2SDK)\public\tier0";"$(HL2SDK)\public\tier1";"$(HL2SDK)\public\vstdlib""
|
||||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SAMPLE_MM_EXPORTS;SOURCE_ENGINE=2"
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SAMPLE_MM_EXPORTS;SOURCE_ENGINE=1"
|
||||||
MinimalRebuild="true"
|
MinimalRebuild="true"
|
||||||
BasicRuntimeChecks="3"
|
BasicRuntimeChecks="3"
|
||||||
RuntimeLibrary="1"
|
RuntimeLibrary="1"
|
||||||
@ -120,9 +120,9 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalOptions="/D SE_EPISODEONE=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
AdditionalIncludeDirectories=""$(MMSOURCE17)\core-legacy";"$(MMSOURCE17)\core-legacy\sourcehook";"$(HL2SDK)\public";"$(HL2SDK)\public\dlls";"$(HL2SDK)\public\engine";"$(HL2SDK)\public\tier0";"$(HL2SDK)\public\tier1";"$(HL2SDK)\public\vstdlib""
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core-legacy";"$(MMSOURCE17)\core-legacy\sourcehook";"$(HL2SDK)\public";"$(HL2SDK)\public\dlls";"$(HL2SDK)\public\engine";"$(HL2SDK)\public\tier0";"$(HL2SDK)\public\tier1";"$(HL2SDK)\public\vstdlib""
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SAMPLE_MM_EXPORTS;SOURCE_ENGINE=2"
|
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SAMPLE_MM_EXPORTS;SOURCE_ENGINE=1"
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
@ -174,6 +174,164 @@
|
|||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
/>
|
/>
|
||||||
</Configuration>
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Debug - Dark Messiah|Win32"
|
||||||
|
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="$(ConfigurationName)"
|
||||||
|
ConfigurationType="2"
|
||||||
|
CharacterSet="2"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
|
Optimization="0"
|
||||||
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDK-DARKM)\public";"$(HL2SDK-DARKM)\public\engine";"$(HL2SDK-DARKM)\public\dlls";"$(HL2SDK-DARKM)\public\tier0";"$(HL2SDK-DARKM)\public\tier1";"$(HL2SDK-DARKM)\public\vstdlib""
|
||||||
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SAMPLE_MM_EXPORTS;SOURCE_ENGINE=2"
|
||||||
|
MinimalRebuild="true"
|
||||||
|
BasicRuntimeChecks="3"
|
||||||
|
RuntimeLibrary="1"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
Detect64BitPortabilityProblems="false"
|
||||||
|
DebugInformationFormat="4"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies=""$(HL2SDK-DARKM)\lib\public\tier0.lib" "$(HL2SDK-DARKM)\lib\public\tier1.lib" "$(HL2SDK-DARKM)\lib\public\vstdlib.lib""
|
||||||
|
OutputFile="$(OutDir)\sample_mm.dll"
|
||||||
|
LinkIncremental="2"
|
||||||
|
IgnoreDefaultLibraryNames="LIBC;LIBCD;LIBCMT"
|
||||||
|
GenerateDebugInformation="true"
|
||||||
|
SubSystem="2"
|
||||||
|
RandomizedBaseAddress="1"
|
||||||
|
DataExecutionPrevention="0"
|
||||||
|
TargetMachine="1"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Release - Dark Messiah|Win32"
|
||||||
|
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="$(ConfigurationName)"
|
||||||
|
ConfigurationType="2"
|
||||||
|
CharacterSet="2"
|
||||||
|
WholeProgramOptimization="1"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDK-DARKM)\public";"$(HL2SDK-DARKM)\public\engine";"$(HL2SDK-DARKM)\public\dlls";"$(HL2SDK-DARKM)\public\tier0";"$(HL2SDK-DARKM)\public\tier1";"$(HL2SDK-DARKM)\public\vstdlib""
|
||||||
|
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SAMPLE_MM_EXPORTS;SOURCE_ENGINE=2"
|
||||||
|
RuntimeLibrary="0"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
Detect64BitPortabilityProblems="false"
|
||||||
|
DebugInformationFormat="3"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies=""$(HL2SDK-DARKM)\lib\public\tier0.lib" "$(HL2SDK-DARKM)\lib\public\tier1.lib" "$(HL2SDK-DARKM)\lib\public\vstdlib.lib""
|
||||||
|
OutputFile="$(OutDir)\sample_mm.dll"
|
||||||
|
LinkIncremental="1"
|
||||||
|
IgnoreDefaultLibraryNames="LIBC;LIBCD;LIBCMTD"
|
||||||
|
GenerateDebugInformation="true"
|
||||||
|
SubSystem="2"
|
||||||
|
OptimizeReferences="2"
|
||||||
|
EnableCOMDATFolding="2"
|
||||||
|
RandomizedBaseAddress="1"
|
||||||
|
DataExecutionPrevention="0"
|
||||||
|
TargetMachine="1"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
<Configuration
|
<Configuration
|
||||||
Name="Debug - Orange Box|Win32"
|
Name="Debug - Orange Box|Win32"
|
||||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||||
@ -198,7 +356,7 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalOptions="/D SE_EPISODEONE=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKOB)\public";"$(HL2SDKOB)\public\engine";"$(HL2SDKOB)\public\game\server";"$(HL2SDKOB)\public\tier0";"$(HL2SDKOB)\public\tier1";"$(HL2SDKOB)\public\vstdlib""
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKOB)\public";"$(HL2SDKOB)\public\engine";"$(HL2SDKOB)\public\game\server";"$(HL2SDKOB)\public\tier0";"$(HL2SDKOB)\public\tier1";"$(HL2SDKOB)\public\vstdlib""
|
||||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SAMPLE_MM_EXPORTS;SOURCE_ENGINE=3"
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SAMPLE_MM_EXPORTS;SOURCE_ENGINE=3"
|
||||||
@ -278,7 +436,7 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalOptions="/D SE_EPISODEONE=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKOB)\public";"$(HL2SDKOB)\public\engine";"$(HL2SDKOB)\public\game\server";"$(HL2SDKOB)\public\tier0";"$(HL2SDKOB)\public\tier1";"$(HL2SDKOB)\public\vstdlib""
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKOB)\public";"$(HL2SDKOB)\public\engine";"$(HL2SDKOB)\public\game\server";"$(HL2SDKOB)\public\tier0";"$(HL2SDKOB)\public\tier1";"$(HL2SDKOB)\public\vstdlib""
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SAMPLE_MM_EXPORTS;SOURCE_ENGINE=3"
|
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SAMPLE_MM_EXPORTS;SOURCE_ENGINE=3"
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
@ -356,7 +514,7 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalOptions="/D SE_EPISODEONE=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKL4D)\public";"$(HL2SDKL4D)\public\engine";"$(HL2SDKL4D)\public\game\server";"$(HL2SDKL4D)\public\tier0";"$(HL2SDKL4D)\public\tier1";"$(HL2SDKL4D)\public\vstdlib""
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKL4D)\public";"$(HL2SDKL4D)\public\engine";"$(HL2SDKL4D)\public\game\server";"$(HL2SDKL4D)\public\tier0";"$(HL2SDKL4D)\public\tier1";"$(HL2SDKL4D)\public\vstdlib""
|
||||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SAMPLE_MM_EXPORTS;SOURCE_ENGINE=4"
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SAMPLE_MM_EXPORTS;SOURCE_ENGINE=4"
|
||||||
@ -436,7 +594,7 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalOptions="/D SE_EPISODEONE=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKL4D)\public";"$(HL2SDKL4D)\public\engine";"$(HL2SDKL4D)\public\game\server";"$(HL2SDKL4D)\public\tier0";"$(HL2SDKL4D)\public\tier1";"$(HL2SDKL4D)\public\vstdlib""
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKL4D)\public";"$(HL2SDKL4D)\public\engine";"$(HL2SDKL4D)\public\game\server";"$(HL2SDKL4D)\public\tier0";"$(HL2SDKL4D)\public\tier1";"$(HL2SDKL4D)\public\vstdlib""
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SAMPLE_MM_EXPORTS;SOURCE_ENGINE=4"
|
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SAMPLE_MM_EXPORTS;SOURCE_ENGINE=4"
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
|
|||||||
@ -100,7 +100,7 @@ bool SamplePlugin::Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlen,
|
|||||||
SH_ADD_HOOK_MEMFUNC(IServerGameClients, ClientConnect, gameclients, this, &SamplePlugin::Hook_ClientConnect, false);
|
SH_ADD_HOOK_MEMFUNC(IServerGameClients, ClientConnect, gameclients, this, &SamplePlugin::Hook_ClientConnect, false);
|
||||||
SH_ADD_HOOK_MEMFUNC(IServerGameClients, ClientCommand, gameclients, this, &SamplePlugin::Hook_ClientCommand, false);
|
SH_ADD_HOOK_MEMFUNC(IServerGameClients, ClientCommand, gameclients, this, &SamplePlugin::Hook_ClientCommand, false);
|
||||||
|
|
||||||
#if SOURCE_ENGINE == SE_EPISODEONE
|
#if !defined METAMOD_PLAPI_VERSION
|
||||||
m_EngineCC = SH_GET_CALLCLASS(engine);
|
m_EngineCC = SH_GET_CALLCLASS(engine);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -130,7 +130,7 @@ bool SamplePlugin::Unload(char *error, size_t maxlen)
|
|||||||
SH_REMOVE_HOOK_MEMFUNC(IServerGameClients, ClientConnect, gameclients, this, &SamplePlugin::Hook_ClientConnect, false);
|
SH_REMOVE_HOOK_MEMFUNC(IServerGameClients, ClientConnect, gameclients, this, &SamplePlugin::Hook_ClientConnect, false);
|
||||||
SH_REMOVE_HOOK_MEMFUNC(IServerGameClients, ClientCommand, gameclients, this, &SamplePlugin::Hook_ClientCommand, false);
|
SH_REMOVE_HOOK_MEMFUNC(IServerGameClients, ClientCommand, gameclients, this, &SamplePlugin::Hook_ClientCommand, false);
|
||||||
|
|
||||||
#if SOURCE_ENGINE == SE_EPISODEONE
|
#if !defined METAMOD_PLAPI_VERSION
|
||||||
SH_RELEASE_CALLCLASS(m_EngineCC);
|
SH_RELEASE_CALLCLASS(m_EngineCC);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -165,7 +165,7 @@ void SamplePlugin::Hook_ClientCommand(edict_t *pEntity, const CCommand &args)
|
|||||||
void SamplePlugin::Hook_ClientCommand(edict_t *pEntity)
|
void SamplePlugin::Hook_ClientCommand(edict_t *pEntity)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
#if SOURCE_ENGINE == SE_EPISODEONE
|
#if SOURCE_ENGINE <= SE_DARKMESSIAH
|
||||||
CCommand args;
|
CCommand args;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@ -72,7 +72,7 @@ public:
|
|||||||
const char *GetDate();
|
const char *GetDate();
|
||||||
const char *GetLogTag();
|
const char *GetLogTag();
|
||||||
private:
|
private:
|
||||||
#if SOURCE_ENGINE == SE_EPISODEONE
|
#if !defined METAMOD_PLAPI_VERSION
|
||||||
SourceHook::CallClass<IVEngineServer> *m_EngineCC;
|
SourceHook::CallClass<IVEngineServer> *m_EngineCC;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|||||||
@ -5,20 +5,26 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stub_mm", "stub_mm.vcproj",
|
|||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug - Dark Messiah|Win32 = Debug - Dark Messiah|Win32
|
||||||
Debug - Left 4 Dead|Win32 = Debug - Left 4 Dead|Win32
|
Debug - Left 4 Dead|Win32 = Debug - Left 4 Dead|Win32
|
||||||
Debug - Orange Box|Win32 = Debug - Orange Box|Win32
|
Debug - Orange Box|Win32 = Debug - Orange Box|Win32
|
||||||
Debug - Original|Win32 = Debug - Original|Win32
|
Debug - Original|Win32 = Debug - Original|Win32
|
||||||
|
Release - Dark Messiah|Win32 = Release - Dark Messiah|Win32
|
||||||
Release - Left 4 Dead|Win32 = Release - Left 4 Dead|Win32
|
Release - Left 4 Dead|Win32 = Release - Left 4 Dead|Win32
|
||||||
Release - Orange Box|Win32 = Release - Orange Box|Win32
|
Release - Orange Box|Win32 = Release - Orange Box|Win32
|
||||||
Release - Original|Win32 = Release - Original|Win32
|
Release - Original|Win32 = Release - Original|Win32
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Dark Messiah|Win32.ActiveCfg = Debug - Dark Messiah|Win32
|
||||||
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Dark Messiah|Win32.Build.0 = Debug - Dark Messiah|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Left 4 Dead|Win32.ActiveCfg = Debug - Left 4 Dead|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Left 4 Dead|Win32.ActiveCfg = Debug - Left 4 Dead|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Left 4 Dead|Win32.Build.0 = Debug - Left 4 Dead|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Left 4 Dead|Win32.Build.0 = Debug - Left 4 Dead|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Orange Box|Win32.ActiveCfg = Debug - Orange Box|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Orange Box|Win32.ActiveCfg = Debug - Orange Box|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Orange Box|Win32.Build.0 = Debug - Orange Box|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Orange Box|Win32.Build.0 = Debug - Orange Box|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Original|Win32.ActiveCfg = Debug - Original|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Original|Win32.ActiveCfg = Debug - Original|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Original|Win32.Build.0 = Debug - Original|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Original|Win32.Build.0 = Debug - Original|Win32
|
||||||
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Dark Messiah|Win32.ActiveCfg = Release - Dark Messiah|Win32
|
||||||
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Dark Messiah|Win32.Build.0 = Release - Dark Messiah|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Left 4 Dead|Win32.ActiveCfg = Release - Left 4 Dead|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Left 4 Dead|Win32.ActiveCfg = Release - Left 4 Dead|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Left 4 Dead|Win32.Build.0 = Release - Left 4 Dead|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Left 4 Dead|Win32.Build.0 = Release - Left 4 Dead|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Orange Box|Win32.ActiveCfg = Release - Orange Box|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Orange Box|Win32.ActiveCfg = Release - Orange Box|Win32
|
||||||
@ -27,6 +33,6 @@ Global
|
|||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Original|Win32.Build.0 = Release - Original|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Original|Win32.Build.0 = Release - Original|Win32
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
|||||||
@ -39,7 +39,7 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalOptions="/D SE_EPISODEONE=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories=""$(MMSOURCE17)\core-legacy";"$(MMSOURCE17)\core-legacy\sourcehook";"$(HL2SDK)\public";"$(HL2SDK)\public\dlls";"$(HL2SDK)\public\engine";"$(HL2SDK)\public\tier0";"$(HL2SDK)\public\tier1";"$(HL2SDK)\public\vstdlib""
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core-legacy";"$(MMSOURCE17)\core-legacy\sourcehook";"$(HL2SDK)\public";"$(HL2SDK)\public\dlls";"$(HL2SDK)\public\engine";"$(HL2SDK)\public\tier0";"$(HL2SDK)\public\tier1";"$(HL2SDK)\public\vstdlib""
|
||||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;STUB_MM_EXPORTS;SOURCE_ENGINE=2"
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;STUB_MM_EXPORTS;SOURCE_ENGINE=2"
|
||||||
@ -120,7 +120,7 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalOptions="/D SE_EPISODEONE=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
AdditionalIncludeDirectories=""$(MMSOURCE17)\core-legacy";"$(MMSOURCE17)\core-legacy\sourcehook";"$(HL2SDK)\public";"$(HL2SDK)\public\dlls";"$(HL2SDK)\public\engine";"$(HL2SDK)\public\tier0";"$(HL2SDK)\public\tier1";"$(HL2SDK)\public\vstdlib""
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core-legacy";"$(MMSOURCE17)\core-legacy\sourcehook";"$(HL2SDK)\public";"$(HL2SDK)\public\dlls";"$(HL2SDK)\public\engine";"$(HL2SDK)\public\tier0";"$(HL2SDK)\public\tier1";"$(HL2SDK)\public\vstdlib""
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;STUB_MM_EXPORTS;SOURCE_ENGINE=2"
|
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;STUB_MM_EXPORTS;SOURCE_ENGINE=2"
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
@ -175,6 +175,166 @@
|
|||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
/>
|
/>
|
||||||
</Configuration>
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Debug - Dark Messiah|Win32"
|
||||||
|
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="$(ConfigurationName)"
|
||||||
|
ConfigurationType="2"
|
||||||
|
CharacterSet="2"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
|
Optimization="0"
|
||||||
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDK-DARKM)\public";"$(HL2SDK-DARKM)\public\engine";"$(HL2SDK-DARKM)\public\dlls";"$(HL2SDK-DARKM)\public\tier0";"$(HL2SDK-DARKM)\public\tier1";"$(HL2SDK-DARKM)\public\vstdlib""
|
||||||
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;STUB_MM_EXPORTS;SOURCE_ENGINE=3"
|
||||||
|
MinimalRebuild="true"
|
||||||
|
BasicRuntimeChecks="3"
|
||||||
|
RuntimeLibrary="1"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
Detect64BitPortabilityProblems="false"
|
||||||
|
DebugInformationFormat="4"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies=""$(HL2SDK-DARKM)\lib\public\tier0.lib" "$(HL2SDK-DARKM)\lib\public\tier1.lib" "$(HL2SDK-DARKM)\lib\public\vstdlib.lib""
|
||||||
|
OutputFile="$(OutDir)\stub_mm.dll"
|
||||||
|
LinkIncremental="2"
|
||||||
|
IgnoreDefaultLibraryNames="LIBC;LIBCD;LIBCMT"
|
||||||
|
GenerateDebugInformation="true"
|
||||||
|
SubSystem="2"
|
||||||
|
TargetMachine="1"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebDeploymentTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Release - Dark Messiah|Win32"
|
||||||
|
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="$(ConfigurationName)"
|
||||||
|
ConfigurationType="2"
|
||||||
|
CharacterSet="2"
|
||||||
|
WholeProgramOptimization="1"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDK-DARKM)\public";"$(HL2SDK-DARKM)\public\engine";"$(HL2SDK-DARKM)\public\dlls";"$(HL2SDK-DARKM)\public\tier0";"$(HL2SDK-DARKM)\public\tier1";"$(HL2SDK-DARKM)\public\vstdlib""
|
||||||
|
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;STUB_MM_EXPORTS;SOURCE_ENGINE=3"
|
||||||
|
RuntimeLibrary="0"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
Detect64BitPortabilityProblems="false"
|
||||||
|
DebugInformationFormat="3"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies=""$(HL2SDK-DARKM)\lib\public\tier0.lib" "$(HL2SDK-DARKM)\lib\public\tier1.lib" "$(HL2SDK-DARKM)\lib\public\vstdlib.lib""
|
||||||
|
OutputFile="$(OutDir)\stub_mm.dll"
|
||||||
|
LinkIncremental="1"
|
||||||
|
IgnoreDefaultLibraryNames="LIBC;LIBCD;LIBCMTD"
|
||||||
|
GenerateDebugInformation="true"
|
||||||
|
SubSystem="2"
|
||||||
|
OptimizeReferences="2"
|
||||||
|
EnableCOMDATFolding="2"
|
||||||
|
TargetMachine="1"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebDeploymentTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
<Configuration
|
<Configuration
|
||||||
Name="Debug - Orange Box|Win32"
|
Name="Debug - Orange Box|Win32"
|
||||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||||
@ -199,7 +359,7 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalOptions="/D SE_EPISODEONE=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKOB)\public";"$(HL2SDKOB)\public\engine";"$(HL2SDKOB)\public\game\server";"$(HL2SDKOB)\public\tier0";"$(HL2SDKOB)\public\tier1";"$(HL2SDKOB)\public\vstdlib""
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKOB)\public";"$(HL2SDKOB)\public\engine";"$(HL2SDKOB)\public\game\server";"$(HL2SDKOB)\public\tier0";"$(HL2SDKOB)\public\tier1";"$(HL2SDKOB)\public\vstdlib""
|
||||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;STUB_MM_EXPORTS;SOURCE_ENGINE=3"
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;STUB_MM_EXPORTS;SOURCE_ENGINE=3"
|
||||||
@ -280,7 +440,7 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalOptions="/D SE_EPISODEONE=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKOB)\public";"$(HL2SDKOB)\public\engine";"$(HL2SDKOB)\public\game\server";"$(HL2SDKOB)\public\tier0";"$(HL2SDKOB)\public\tier1";"$(HL2SDKOB)\public\vstdlib""
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKOB)\public";"$(HL2SDKOB)\public\engine";"$(HL2SDKOB)\public\game\server";"$(HL2SDKOB)\public\tier0";"$(HL2SDKOB)\public\tier1";"$(HL2SDKOB)\public\vstdlib""
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;STUB_MM_EXPORTS;SOURCE_ENGINE=3"
|
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;STUB_MM_EXPORTS;SOURCE_ENGINE=3"
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
@ -359,7 +519,7 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalOptions="/D SE_EPISODEONE=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKL4D)\public";"$(HL2SDKL4D)\public\engine";"$(HL2SDKL4D)\public\game\server";"$(HL2SDKL4D)\public\tier0";"$(HL2SDKL4D)\public\tier1";"$(HL2SDKL4D)\public\vstdlib""
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKL4D)\public";"$(HL2SDKL4D)\public\engine";"$(HL2SDKL4D)\public\game\server";"$(HL2SDKL4D)\public\tier0";"$(HL2SDKL4D)\public\tier1";"$(HL2SDKL4D)\public\vstdlib""
|
||||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;STUB_MM_EXPORTS;SOURCE_ENGINE=4"
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;STUB_MM_EXPORTS;SOURCE_ENGINE=4"
|
||||||
@ -440,7 +600,7 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalOptions="/D SE_EPISODEONE=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKL4D)\public";"$(HL2SDKL4D)\public\engine";"$(HL2SDKL4D)\public\game\server";"$(HL2SDKL4D)\public\tier0";"$(HL2SDKL4D)\public\tier1";"$(HL2SDKL4D)\public\vstdlib""
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKL4D)\public";"$(HL2SDKL4D)\public\engine";"$(HL2SDKL4D)\public\game\server";"$(HL2SDKL4D)\public\tier0";"$(HL2SDKL4D)\public\tier1";"$(HL2SDKL4D)\public\vstdlib""
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;STUB_MM_EXPORTS;SOURCE_ENGINE=4"
|
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;STUB_MM_EXPORTS;SOURCE_ENGINE=4"
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
|
|||||||
@ -5,20 +5,26 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stub_mm", "stub_mm.vcproj",
|
|||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug - Dark Messiah|Win32 = Debug - Dark Messiah|Win32
|
||||||
Debug - Left 4 Dead|Win32 = Debug - Left 4 Dead|Win32
|
Debug - Left 4 Dead|Win32 = Debug - Left 4 Dead|Win32
|
||||||
Debug - Orange Box|Win32 = Debug - Orange Box|Win32
|
Debug - Orange Box|Win32 = Debug - Orange Box|Win32
|
||||||
Debug - Original|Win32 = Debug - Original|Win32
|
Debug - Original|Win32 = Debug - Original|Win32
|
||||||
|
Release - Dark Messiah|Win32 = Release - Dark Messiah|Win32
|
||||||
Release - Left 4 Dead|Win32 = Release - Left 4 Dead|Win32
|
Release - Left 4 Dead|Win32 = Release - Left 4 Dead|Win32
|
||||||
Release - Orange Box|Win32 = Release - Orange Box|Win32
|
Release - Orange Box|Win32 = Release - Orange Box|Win32
|
||||||
Release - Original|Win32 = Release - Original|Win32
|
Release - Original|Win32 = Release - Original|Win32
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Dark Messiah|Win32.ActiveCfg = Debug - Dark Messiah|Win32
|
||||||
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Dark Messiah|Win32.Build.0 = Debug - Dark Messiah|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Left 4 Dead|Win32.ActiveCfg = Debug - Left 4 Dead|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Left 4 Dead|Win32.ActiveCfg = Debug - Left 4 Dead|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Left 4 Dead|Win32.Build.0 = Debug - Left 4 Dead|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Left 4 Dead|Win32.Build.0 = Debug - Left 4 Dead|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Orange Box|Win32.ActiveCfg = Debug - Orange Box|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Orange Box|Win32.ActiveCfg = Debug - Orange Box|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Orange Box|Win32.Build.0 = Debug - Orange Box|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Orange Box|Win32.Build.0 = Debug - Orange Box|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Original|Win32.ActiveCfg = Debug - Original|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Original|Win32.ActiveCfg = Debug - Original|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Original|Win32.Build.0 = Debug - Original|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Debug - Original|Win32.Build.0 = Debug - Original|Win32
|
||||||
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Dark Messiah|Win32.ActiveCfg = Release - Dark Messiah|Win32
|
||||||
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Dark Messiah|Win32.Build.0 = Release - Dark Messiah|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Left 4 Dead|Win32.ActiveCfg = Release - Left 4 Dead|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Left 4 Dead|Win32.ActiveCfg = Release - Left 4 Dead|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Left 4 Dead|Win32.Build.0 = Release - Left 4 Dead|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Left 4 Dead|Win32.Build.0 = Release - Left 4 Dead|Win32
|
||||||
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Orange Box|Win32.ActiveCfg = Release - Orange Box|Win32
|
{E62E5876-E1E2-41A0-85CA-1B41B9DA55F9}.Release - Orange Box|Win32.ActiveCfg = Release - Orange Box|Win32
|
||||||
|
|||||||
@ -40,7 +40,7 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalOptions="/D SE_EPISODEONE=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories=""$(MMSOURCE17)\core-legacy";"$(MMSOURCE17)\core-legacy\sourcehook";"$(HL2SDK)\public";"$(HL2SDK)\public\dlls";"$(HL2SDK)\public\engine";"$(HL2SDK)\public\tier0";"$(HL2SDK)\public\tier1";"$(HL2SDK)\public\vstdlib""
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core-legacy";"$(MMSOURCE17)\core-legacy\sourcehook";"$(HL2SDK)\public";"$(HL2SDK)\public\dlls";"$(HL2SDK)\public\engine";"$(HL2SDK)\public\tier0";"$(HL2SDK)\public\tier1";"$(HL2SDK)\public\vstdlib""
|
||||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;STUB_MM_EXPORTS;SOURCE_ENGINE=2"
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;STUB_MM_EXPORTS;SOURCE_ENGINE=2"
|
||||||
@ -120,7 +120,7 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalOptions="/D SE_EPISODEONE=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
AdditionalIncludeDirectories=""$(MMSOURCE17)\core-legacy";"$(MMSOURCE17)\core-legacy\sourcehook";"$(HL2SDK)\public";"$(HL2SDK)\public\dlls";"$(HL2SDK)\public\engine";"$(HL2SDK)\public\tier0";"$(HL2SDK)\public\tier1";"$(HL2SDK)\public\vstdlib""
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core-legacy";"$(MMSOURCE17)\core-legacy\sourcehook";"$(HL2SDK)\public";"$(HL2SDK)\public\dlls";"$(HL2SDK)\public\engine";"$(HL2SDK)\public\tier0";"$(HL2SDK)\public\tier1";"$(HL2SDK)\public\vstdlib""
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;STUB_MM_EXPORTS;SOURCE_ENGINE=2"
|
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;STUB_MM_EXPORTS;SOURCE_ENGINE=2"
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
@ -174,6 +174,164 @@
|
|||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
/>
|
/>
|
||||||
</Configuration>
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Debug - Dark Messiah|Win32"
|
||||||
|
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="$(ConfigurationName)"
|
||||||
|
ConfigurationType="2"
|
||||||
|
CharacterSet="2"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
|
Optimization="0"
|
||||||
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDK-DARKM)\public";"$(HL2SDK-DARKM)\public\engine";"$(HL2SDK-DARKM)\public\dlls";"$(HL2SDK-DARKM)\public\tier0";"$(HL2SDK-DARKM)\public\tier1";"$(HL2SDK-DARKM)\public\vstdlib""
|
||||||
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;STUB_MM_EXPORTS;SOURCE_ENGINE=3"
|
||||||
|
MinimalRebuild="true"
|
||||||
|
BasicRuntimeChecks="3"
|
||||||
|
RuntimeLibrary="1"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
Detect64BitPortabilityProblems="false"
|
||||||
|
DebugInformationFormat="4"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies=""$(HL2SDK-DARKM)\lib\public\tier0.lib" "$(HL2SDK-DARKM)\lib\public\tier1.lib" "$(HL2SDK-DARKM)\lib\public\vstdlib.lib""
|
||||||
|
OutputFile="$(OutDir)\stub_mm.dll"
|
||||||
|
LinkIncremental="2"
|
||||||
|
IgnoreDefaultLibraryNames="LIBC;LIBCD;LIBCMT"
|
||||||
|
GenerateDebugInformation="true"
|
||||||
|
SubSystem="2"
|
||||||
|
RandomizedBaseAddress="1"
|
||||||
|
DataExecutionPrevention="0"
|
||||||
|
TargetMachine="1"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Release - Dark Messiah|Win32"
|
||||||
|
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="$(ConfigurationName)"
|
||||||
|
ConfigurationType="2"
|
||||||
|
CharacterSet="2"
|
||||||
|
WholeProgramOptimization="1"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDK-DARKM)\public";"$(HL2SDK-DARKM)\public\engine";"$(HL2SDK-DARKM)\public\dlls";"$(HL2SDK-DARKM)\public\tier0";"$(HL2SDK-DARKM)\public\tier1";"$(HL2SDK-DARKM)\public\vstdlib""
|
||||||
|
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;STUB_MM_EXPORTS;SOURCE_ENGINE=3"
|
||||||
|
RuntimeLibrary="0"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
Detect64BitPortabilityProblems="false"
|
||||||
|
DebugInformationFormat="3"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies=""$(HL2SDK-DARKM)\lib\public\tier0.lib" "$(HL2SDK-DARKM)\lib\public\tier1.lib" "$(HL2SDK-DARKM)\lib\public\vstdlib.lib""
|
||||||
|
OutputFile="$(OutDir)\stub_mm.dll"
|
||||||
|
LinkIncremental="1"
|
||||||
|
IgnoreDefaultLibraryNames="LIBC;LIBCD;LIBCMTD"
|
||||||
|
GenerateDebugInformation="true"
|
||||||
|
SubSystem="2"
|
||||||
|
OptimizeReferences="2"
|
||||||
|
EnableCOMDATFolding="2"
|
||||||
|
RandomizedBaseAddress="1"
|
||||||
|
DataExecutionPrevention="0"
|
||||||
|
TargetMachine="1"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
<Configuration
|
<Configuration
|
||||||
Name="Debug - Orange Box|Win32"
|
Name="Debug - Orange Box|Win32"
|
||||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||||
@ -198,7 +356,7 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalOptions="/D SE_EPISODEONE=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKOB)\public";"$(HL2SDKOB)\public\engine";"$(HL2SDKOB)\public\game\server";"$(HL2SDKOB)\public\tier0";"$(HL2SDKOB)\public\tier1";"$(HL2SDKOB)\public\vstdlib""
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKOB)\public";"$(HL2SDKOB)\public\engine";"$(HL2SDKOB)\public\game\server";"$(HL2SDKOB)\public\tier0";"$(HL2SDKOB)\public\tier1";"$(HL2SDKOB)\public\vstdlib""
|
||||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;STUB_MM_EXPORTS;SOURCE_ENGINE=3"
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;STUB_MM_EXPORTS;SOURCE_ENGINE=3"
|
||||||
@ -278,7 +436,7 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalOptions="/D SE_EPISODEONE=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKOB)\public";"$(HL2SDKOB)\public\engine";"$(HL2SDKOB)\public\game\server";"$(HL2SDKOB)\public\tier0";"$(HL2SDKOB)\public\tier1";"$(HL2SDKOB)\public\vstdlib""
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKOB)\public";"$(HL2SDKOB)\public\engine";"$(HL2SDKOB)\public\game\server";"$(HL2SDKOB)\public\tier0";"$(HL2SDKOB)\public\tier1";"$(HL2SDKOB)\public\vstdlib""
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;STUB_MM_EXPORTS;SOURCE_ENGINE=3"
|
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;STUB_MM_EXPORTS;SOURCE_ENGINE=3"
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
@ -356,7 +514,7 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalOptions="/D SE_EPISODEONE=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKL4D)\public";"$(HL2SDKL4D)\public\engine";"$(HL2SDKL4D)\public\game\server";"$(HL2SDKL4D)\public\tier0";"$(HL2SDKL4D)\public\tier1";"$(HL2SDKL4D)\public\vstdlib""
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKL4D)\public";"$(HL2SDKL4D)\public\engine";"$(HL2SDKL4D)\public\game\server";"$(HL2SDKL4D)\public\tier0";"$(HL2SDKL4D)\public\tier1";"$(HL2SDKL4D)\public\vstdlib""
|
||||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;STUB_MM_EXPORTS;SOURCE_ENGINE=4"
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;STUB_MM_EXPORTS;SOURCE_ENGINE=4"
|
||||||
@ -436,7 +594,7 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalOptions="/D SE_EPISODEONE=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
AdditionalOptions="/D SE_EPISODEONE=1 /D SE_DARKMESSIAH=2 /D SE_ORANGEBOX=3 /D SE_LEFT4DEAD=4"
|
||||||
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKL4D)\public";"$(HL2SDKL4D)\public\engine";"$(HL2SDKL4D)\public\game\server";"$(HL2SDKL4D)\public\tier0";"$(HL2SDKL4D)\public\tier1";"$(HL2SDKL4D)\public\vstdlib""
|
AdditionalIncludeDirectories=""$(MMSOURCE17)\core";"$(MMSOURCE17)\core\sourcehook";"$(HL2SDKL4D)\public";"$(HL2SDKL4D)\public\engine";"$(HL2SDKL4D)\public\game\server";"$(HL2SDKL4D)\public\tier0";"$(HL2SDKL4D)\public\tier1";"$(HL2SDKL4D)\public\vstdlib""
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;STUB_MM_EXPORTS;SOURCE_ENGINE=4"
|
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;STUB_MM_EXPORTS;SOURCE_ENGINE=4"
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
|
|||||||
@ -12,11 +12,12 @@ require 'helpers.pm';
|
|||||||
chdir('..');
|
chdir('..');
|
||||||
chdir('..');
|
chdir('..');
|
||||||
|
|
||||||
# Folder .vcproj Engine Binary Suffix type
|
# Folder .vcproj Engine Binary Suffix type Platform
|
||||||
Build('loader', 'mm_loader', '', 'server', 'full');
|
Build('loader', 'mm_loader', '', 'server', 'full', 'both');
|
||||||
Build('core-legacy', 'mm_core-legacy', '', 'metamod.1.ep1', '');
|
Build('core-legacy', 'mm_core-legacy', '', 'metamod.1.ep1', '', 'both');
|
||||||
Build('core', 'mm_core', 'OrangeBox', 'metamod.2.ep2', '');
|
Build('core', 'mm_core', 'OrangeBox', 'metamod.2.ep2', '', 'both');
|
||||||
Build('core', 'mm_core', 'Left4Dead', 'metamod.2.l4d', '');
|
Build('core', 'mm_core', 'Left4Dead', 'metamod.2.l4d', '', 'both');
|
||||||
|
Build('core', 'mm_core', 'DarkMessiah', 'metamod.2.darkm', '', 'windows');
|
||||||
|
|
||||||
#Structure our output folder
|
#Structure our output folder
|
||||||
mkdir('OUTPUT');
|
mkdir('OUTPUT');
|
||||||
@ -44,9 +45,9 @@ sub Copy
|
|||||||
|
|
||||||
sub Build
|
sub Build
|
||||||
{
|
{
|
||||||
my ($srcdir, $vcproj, $objdir, $binary, $suffix) = (@_);
|
my ($srcdir, $vcproj, $objdir, $binary, $suffix, $platform) = (@_);
|
||||||
|
|
||||||
if ($^O eq "linux")
|
if ($^O eq "linux" && $platform ne "windows")
|
||||||
{
|
{
|
||||||
if ($suffix eq 'full')
|
if ($suffix eq 'full')
|
||||||
{
|
{
|
||||||
@ -58,7 +59,7 @@ sub Build
|
|||||||
}
|
}
|
||||||
BuildLinux($srcdir, $objdir, $binary);
|
BuildLinux($srcdir, $objdir, $binary);
|
||||||
}
|
}
|
||||||
else
|
elsif ($platform ne "linux")
|
||||||
{
|
{
|
||||||
$binary .= '.dll';
|
$binary .= '.dll';
|
||||||
BuildWindows($srcdir, $vcproj, $objdir, $binary);
|
BuildWindows($srcdir, $vcproj, $objdir, $binary);
|
||||||
@ -82,6 +83,10 @@ sub BuildWindows
|
|||||||
{
|
{
|
||||||
$param = "Release - Left 4 Dead";
|
$param = "Release - Left 4 Dead";
|
||||||
}
|
}
|
||||||
|
elsif ($build eq "DarkMessiah")
|
||||||
|
{
|
||||||
|
$param = "Release - Dark Messiah";
|
||||||
|
}
|
||||||
|
|
||||||
print "Clean building $srcdir...\n";
|
print "Clean building $srcdir...\n";
|
||||||
$vcbuilder = $ENV{'VC9BUILDER'};
|
$vcbuilder = $ENV{'VC9BUILDER'};
|
||||||
|
|||||||
@ -1,8 +1,16 @@
|
|||||||
|
2009/?/? 1.7.1:
|
||||||
|
- Added support for the Source engine version that runs Dark Messiah. The
|
||||||
|
development of this feature would not be possible without the support of the
|
||||||
|
following people from the game's community: Dylan Riggs, Carl Pettengill, Ed
|
||||||
|
Moreland, and Christian.
|
||||||
|
- Fixed a bug where plugin aliases defined in VDF files were not working on the
|
||||||
|
Orange Box and Left 4 Dead engines.
|
||||||
|
|
||||||
2008/11/26 1.7.0:
|
2008/11/26 1.7.0:
|
||||||
- Metamod:Source now uses a unified package that will run on all supported
|
- Metamod:Source now uses a unified package that will run on all supported
|
||||||
Source engines. This means you do not have to download a version based on
|
Source engines. This means you do not have to download a version based on
|
||||||
which Source engine or game you use.
|
which Source engine or game you use.
|
||||||
- Added support for the Source Engine version that runs Left 4 Dead.
|
- Added support for the Source engine version that runs Left 4 Dead.
|
||||||
- The 'meta refresh' command now handles plugins loaded from VDF files.
|
- The 'meta refresh' command now handles plugins loaded from VDF files.
|
||||||
- Fixed amb1952: Crash when the first plugin listed in metaplugins.ini had an
|
- Fixed amb1952: Crash when the first plugin listed in metaplugins.ini had an
|
||||||
alias and was not on the first line of the file.
|
alias and was not on the first line of the file.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user