Spring Cleaning, Part Ichi (1)
Various minor things done to project files Updated sample extension project file and updated makefile to the new unified version (more changes likely on the way) Updated regex project file and makefile --HG-- extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401971
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
#(C)2004-2008 Metamod:Source Development Team
|
||||
# Makefile written by David "BAILOPAN" Anderson
|
||||
|
||||
HL2SDK = ../../../hl2sdk-ob
|
||||
SMM_ROOT = ../../../sourcemm-1.6.0
|
||||
SRCDS = ~/srcds/orangebox
|
||||
SMSDK = ..
|
||||
|
||||
### EDIT BELOW FOR OTHER PROJECTS ###
|
||||
|
||||
OPT_FLAGS = -O3 -funroll-loops -s -pipe
|
||||
GCC4_FLAGS = -fvisibility=hidden -fvisibility-inlines-hidden
|
||||
DEBUG_FLAGS = -g -ggdb3
|
||||
CPP = gcc-4.1
|
||||
BINARY = stub_mm_i486.so
|
||||
|
||||
HL2PUB = $(HL2SDK)/public
|
||||
|
||||
OBJECTS = stub_mm.cpp sm_ext.cpp sm_sdk_config.cpp stub_util.cpp
|
||||
|
||||
LINK = vstdlib_i486.so tier0_i486.so -static-libgcc
|
||||
|
||||
INCLUDE = -I. -I.. -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 \
|
||||
-I$(HL2PUB)/tier1 -I$(HL2PUB)/vstdlib -I$(HL2SDK)/tier1 -I$(SMM_ROOT) -I$(SMM_ROOT)/sourcehook \
|
||||
-I$(SMM_ROOT)/sourcemm -I$(SMSDK) -I$(SMSDK)/jit -I$(SMSDK)/jit/x86 -I$(SMSDK)/extensions \
|
||||
-I$(SMSDK)/sourcepawn
|
||||
|
||||
ifeq "$(DEBUG)" "true"
|
||||
BIN_DIR = Debug
|
||||
CFLAGS = $(DEBUG_FLAGS)
|
||||
else
|
||||
BIN_DIR = Release
|
||||
CFLAGS = $(OPT_FLAGS)
|
||||
endif
|
||||
|
||||
GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)
|
||||
|
||||
CFLAGS += -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp \
|
||||
-Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca \
|
||||
-Dstrcmpi=strcasecmp -Wall -Wno-non-virtual-dtor -Werror -fPIC -fno-exceptions -fno-rtti -msse \
|
||||
-fno-strict-aliasing -DORANGEBOX_BUILD
|
||||
|
||||
ifeq "$(GCC_VERSION)" "4"
|
||||
CFLAGS += $(GCC4_FLAGS)
|
||||
endif
|
||||
|
||||
OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o)
|
||||
|
||||
$(BIN_DIR)/%.o: %.cpp
|
||||
$(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $<
|
||||
|
||||
all:
|
||||
mkdir -p $(BIN_DIR)
|
||||
rm -f vstdlib_i486.so
|
||||
rm -f tier0_i486.so
|
||||
ln -sf $(SRCDS)/bin/vstdlib_i486.so vstdlib_i486.so
|
||||
ln -sf $(SRCDS)/bin/tier0_i486.so tier0_i486.so
|
||||
$(MAKE) -f Makefile.orig stub_mm
|
||||
rm -rf $(BINARY)
|
||||
|
||||
stub_mm: $(OBJ_LINUX)
|
||||
$(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
|
||||
|
||||
debug:
|
||||
$(MAKE) -f Makefile.orig all DEBUG=true
|
||||
|
||||
default: all
|
||||
|
||||
clean:
|
||||
rm -rf Release/*.o
|
||||
rm -rf Release/$(BINARY)
|
||||
rm -rf Debug/*.o
|
||||
rm -rf Debug/$(BINARY)
|
||||
@@ -0,0 +1,73 @@
|
||||
#(C)2004-2008 Metamod:Source Development Team
|
||||
# Makefile written by David "BAILOPAN" Anderson
|
||||
|
||||
HL2SDK = ../../../hl2sdk
|
||||
SMM_ROOT = ../../../sourcemm-1.4.2
|
||||
SRCDS = ~/srcds
|
||||
SMSDK = ..
|
||||
|
||||
### EDIT BELOW FOR OTHER PROJECTS ###
|
||||
|
||||
OPT_FLAGS = -O3 -funroll-loops -s -pipe
|
||||
GCC4_FLAGS = -fvisibility=hidden -fvisibility-inlines-hidden
|
||||
DEBUG_FLAGS = -g -ggdb3
|
||||
CPP = gcc-4.1
|
||||
BINARY = stub_mm_i486.so
|
||||
|
||||
HL2PUB = $(HL2SDK)/public
|
||||
|
||||
OBJECTS = stub_mm.cpp sm_ext.cpp sm_sdk_config.cpp stub_util.cpp
|
||||
|
||||
LINK = vstdlib_i486.so tier0_i486.so -static-libgcc
|
||||
|
||||
INCLUDE = -I. -I.. -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 \
|
||||
-I$(HL2PUB)/tier1 -I$(HL2PUB)/vstdlib -I$(HL2SDK)/tier1 -I$(SMM_ROOT) -I$(SMM_ROOT)/sourcehook \
|
||||
-I$(SMM_ROOT)/sourcemm -I$(SMSDK) -I$(SMSDK)/jit -I$(SMSDK)/jit/x86 -I$(SMSDK)/extensions \
|
||||
-I$(SMSDK)/sourcepawn
|
||||
|
||||
ifeq "$(DEBUG)" "true"
|
||||
BIN_DIR = Debug
|
||||
CFLAGS = $(DEBUG_FLAGS)
|
||||
else
|
||||
BIN_DIR = Release
|
||||
CFLAGS = $(OPT_FLAGS)
|
||||
endif
|
||||
|
||||
GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)
|
||||
|
||||
CFLAGS += -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp \
|
||||
-Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca \
|
||||
-Dstrcmpi=strcasecmp -Wall -Wno-non-virtual-dtor -Werror -fPIC -fno-exceptions -fno-rtti -msse \
|
||||
-fno-strict-aliasing
|
||||
|
||||
ifeq "$(GCC_VERSION)" "4"
|
||||
CFLAGS += $(GCC4_FLAGS)
|
||||
endif
|
||||
|
||||
OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o)
|
||||
|
||||
$(BIN_DIR)/%.o: %.cpp
|
||||
$(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $<
|
||||
|
||||
all:
|
||||
mkdir -p $(BIN_DIR)
|
||||
rm -f vstdlib_i486.so
|
||||
rm -f tier0_i486.so
|
||||
ln -sf $(SRCDS)/bin/vstdlib_i486.so vstdlib_i486.so
|
||||
ln -sf $(SRCDS)/bin/tier0_i486.so tier0_i486.so
|
||||
$(MAKE) -f Makefile.orig stub_mm
|
||||
rm -rf $(BINARY)
|
||||
|
||||
stub_mm: $(OBJ_LINUX)
|
||||
$(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
|
||||
|
||||
debug:
|
||||
$(MAKE) -f Makefile.orig all DEBUG=true
|
||||
|
||||
default: all
|
||||
|
||||
clean:
|
||||
rm -rf Release/*.o
|
||||
rm -rf Release/$(BINARY)
|
||||
rm -rf Debug/*.o
|
||||
rm -rf Debug/$(BINARY)
|
||||
@@ -0,0 +1,145 @@
|
||||
#include <stdio.h>
|
||||
#include "stub_mm.h"
|
||||
#include "stub_util.h"
|
||||
#include "sm_ext.h"
|
||||
|
||||
MyExtension g_SMExt;
|
||||
|
||||
bool SM_LoadExtension(char *error, size_t maxlength)
|
||||
{
|
||||
if ((smexts = (IExtensionManager *)g_SMAPI->MetaFactory(
|
||||
SOURCEMOD_INTERFACE_EXTENSIONS,
|
||||
NULL,
|
||||
NULL))
|
||||
== NULL)
|
||||
{
|
||||
if (error && maxlength)
|
||||
{
|
||||
UTIL_Format(error, maxlength, SOURCEMOD_INTERFACE_EXTENSIONS " interface not found");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/* This could be more dynamic */
|
||||
char path[256];
|
||||
g_SMAPI->PathFormat(path,
|
||||
sizeof(path),
|
||||
"addons/myplugin/bin/myplugin%s",
|
||||
#if defined __linux__
|
||||
"_i486.so"
|
||||
#else
|
||||
".dll"
|
||||
#endif
|
||||
);
|
||||
|
||||
if ((myself = smexts->LoadExternal(&g_SMExt,
|
||||
path,
|
||||
"myplugin_mm.ext",
|
||||
error,
|
||||
maxlength))
|
||||
== NULL)
|
||||
{
|
||||
SM_UnsetInterfaces();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void SM_UnloadExtension()
|
||||
{
|
||||
smexts->UnloadExtension(myself);
|
||||
}
|
||||
|
||||
bool MyExtension::OnExtensionLoad(IExtension *me,
|
||||
IShareSys *sys,
|
||||
char *error,
|
||||
size_t maxlength,
|
||||
bool late)
|
||||
{
|
||||
sharesys = sys;
|
||||
myself = me;
|
||||
|
||||
/* Get the default interfaces from our configured SDK header */
|
||||
if (!SM_AcquireInterfaces(error, maxlength))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void MyExtension::OnExtensionUnload()
|
||||
{
|
||||
/* Clean up any resources here, and more importantly, make sure
|
||||
* any listeners/hooks into SourceMod are totally removed, as well
|
||||
* as data structures like handle types and forwards.
|
||||
*/
|
||||
|
||||
//...
|
||||
|
||||
/* Make sure our pointers get NULL'd just in case */
|
||||
SM_UnsetInterfaces();
|
||||
}
|
||||
|
||||
void MyExtension::OnExtensionsAllLoaded()
|
||||
{
|
||||
/* Called once all extensions are marked as loaded.
|
||||
* This always called, and always called only once.
|
||||
*/
|
||||
}
|
||||
|
||||
void MyExtension::OnExtensionPauseChange(bool pause)
|
||||
{
|
||||
}
|
||||
|
||||
bool MyExtension::QueryRunning(char *error, size_t maxlength)
|
||||
{
|
||||
/* if something is required that can't be determined during the initial
|
||||
* load process, print a message here will show a helpful message to
|
||||
* users when they view the extension's info.
|
||||
*/
|
||||
return true;
|
||||
}
|
||||
|
||||
bool MyExtension::IsMetamodExtension()
|
||||
{
|
||||
/* Must return false! */
|
||||
return false;
|
||||
}
|
||||
|
||||
const char *MyExtension::GetExtensionName()
|
||||
{
|
||||
return mmsplugin->GetName();
|
||||
}
|
||||
|
||||
const char *MyExtension::GetExtensionURL()
|
||||
{
|
||||
return mmsplugin->GetURL();
|
||||
}
|
||||
|
||||
const char *MyExtension::GetExtensionTag()
|
||||
{
|
||||
return mmsplugin->GetLogTag();
|
||||
}
|
||||
|
||||
const char *MyExtension::GetExtensionAuthor()
|
||||
{
|
||||
return mmsplugin->GetAuthor();
|
||||
}
|
||||
|
||||
const char *MyExtension::GetExtensionVerString()
|
||||
{
|
||||
return mmsplugin->GetVersion();
|
||||
}
|
||||
|
||||
const char *MyExtension::GetExtensionDescription()
|
||||
{
|
||||
return mmsplugin->GetDescription();
|
||||
}
|
||||
|
||||
const char *MyExtension::GetExtensionDateString()
|
||||
{
|
||||
return mmsplugin->GetDate();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
#ifndef _INCLUDE_SAMPLE_MMS_SOURCEMOD_EXTENSION_
|
||||
#define _INCLUDE_SAMPLE_MMS_SOURCEMOD_EXTENSION_
|
||||
|
||||
#include "sm_sdk_config.h"
|
||||
|
||||
using namespace SourceMod;
|
||||
|
||||
class MyExtension : public IExtensionInterface
|
||||
{
|
||||
public:
|
||||
virtual bool OnExtensionLoad(IExtension *me,
|
||||
IShareSys *sys,
|
||||
char *error,
|
||||
size_t maxlength,
|
||||
bool late);
|
||||
virtual void OnExtensionUnload();
|
||||
virtual void OnExtensionsAllLoaded();
|
||||
virtual void OnExtensionPauseChange(bool pause);
|
||||
virtual bool QueryRunning(char *error, size_t maxlength);
|
||||
virtual bool IsMetamodExtension();
|
||||
virtual const char *GetExtensionName();
|
||||
virtual const char *GetExtensionURL();
|
||||
virtual const char *GetExtensionTag();
|
||||
virtual const char *GetExtensionAuthor();
|
||||
virtual const char *GetExtensionVerString();
|
||||
virtual const char *GetExtensionDescription();
|
||||
virtual const char *GetExtensionDateString();
|
||||
};
|
||||
|
||||
bool SM_LoadExtension(char *error, size_t maxlength);
|
||||
void SM_UnloadExtension();
|
||||
|
||||
extern IShareSys *sharesys;
|
||||
extern IExtension *myself;
|
||||
extern MyExtension g_SMExt;
|
||||
|
||||
#endif //_INCLUDE_SAMPLE_MMS_SOURCEMOD_EXTENSION_
|
||||
|
||||
@@ -0,0 +1,151 @@
|
||||
#include "sm_sdk_config.h"
|
||||
|
||||
using namespace SourceMod;
|
||||
|
||||
bool SM_AcquireInterfaces(char *error, size_t maxlength)
|
||||
{
|
||||
SM_FIND_IFACE_OR_FAIL(SOURCEMOD, sm_main, error, maxlength);
|
||||
|
||||
#if defined SMEXT_ENABLE_FORWARDSYS
|
||||
SM_FIND_IFACE_OR_FAIL(FORWARDMANAGER, sm_forwards, error, maxlength);
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_HANDLESYS
|
||||
SM_FIND_IFACE_OR_FAIL(HANDLESYSTEM, sm_handlesys, error, maxlength);
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_PLAYERHELPERS
|
||||
SM_FIND_IFACE_OR_FAIL(PLAYERMANAGER, sm_players, error, maxlength);
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_DBMANAGER
|
||||
SM_FIND_IFACE_OR_FAIL(DBI, sm_dbi, error, maxlength);
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_GAMECONF
|
||||
SM_FIND_IFACE_OR_FAIL(GAMECONFIG, sm_gameconfs, error, maxlength);
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_MEMUTILS
|
||||
SM_FIND_IFACE_OR_FAIL(MEMORYUTILS, sm_memutils, error, maxlength);
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_GAMEHELPERS
|
||||
SM_FIND_IFACE_OR_FAIL(GAMEHELPERS, sm_gamehelpers, error, maxlength);
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_TIMERSYS
|
||||
SM_FIND_IFACE_OR_FAIL(TIMERSYS, sm_timersys, error, maxlength);
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_THREADER
|
||||
SM_FIND_IFACE_OR_FAIL(THREADER, sm_threader, error, maxlength);
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_LIBSYS
|
||||
SM_FIND_IFACE_OR_FAIL(LIBRARYSYS, sm_libsys, error, maxlength);
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_PLUGINSYS
|
||||
SM_FIND_IFACE_OR_FAIL(PLUGINSYSTEM, sm_plsys, error, maxlength);
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_MENUS
|
||||
SM_FIND_IFACE_OR_FAIL(MENUMANAGER, sm_menus, error, maxlength);
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_ADMINSYS
|
||||
SM_FIND_IFACE_OR_FAIL(ADMINSYS, sm_adminsys, error, maxlength);
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_TEXTPARSERS
|
||||
SM_FIND_IFACE_OR_FAIL(TEXTPARSERS, sm_text, error, maxlength);
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void SM_UnsetInterfaces()
|
||||
{
|
||||
myself = NULL;
|
||||
smexts = NULL;
|
||||
sharesys = NULL;
|
||||
sm_main = NULL;
|
||||
#if defined SMEXT_ENABLE_FORWARDSYS
|
||||
sm_forwards = NULL;
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_HANDLESYS
|
||||
sm_handlesys = NULL;
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_PLAYERHELPERS
|
||||
sm_players = NULL;
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_DBMANAGER
|
||||
sm_dbi = NULL;
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_GAMECONF
|
||||
sm_gameconfs = NULL;
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_MEMUTILS
|
||||
sm_memutils = NULL;
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_GAMEHELPERS
|
||||
sm_gamehelpers = NULL;
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_TIMERSYS
|
||||
sm_timersys = NULL;
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_THREADER
|
||||
sm_threader = NULL;
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_LIBSYS
|
||||
sm_libsys = NULL;
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_PLUGINSYS
|
||||
sm_plsys = NULL;
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_MENUS
|
||||
sm_menus = NULL;
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_ADMINSYS
|
||||
sm_adminsys = NULL;
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_TEXTPARSERS
|
||||
sm_text = NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
IExtension *myself = NULL;
|
||||
IExtensionManager *smexts = NULL;
|
||||
IShareSys *sharesys = NULL;
|
||||
SourceMod::ISourceMod *sm_main = NULL;
|
||||
#if defined SMEXT_ENABLE_FORWARDSYS
|
||||
SourceMod::IForwardManager *sm_forwards = NULL;
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_HANDLESYS
|
||||
SourceMod::IHandleSys *sm_handlesys = NULL;
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_PLAYERHELPERS
|
||||
SourceMod::IPlayerManager *sm_players = NULL;
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_DBMANAGER
|
||||
SourceMod::IDBManager *sm_dbi = NULL;
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_GAMECONF
|
||||
SourceMod::IGameConfigManager *sm_gameconfs = NULL;
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_MEMUTILS
|
||||
SourceMod::IMemoryUtils *sm_memutils = NULL;
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_GAMEHELPERS
|
||||
SourceMod::IGameHelpers *sm_gamehelpers = NULL;
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_TIMERSYS
|
||||
SourceMod::ITimerSystem *sm_timersys = NULL;
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_THREADER
|
||||
SourceMod::IThreader *sm_threader = NULL;
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_LIBSYS
|
||||
SourceMod::ILibrarySys *sm_libsys = NULL;
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_PLUGINSYS
|
||||
SourceMod::IPluginManager *sm_plsys = NULL;
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_MENUS
|
||||
SourceMod::IMenuManager *sm_menus = NULL;
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_ADMINSYS
|
||||
SourceMod::IAdminSystem *sm_adminsys = NULL;
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_TEXTPARSERS
|
||||
SourceMod::ITextParsers *sm_text = NULL;
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,128 @@
|
||||
#ifndef _INCLUDE_SOURCEMOD_CONFIG_H_
|
||||
#define _INCLUDE_SOURCEMOD_CONFIG_H_
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
/**
|
||||
* @brief Acquires the interfaces enabled at the bottom of this header.
|
||||
*
|
||||
* @param error Buffer to store error message.
|
||||
* @param maxlength Maximum size of the error buffer.
|
||||
* @return True on success, false on failure.
|
||||
* On failure, a null-terminated string will be stored
|
||||
* in the error buffer, if the buffer is non-NULL and
|
||||
* greater than 0 bytes in size.
|
||||
*/
|
||||
bool SM_AcquireInterfaces(char *error, size_t maxlength);
|
||||
|
||||
/**
|
||||
* @brief Sets each acquired interface to NULL.
|
||||
*/
|
||||
void SM_UnsetInterfaces();
|
||||
|
||||
/**
|
||||
* Enable interfaces you want to use here by uncommenting lines.
|
||||
* These interfaces are all part of SourceMod's core.
|
||||
*/
|
||||
//#define SMEXT_ENABLE_FORWARDSYS
|
||||
//#define SMEXT_ENABLE_HANDLESYS
|
||||
//#define SMEXT_ENABLE_PLAYERHELPERS
|
||||
//#define SMEXT_ENABLE_DBMANAGER
|
||||
//#define SMEXT_ENABLE_GAMECONF
|
||||
//#define SMEXT_ENABLE_MEMUTILS
|
||||
//#define SMEXT_ENABLE_GAMEHELPERS
|
||||
//#define SMEXT_ENABLE_TIMERSYS
|
||||
//#define SMEXT_ENABLE_THREADER
|
||||
//#define SMEXT_ENABLE_LIBSYS
|
||||
//#define SMEXT_ENABLE_MENUS
|
||||
//#define SMEXT_ENABLE_ADTFACTORY
|
||||
//#define SMEXT_ENABLE_PLUGINSYS
|
||||
//#define SMEXT_ENABLE_ADMINSYS
|
||||
//#define SMEXT_ENABLE_TEXTPARSERS
|
||||
|
||||
|
||||
/**
|
||||
* There is no need to edit below.
|
||||
*/
|
||||
|
||||
#include <IShareSys.h>
|
||||
#include <IExtensionSys.h>
|
||||
extern SourceMod::IExtension *myself;
|
||||
extern SourceMod::IExtensionManager *smexts;
|
||||
extern SourceMod::IShareSys *sharesys;
|
||||
|
||||
#include <ISourceMod.h>
|
||||
extern SourceMod::ISourceMod *sm_main;
|
||||
|
||||
#if defined SMEXT_ENABLE_FORWARDSYS
|
||||
#include <IForwardSys.h>
|
||||
extern SourceMod::IForwardManager *sm_forwards;
|
||||
#endif
|
||||
|
||||
#if defined SMEXT_ENABLE_HANDLESYS
|
||||
#include <IHandleSys.h>
|
||||
extern SourceMod::IHandleSys *sm_handlesys;
|
||||
#endif
|
||||
|
||||
#if defined SMEXT_ENABLE_PLAYERHELPERS
|
||||
#include <IPlayerHelpers.h>
|
||||
extern SourceMod::IPlayerManager *sm_players;
|
||||
#endif
|
||||
|
||||
#if defined SMEXT_ENABLE_DBMANAGER
|
||||
#include <IDBDriver.h>
|
||||
extern SourceMod::IDBManager *sm_dbi;
|
||||
#endif
|
||||
|
||||
#if defined SMEXT_ENABLE_GAMECONF
|
||||
#include <IGameConfigs.h>
|
||||
extern SourceMod::IGameConfigManager *sm_gameconfs;
|
||||
#endif
|
||||
|
||||
#if defined SMEXT_ENABLE_MEMUTILS
|
||||
#include <IMemoryUtils.h>
|
||||
extern SourceMod::IMemoryUtils *sm_memutils;
|
||||
#endif
|
||||
|
||||
#if defined SMEXT_ENABLE_GAMEHELPERS
|
||||
#include <IGameHelpers.h>
|
||||
extern SourceMod::IGameHelpers *sm_gamehelpers;
|
||||
#endif
|
||||
|
||||
#if defined SMEXT_ENABLE_TIMERSYS
|
||||
#include <ITimerSystem.h>
|
||||
extern SourceMod::ITimerSystem *sm_timersys;
|
||||
#endif
|
||||
|
||||
#if defined SMEXT_ENABLE_THREADER
|
||||
#include <IThreader.h>
|
||||
extern SourceMod::IThreader *sm_threader;
|
||||
#endif
|
||||
|
||||
#if defined SMEXT_ENABLE_LIBSYS
|
||||
#include <ILibrarySys.h>
|
||||
extern SourceMod::ILibrarySys *sm_libsys;
|
||||
#endif
|
||||
|
||||
#if defined SMEXT_ENABLE_PLUGINSYS
|
||||
#include <IPluginSys.h>
|
||||
extern SourceMod::IPluginManager *sm_plsys;
|
||||
#endif
|
||||
|
||||
#if defined SMEXT_ENABLE_MENUS
|
||||
#include <IMenuManager.h>
|
||||
extern SourceMod::IMenuManager *sm_menus;
|
||||
#endif
|
||||
|
||||
#if defined SMEXT_ENABLE_ADMINSYS
|
||||
#include <IAdminSystem.h>
|
||||
extern SourceMod::IAdminSystem *sm_adminsys;
|
||||
#endif
|
||||
|
||||
#if defined SMEXT_ENABLE_TEXTPARSERS
|
||||
#include <ITextParsers.h>
|
||||
extern SourceMod::ITextParsers *sm_text;
|
||||
#endif
|
||||
|
||||
#endif //_INCLUDE_SOURCEMOD_CONFIG_H_
|
||||
|
||||
@@ -0,0 +1,144 @@
|
||||
/**
|
||||
* vim: set ts=4 :
|
||||
* ======================================================
|
||||
* Metamod:Source Stub Plugin
|
||||
* Written by AlliedModders LLC.
|
||||
* ======================================================
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* This stub plugin is public domain.
|
||||
*
|
||||
* Version: $Id: stub_mm.cpp 534 2007-10-30 18:22:12Z dvander $
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "stub_mm.h"
|
||||
#include "stub_util.h"
|
||||
#include "sm_ext.h"
|
||||
|
||||
SH_DECL_HOOK3_void(IServerGameDLL, ServerActivate, SH_NOATTRIB, 0, edict_t *, int, int);
|
||||
|
||||
StubPlugin g_StubPlugin;
|
||||
IVEngineServer *engine = NULL;
|
||||
IServerGameDLL *server = NULL;
|
||||
ISmmPlugin *mmsplugin = &g_StubPlugin;
|
||||
|
||||
PLUGIN_EXPOSE(StubPlugin, g_StubPlugin);
|
||||
bool StubPlugin::Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlen, bool late)
|
||||
{
|
||||
PLUGIN_SAVEVARS();
|
||||
|
||||
#if defined METAMOD_PLAPI_VERSION
|
||||
GET_V_IFACE_ANY(GetServerFactory, server, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
|
||||
GET_V_IFACE_ANY(GetEngineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
|
||||
#else
|
||||
GET_V_IFACE_ANY(serverFactory, server, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
|
||||
GET_V_IFACE_ANY(engineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
|
||||
#endif
|
||||
|
||||
SH_ADD_HOOK_STATICFUNC(IServerGameDLL, ServerActivate, server, Hook_ServerActivate, true);
|
||||
|
||||
ismm->AddListener(this, this);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool StubPlugin::Unload(char *error, size_t maxlen)
|
||||
{
|
||||
SM_UnloadExtension();
|
||||
|
||||
SH_REMOVE_HOOK_STATICFUNC(IServerGameDLL, ServerActivate, server, Hook_ServerActivate, true);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void Hook_ServerActivate(edict_t *pEdictList, int edictCount, int clientMax)
|
||||
{
|
||||
META_LOG(g_PLAPI, "ServerActivate() called: edictCount = %d, clientMax = %d", edictCount, clientMax);
|
||||
}
|
||||
|
||||
void *StubPlugin::OnMetamodQuery(const char *iface, int *ret)
|
||||
{
|
||||
if (strcmp(iface, SOURCEMOD_NOTICE_EXTENSIONS) == 0)
|
||||
{
|
||||
BindToSourcemod();
|
||||
}
|
||||
|
||||
if (ret != NULL)
|
||||
{
|
||||
*ret = IFACE_OK;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void StubPlugin::AllPluginsLoaded()
|
||||
{
|
||||
BindToSourcemod();
|
||||
}
|
||||
|
||||
void StubPlugin::BindToSourcemod()
|
||||
{
|
||||
char error[256];
|
||||
|
||||
if (!SM_LoadExtension(error, sizeof(error)))
|
||||
{
|
||||
char message[512];
|
||||
UTIL_Format(message, sizeof(message), "Could not load as a SourceMod extension: %s\n", error);
|
||||
engine->LogPrint(message);
|
||||
}
|
||||
}
|
||||
|
||||
bool StubPlugin::Pause(char *error, size_t maxlen)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool StubPlugin::Unpause(char *error, size_t maxlen)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
const char *StubPlugin::GetLicense()
|
||||
{
|
||||
return "Public Domain";
|
||||
}
|
||||
|
||||
const char *StubPlugin::GetVersion()
|
||||
{
|
||||
return "1.0.0.0";
|
||||
}
|
||||
|
||||
const char *StubPlugin::GetDate()
|
||||
{
|
||||
return __DATE__;
|
||||
}
|
||||
|
||||
const char *StubPlugin::GetLogTag()
|
||||
{
|
||||
return "STUB";
|
||||
}
|
||||
|
||||
const char *StubPlugin::GetAuthor()
|
||||
{
|
||||
return "AlliedModders LLC";
|
||||
}
|
||||
|
||||
const char *StubPlugin::GetDescription()
|
||||
{
|
||||
return "Sample empty plugin";
|
||||
}
|
||||
|
||||
const char *StubPlugin::GetName()
|
||||
{
|
||||
return "Stub Plugin";
|
||||
}
|
||||
|
||||
const char *StubPlugin::GetURL()
|
||||
{
|
||||
return "http://www.sourcemm.net/";
|
||||
}
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
/**
|
||||
* vim: set ts=4 :
|
||||
* ======================================================
|
||||
* Metamod:Source Stub Plugin
|
||||
* Written by AlliedModders LLC.
|
||||
* ======================================================
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* This stub plugin is public domain.
|
||||
*
|
||||
* Version: $Id: stub_mm.h 463 2007-10-06 17:01:51Z dvander $
|
||||
*/
|
||||
|
||||
#ifndef _INCLUDE_METAMOD_SOURCE_STUB_PLUGIN_H_
|
||||
#define _INCLUDE_METAMOD_SOURCE_STUB_PLUGIN_H_
|
||||
|
||||
#include <ISmmPlugin.h>
|
||||
|
||||
class StubPlugin :
|
||||
public ISmmPlugin,
|
||||
public IMetamodListener
|
||||
{
|
||||
public:
|
||||
bool Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlen, bool late);
|
||||
bool Unload(char *error, size_t maxlen);
|
||||
bool Pause(char *error, size_t maxlen);
|
||||
bool Unpause(char *error, size_t maxlen);
|
||||
void AllPluginsLoaded();
|
||||
const char *GetAuthor();
|
||||
const char *GetName();
|
||||
const char *GetDescription();
|
||||
const char *GetURL();
|
||||
const char *GetLicense();
|
||||
const char *GetVersion();
|
||||
const char *GetDate();
|
||||
const char *GetLogTag();
|
||||
public: //IMetamodListener
|
||||
void *OnMetamodQuery(const char *iface, int *ret);
|
||||
private:
|
||||
void BindToSourcemod();
|
||||
};
|
||||
|
||||
void Hook_ServerActivate(edict_t *pEdictList, int edictCount, int clientMax);
|
||||
|
||||
extern StubPlugin g_StubPlugin;
|
||||
extern ISmmPlugin *mmsplugin;
|
||||
|
||||
PLUGIN_GLOBALVARS();
|
||||
|
||||
#endif //_INCLUDE_METAMOD_SOURCE_STUB_PLUGIN_H_
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include "stub_util.h"
|
||||
|
||||
size_t UTIL_Format(char *buffer, size_t maxlength, const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
size_t len = vsnprintf(buffer, maxlength, fmt, ap);
|
||||
va_end(ap);
|
||||
|
||||
if (len >= maxlength)
|
||||
{
|
||||
len = maxlength - 1;
|
||||
buffer[len] = '\0';
|
||||
}
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
#ifndef _INCLUDE_STUB_UTIL_FUNCTIONS_H_
|
||||
#define _INCLUDE_STUB_UTIL_FUNCTIONS_H_
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
/**
|
||||
* This is a platform-safe function which fixes weird idiosyncracies
|
||||
* in the null-termination and return value of snprintf(). It guarantees
|
||||
* the terminator on overflow cases, and never returns -1 or a value
|
||||
* not equal to the number of non-terminating bytes written.
|
||||
*/
|
||||
size_t UTIL_Format(char *buffer, size_t maxlength, const char *fmt, ...);
|
||||
|
||||
#endif //_INCLUDE_STUB_UTIL_FUNCTIONS_H_
|
||||
|
||||
Reference in New Issue
Block a user