-
Notifications
You must be signed in to change notification settings - Fork 22
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 2cec543
Showing
84 changed files
with
47,356 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
SOURCE 1 SDK LICENSE | ||
|
||
Source SDK Copyright(c) Valve Corp. | ||
|
||
THIS DOCUMENT DESCRIBES A CONTRACT BETWEEN YOU AND VALVE | ||
CORPORATION ("Valve"). PLEASE READ IT BEFORE DOWNLOADING OR USING | ||
THE SOURCE ENGINE SDK ("SDK"). BY DOWNLOADING AND/OR USING THE | ||
SOURCE ENGINE SDK YOU ACCEPT THIS LICENSE. IF YOU DO NOT AGREE TO | ||
THE TERMS OF THIS LICENSE PLEASE DON�T DOWNLOAD OR USE THE SDK. | ||
|
||
You may, free of charge, download and use the SDK to develop a modified Valve game | ||
running on the Source engine. You may distribute your modified Valve game in source and | ||
object code form, but only for free. Terms of use for Valve games are found in the Steam | ||
Subscriber Agreement located here: http://store.steampowered.com/subscriber_agreement/ | ||
|
||
You may copy, modify, and distribute the SDK and any modifications you make to the | ||
SDK in source and object code form, but only for free. Any distribution of this SDK must | ||
include this LICENSE file and thirdpartylegalnotices.txt. | ||
|
||
Any distribution of the SDK or a substantial portion of the SDK must include the above | ||
copyright notice and the following: | ||
|
||
DISCLAIMER OF WARRANTIES. THE SOURCE SDK AND ANY | ||
OTHER MATERIAL DOWNLOADED BY LICENSEE IS PROVIDED | ||
"AS IS". VALVE AND ITS SUPPLIERS DISCLAIM ALL | ||
WARRANTIES WITH RESPECT TO THE SDK, EITHER EXPRESS | ||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED | ||
WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, | ||
TITLE AND FITNESS FOR A PARTICULAR PURPOSE. | ||
|
||
LIMITATION OF LIABILITY. IN NO EVENT SHALL VALVE OR | ||
ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, | ||
INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER | ||
(INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF | ||
BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF | ||
BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) | ||
ARISING OUT OF THE USE OF OR INABILITY TO USE THE | ||
ENGINE AND/OR THE SDK, EVEN IF VALVE HAS BEEN | ||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. | ||
|
||
|
||
If you would like to use the SDK for a commercial purpose, please contact Valve at | ||
[email protected]. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
CC=gcc | ||
CXX=g++ | ||
|
||
# Work around hacks in the Source engine | ||
CFLAGS=-m32 -std=gnu++11 -fpermissive -fPIC \ | ||
-Dstrnicmp=strncasecmp -Dstricmp=strcasecmp -D_vsnprintf=vsnprintf \ | ||
-D_alloca=alloca -Dstrcmpi=strcasecmp -DPOSIX -DLINUX -D_LINUX | ||
|
||
OPTFLAGS=-O2 | ||
|
||
# ****************************** | ||
# Change these to the proper | ||
# locations for your system. | ||
# ****************************** | ||
HL2SDK=/path/to/hl2sdk-css # The path to the Source SDK to use | ||
MMSDK=/path/to/mmsource-1.10-git # The path to the Metamod source tree | ||
|
||
# Include Source SDK directories | ||
INCLUDES=-I$(HL2SDK)/public -I$(HL2SDK)/public/tier0 -I$(HL2SDK)/public/tier1 -I$(MMSDK)/core | ||
|
||
# Include the folder with the Source SDK libraries | ||
LINKFLAGS=-shared -m32 -L$(HL2SDK)/lib/linux | ||
|
||
all: check serverplugin_empty.o Tickrate_Enabler.so | ||
|
||
serverplugin_empty.o: | ||
$(CXX) $(CFLAGS) $(OPTFLAGS) $(INCLUDES) -c serverplugin_empty.cpp | ||
|
||
Tickrate_Enabler.so: | ||
$(CC) -o Tickrate_Enabler.so $(LINKFLAGS) serverplugin_empty.o $(MMSDK)/build/core/metamod.2.$(ENGINE)/sourcehook_sourcehook*.o \ | ||
-ltier0_srv -ltier1_i486 -static-libstdc++ -lm -ldl | ||
|
||
clean: | ||
-rm -f serverplugin_empty.o | ||
-rm -f Tickrate_Enabler.so | ||
|
||
check: | ||
if [ "$(ENGINE)" = "false" ]; then \ | ||
echo "You must supply one of the following values for ENGINE:"; \ | ||
echo "l4d2, l4d, obv, ob, css, sdk2013, ep2, or (possibly, with changes) ep1"; \ | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
Instructions: | ||
|
||
Clone https://github.com/alliedmodders/hl2sdk (with the specific branch you want) and point HL2SDK to the root of the git repo. | ||
|
||
You might also have to build https://github.com/alliedmodders/metamod-source first, then set MMSDK (in the Makefile) accordingly. | ||
Or, you can use the enclosed sourcehook object files, however this may stop working in the future. | ||
Then `make ENGINE=<yourengine>` | ||
|
||
(This was updated to use ServerGameDLL010) | ||
|
||
The license for serverplugin_empty.cpp is in LICENSE.txt and the license for sourcehook is in SOURCEHOOK_LICENSE.txt |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
The software is Copyright (C) 2004-2008, Metamod:Source Development Team. | ||
|
||
Metamod:Source is distributed under the "zLib/libpng" license, which is reproduced | ||
below: | ||
|
||
----------------------------------------------------------------------------- | ||
|
||
This software is provided "as-is", without any express or implied warranty. | ||
In no event will the authors be held liable for any damages arising from | ||
the use of this software. | ||
|
||
Permission is granted to anyone to use this software for any purpose, | ||
including commercial applications, and to alter it and redistribute it | ||
freely, subject to the following restrictions: | ||
|
||
1. The origin of this software must not be misrepresented; you must not | ||
claim that you wrote the original software. If you use this software in | ||
a product, an acknowledgment in the product documentation would be | ||
appreciated but is not required. | ||
|
||
2. Altered source versions must be plainly marked as such, and must not | ||
be misrepresented as being the original software. | ||
|
||
3. This notice may not be removed or altered from any source distribution. | ||
|
||
----------------------------------------------------------------------------- | ||
|
||
The zLib/libpng license has been approved by the "Open Source Initiative" | ||
organization. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,257 @@ | ||
//===== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======// | ||
// | ||
// Purpose: | ||
// | ||
// $NoKeywords: $ | ||
// | ||
//===========================================================================// | ||
|
||
|
||
#include "igameevents.h" | ||
#include "eiface.h" | ||
#include "tier0/icommandline.h" | ||
|
||
#include "sourcehook/sourcehook_impl.h" | ||
|
||
|
||
// memdbgon must be the last include file in a .cpp file!!! | ||
#include "tier0/memdbgon.h" | ||
|
||
//--------------------------------------------------------------------------------- | ||
// Purpose: a sample 3rd party plugin class | ||
//--------------------------------------------------------------------------------- | ||
class CEmptyServerPlugin: public IServerPluginCallbacks, public IGameEventListener | ||
{ | ||
public: | ||
CEmptyServerPlugin(); | ||
~CEmptyServerPlugin(); | ||
|
||
// IServerPluginCallbacks methods | ||
virtual bool Load( CreateInterfaceFn interfaceFactory, CreateInterfaceFn gameServerFactory ); | ||
virtual void Unload( void ); | ||
virtual void Pause( void ); | ||
virtual void UnPause( void ); | ||
virtual const char *GetPluginDescription( void ); | ||
virtual void LevelInit( char const *pMapName ); | ||
virtual void ServerActivate( edict_t *pEdictList, int edictCount, int clientMax ); | ||
virtual void GameFrame( bool simulating ); | ||
virtual void LevelShutdown( void ); | ||
virtual void ClientActive( edict_t *pEntity ); | ||
virtual void ClientDisconnect( edict_t *pEntity ); | ||
virtual void ClientPutInServer( edict_t *pEntity, char const *playername ); | ||
virtual void SetCommandClient( int index ); | ||
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 ClientCommand( edict_t *pEntity, const CCommand &args ); | ||
virtual PLUGIN_RESULT NetworkIDValidated( const char *pszUserName, const char *pszNetworkID ); | ||
virtual void OnQueryCvarValueFinished( QueryCvarCookie_t iCookie, edict_t *pPlayerEntity, EQueryCvarValueStatus eStatus, const char *pCvarName, const char *pCvarValue ); | ||
|
||
// added with version 3 of the interface. | ||
virtual void OnEdictAllocated( edict_t *edict ); | ||
virtual void OnEdictFreed( const edict_t *edict ); | ||
|
||
// IGameEventListener Interface | ||
virtual void FireGameEvent( KeyValues * event ); | ||
|
||
virtual int GetCommandIndex() { return m_iClientCommandIndex; } | ||
private: | ||
int m_iClientCommandIndex; | ||
}; | ||
|
||
|
||
// | ||
// The plugin is a static singleton that is exported as an interface | ||
// | ||
CEmptyServerPlugin g_EmtpyServerPlugin; | ||
EXPOSE_SINGLE_INTERFACE_GLOBALVAR(CEmptyServerPlugin, IServerPluginCallbacks, INTERFACEVERSION_ISERVERPLUGINCALLBACKS, g_EmtpyServerPlugin ); | ||
|
||
//--------------------------------------------------------------------------------- | ||
// Purpose: constructor/destructor | ||
//--------------------------------------------------------------------------------- | ||
CEmptyServerPlugin::CEmptyServerPlugin() | ||
{ | ||
m_iClientCommandIndex = 0; | ||
} | ||
|
||
CEmptyServerPlugin::~CEmptyServerPlugin() | ||
{ | ||
} | ||
|
||
//--------------------------------------------------------------------------------- | ||
// Purpose: called once per server frame, do recurring work here (like checking for timeouts) | ||
//--------------------------------------------------------------------------------- | ||
void CEmptyServerPlugin::GameFrame( bool simulating ) | ||
{ | ||
} | ||
|
||
SourceHook::Impl::CSourceHookImpl g_SourceHook; | ||
SourceHook::ISourceHook *g_SHPtr = &g_SourceHook; | ||
int g_PLID = 0; | ||
|
||
SH_DECL_HOOK0(IServerGameDLL, GetTickInterval, const, 0, float); | ||
|
||
float GetTickInterval() | ||
{ | ||
float tickinterval = DEFAULT_TICK_INTERVAL; | ||
|
||
if ( CommandLine()->CheckParm( "-tickrate" ) ) | ||
{ | ||
float tickrate = CommandLine()->ParmValue( "-tickrate", 0 ); | ||
if ( tickrate > 10 ) | ||
tickinterval = 1.0f / tickrate; | ||
} | ||
|
||
RETURN_META_VALUE(MRES_SUPERCEDE, tickinterval ); | ||
} | ||
|
||
|
||
IServerGameDLL *gamedll = NULL; | ||
|
||
//--------------------------------------------------------------------------------- | ||
// Purpose: called when the plugin is loaded, load the interface we need from the engine | ||
//--------------------------------------------------------------------------------- | ||
bool CEmptyServerPlugin::Load( CreateInterfaceFn interfaceFactory, CreateInterfaceFn gameServerFactory ) | ||
{ | ||
gamedll = (IServerGameDLL*)gameServerFactory("ServerGameDLL010",NULL); | ||
if(!gamedll) | ||
{ | ||
Warning("Failed to get a pointer on ServerGameDLL.\n"); | ||
return false; | ||
} | ||
|
||
SH_ADD_HOOK(IServerGameDLL, GetTickInterval, gamedll, SH_STATIC(GetTickInterval), false); | ||
|
||
return true; | ||
} | ||
|
||
//--------------------------------------------------------------------------------- | ||
// Purpose: called when the plugin is unloaded (turned off) | ||
//--------------------------------------------------------------------------------- | ||
void CEmptyServerPlugin::Unload( void ) | ||
{ | ||
SH_REMOVE_HOOK(IServerGameDLL, GetTickInterval, gamedll, SH_STATIC(GetTickInterval), false); | ||
} | ||
|
||
//--------------------------------------------------------------------------------- | ||
// Purpose: called when the plugin is paused (i.e should stop running but isn't unloaded) | ||
//--------------------------------------------------------------------------------- | ||
void CEmptyServerPlugin::Pause( void ) | ||
{ | ||
} | ||
|
||
//--------------------------------------------------------------------------------- | ||
// Purpose: called when the plugin is unpaused (i.e should start executing again) | ||
//--------------------------------------------------------------------------------- | ||
void CEmptyServerPlugin::UnPause( void ) | ||
{ | ||
} | ||
|
||
//--------------------------------------------------------------------------------- | ||
// Purpose: the name of this plugin, returned in "plugin_print" command | ||
//--------------------------------------------------------------------------------- | ||
const char *CEmptyServerPlugin::GetPluginDescription( void ) | ||
{ | ||
return "Tickrate_Enabler 0.5, updated, original by Didrole"; | ||
} | ||
|
||
//--------------------------------------------------------------------------------- | ||
// Purpose: called on level start | ||
//--------------------------------------------------------------------------------- | ||
void CEmptyServerPlugin::LevelInit( char const *pMapName ) | ||
{ | ||
} | ||
|
||
//--------------------------------------------------------------------------------- | ||
// Purpose: called on level start, when the server is ready to accept client connections | ||
// edictCount is the number of entities in the level, clientMax is the max client count | ||
//--------------------------------------------------------------------------------- | ||
void CEmptyServerPlugin::ServerActivate( edict_t *pEdictList, int edictCount, int clientMax ) | ||
{ | ||
} | ||
|
||
//--------------------------------------------------------------------------------- | ||
// Purpose: called on level end (as the server is shutting down or going to a new map) | ||
//--------------------------------------------------------------------------------- | ||
void CEmptyServerPlugin::LevelShutdown( void ) // !!!!this can get called multiple times per map change | ||
{ | ||
} | ||
|
||
//--------------------------------------------------------------------------------- | ||
// Purpose: called when a client spawns into a server (i.e as they begin to play) | ||
//--------------------------------------------------------------------------------- | ||
void CEmptyServerPlugin::ClientActive( edict_t *pEntity ) | ||
{ | ||
} | ||
|
||
//--------------------------------------------------------------------------------- | ||
// Purpose: called when a client leaves a server (or is timed out) | ||
//--------------------------------------------------------------------------------- | ||
void CEmptyServerPlugin::ClientDisconnect( edict_t *pEntity ) | ||
{ | ||
} | ||
|
||
//--------------------------------------------------------------------------------- | ||
// Purpose: called on | ||
//--------------------------------------------------------------------------------- | ||
void CEmptyServerPlugin::ClientPutInServer( edict_t *pEntity, char const *playername ) | ||
{ | ||
} | ||
|
||
//--------------------------------------------------------------------------------- | ||
// Purpose: called on level start | ||
//--------------------------------------------------------------------------------- | ||
void CEmptyServerPlugin::SetCommandClient( int index ) | ||
{ | ||
m_iClientCommandIndex = index; | ||
} | ||
|
||
//--------------------------------------------------------------------------------- | ||
// Purpose: called on level start | ||
//--------------------------------------------------------------------------------- | ||
void CEmptyServerPlugin::ClientSettingsChanged( edict_t *pEdict ) | ||
{ | ||
} | ||
|
||
//--------------------------------------------------------------------------------- | ||
// Purpose: called when a client joins a server | ||
//--------------------------------------------------------------------------------- | ||
PLUGIN_RESULT CEmptyServerPlugin::ClientConnect( bool *bAllowConnect, edict_t *pEntity, const char *pszName, const char *pszAddress, char *reject, int maxrejectlen ) | ||
{ | ||
return PLUGIN_CONTINUE; | ||
} | ||
|
||
//--------------------------------------------------------------------------------- | ||
// Purpose: called when a client types in a command (only a subset of commands however, not CON_COMMAND's) | ||
//--------------------------------------------------------------------------------- | ||
PLUGIN_RESULT CEmptyServerPlugin::ClientCommand( edict_t *pEntity, const CCommand &args ) | ||
{ | ||
return PLUGIN_CONTINUE; | ||
} | ||
|
||
//--------------------------------------------------------------------------------- | ||
// Purpose: called when a client is authenticated | ||
//--------------------------------------------------------------------------------- | ||
PLUGIN_RESULT CEmptyServerPlugin::NetworkIDValidated( const char *pszUserName, const char *pszNetworkID ) | ||
{ | ||
return PLUGIN_CONTINUE; | ||
} | ||
|
||
//--------------------------------------------------------------------------------- | ||
// Purpose: called when a cvar value query is finished | ||
//--------------------------------------------------------------------------------- | ||
void CEmptyServerPlugin::OnQueryCvarValueFinished( QueryCvarCookie_t iCookie, edict_t *pPlayerEntity, EQueryCvarValueStatus eStatus, const char *pCvarName, const char *pCvarValue ) | ||
{ | ||
} | ||
void CEmptyServerPlugin::OnEdictAllocated( edict_t *edict ) | ||
{ | ||
} | ||
void CEmptyServerPlugin::OnEdictFreed( const edict_t *edict ) | ||
{ | ||
} | ||
|
||
//--------------------------------------------------------------------------------- | ||
// Purpose: called when an event is fired | ||
//--------------------------------------------------------------------------------- | ||
void CEmptyServerPlugin::FireGameEvent( KeyValues * event ) | ||
{ | ||
} |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Oops, something went wrong.