2007-01-26 03:07:24 +01:00
|
|
|
/**
|
2007-02-12 10:00:55 +01:00
|
|
|
* vim: set ts=4 :
|
2007-08-15 08:19:30 +02:00
|
|
|
* =============================================================================
|
2007-01-26 03:07:24 +01:00
|
|
|
* SourceMod (C)2004-2007 AlliedModders LLC. All rights reserved.
|
2007-08-15 08:19:30 +02:00
|
|
|
* =============================================================================
|
2007-01-26 03:07:24 +01:00
|
|
|
*
|
2007-08-15 08:19:30 +02:00
|
|
|
* This file is part of the SourceMod/SourcePawn SDK.
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or modify it under
|
|
|
|
* the terms of the GNU General Public License, version 3.0, as published by the
|
|
|
|
* Free Software Foundation.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
|
|
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
|
|
|
* details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License along with
|
|
|
|
* this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*
|
|
|
|
* As a special exception, AlliedModders LLC gives you permission to link the
|
|
|
|
* code of this program (as well as its derivative works) to "Half-Life 2," the
|
|
|
|
* "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
|
|
|
|
* by the Valve Corporation. You must obey the GNU General Public License in
|
|
|
|
* all respects for all other code used. Additionally, AlliedModders LLC grants
|
|
|
|
* this exception to all derivative works. AlliedModders LLC defines further
|
|
|
|
* exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
|
|
|
|
* or <http://www.sourcemod.net/license.php>.
|
2007-01-26 03:07:24 +01:00
|
|
|
*
|
|
|
|
* Version: $Id$
|
|
|
|
*/
|
|
|
|
|
2007-01-16 20:41:21 +01:00
|
|
|
#if defined _core_included
|
|
|
|
#endinput
|
|
|
|
#endif
|
|
|
|
#define _core_included
|
|
|
|
|
2007-03-03 09:51:47 +01:00
|
|
|
#include <version>
|
|
|
|
|
|
|
|
#define SOURCEMOD_PLUGINAPI_VERSION 2
|
2007-01-16 20:41:21 +01:00
|
|
|
struct PlVers
|
|
|
|
{
|
|
|
|
version,
|
2007-03-03 09:51:47 +01:00
|
|
|
String:filevers[],
|
2007-01-16 20:41:21 +01:00
|
|
|
};
|
|
|
|
|
2007-03-16 07:54:24 +01:00
|
|
|
/**
|
2007-04-14 06:27:47 +02:00
|
|
|
* Function helper values.
|
2007-03-16 07:54:24 +01:00
|
|
|
*/
|
|
|
|
enum Function
|
|
|
|
{
|
|
|
|
INVALID_FUNCTION = -1,
|
|
|
|
};
|
|
|
|
|
2007-02-13 07:26:01 +01:00
|
|
|
/**
|
|
|
|
* Specifies what to do after a hook completes.
|
|
|
|
*/
|
2007-02-15 23:16:19 +01:00
|
|
|
enum Action
|
2007-02-13 07:26:01 +01:00
|
|
|
{
|
|
|
|
Plugin_Continue = 0, /**< Continue with the original action */
|
|
|
|
Plugin_Handled = 3, /**< Handle the action at the end (don't call it) */
|
|
|
|
Plugin_Stop = 4, /**< Immediately stop the hook chain and handle the original */
|
2007-05-19 23:21:55 +02:00
|
|
|
};
|
2007-02-13 07:26:01 +01:00
|
|
|
|
2007-08-27 04:00:37 +02:00
|
|
|
/**
|
|
|
|
* Specifies identity types.
|
|
|
|
*/
|
|
|
|
enum Identity
|
|
|
|
{
|
|
|
|
Identity_Core = 0,
|
|
|
|
Identity_Extension = 1,
|
|
|
|
Identity_Plugin = 2
|
|
|
|
};
|
|
|
|
|
2007-01-16 20:41:21 +01:00
|
|
|
public PlVers:__version =
|
|
|
|
{
|
|
|
|
version = SOURCEMOD_PLUGINAPI_VERSION,
|
2007-03-03 09:51:47 +01:00
|
|
|
filevers = SOURCEMOD_VERSION
|
2007-01-16 20:41:21 +01:00
|
|
|
};
|
|
|
|
|
2007-03-15 21:10:25 +01:00
|
|
|
/**
|
|
|
|
* Plugin status values.
|
|
|
|
*/
|
|
|
|
enum PluginStatus
|
|
|
|
{
|
|
|
|
Plugin_Running=0, /**< Plugin is running */
|
|
|
|
/* All states below are "temporarily" unexecutable */
|
|
|
|
Plugin_Paused, /**< Plugin is loaded but paused */
|
|
|
|
Plugin_Error, /**< Plugin is loaded but errored/locked */
|
|
|
|
/* All states below do not have all natives */
|
|
|
|
Plugin_Loaded, /**< Plugin has passed loading and can be finalized */
|
|
|
|
Plugin_Failed, /**< Plugin has a fatal failure */
|
|
|
|
Plugin_Created, /**< Plugin is created but not initialized */
|
|
|
|
Plugin_Uncompiled, /**< Plugin is not yet compiled by the JIT */
|
|
|
|
Plugin_BadLoad, /**< Plugin failed to load */
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Plugin information properties.
|
|
|
|
*/
|
|
|
|
enum PluginInfo
|
|
|
|
{
|
|
|
|
PlInfo_Name, /**< Plugin name */
|
|
|
|
PlInfo_Author, /**< Plugin author */
|
|
|
|
PlInfo_Description, /**< Plugin description */
|
|
|
|
PlInfo_Version, /**< Plugin verison */
|
|
|
|
PlInfo_URL, /**< Plugin URL */
|
|
|
|
};
|
|
|
|
|
2007-03-15 21:44:23 +01:00
|
|
|
/**
|
|
|
|
* Defines how an extension must expose itself for autoloading.
|
|
|
|
*/
|
2007-01-16 20:41:21 +01:00
|
|
|
struct Extension
|
|
|
|
{
|
2007-06-15 22:23:40 +02:00
|
|
|
const String:name[], /**< Short name */
|
|
|
|
const String:file[], /**< Default file name */
|
|
|
|
bool:autoload, /**< Whether or not to auto-load */
|
|
|
|
bool:required, /**< Whether or not to require */
|
2007-01-16 20:41:21 +01:00
|
|
|
};
|
|
|
|
|
2007-07-13 02:38:54 +02:00
|
|
|
/**
|
|
|
|
* Defines how a plugin must expose itself for native requiring.
|
|
|
|
*/
|
|
|
|
struct SharedPlugin
|
|
|
|
{
|
|
|
|
const String:name[], /**< Short name */
|
2007-07-13 02:40:42 +02:00
|
|
|
const String:file[], /**< File name */
|
2007-07-13 02:38:54 +02:00
|
|
|
bool:required, /**< Whether or not to require */
|
|
|
|
};
|
|
|
|
|
2007-06-22 16:59:26 +02:00
|
|
|
public Float:NULL_VECTOR[3]; /**< Pass this into certain functions to act as a C++ NULL */
|
|
|
|
public const String:NULL_STRING[1]; /**< pass this into certain functions to act as a C++ NULL */
|
2007-06-15 22:23:40 +02:00
|
|
|
|
2007-01-16 20:41:21 +01:00
|
|
|
#define AUTOLOAD_EXTENSIONS
|
|
|
|
#define REQUIRE_EXTENSIONS
|
2007-07-13 02:38:54 +02:00
|
|
|
#define REQUIRE_PLUGIN
|