<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.alliedmods.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=LumiStance</id>
	<title>AlliedModders Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.alliedmods.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=LumiStance"/>
	<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/Special:Contributions/LumiStance"/>
	<updated>2026-05-31T00:43:29Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.6</generator>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Sample_Plugins_(Metamod:Source)&amp;diff=8601</id>
		<title>Sample Plugins (Metamod:Source)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Sample_Plugins_(Metamod:Source)&amp;diff=8601"/>
		<updated>2012-07-07T00:31:33Z</updated>

		<summary type="html">&lt;p&gt;LumiStance: /* Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Metamod:Source comes with two sample plugins: &amp;lt;tt&amp;gt;stub&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;sample&amp;lt;/tt&amp;gt;.  This article is a brief overview of how to read and compile them.  They are intended as a baseline for developing your own plugins, though they are certainly not required for your own development.&lt;br /&gt;
&lt;br /&gt;
Metamod:Source is a C++ environment, but this is not a C++ tutorial.  You should have sufficient knowledge of computer organization (memory, pointers, addressing) and intermediate experience with C++.  Most importantly, you should be willing to dive into header files to research API definitions (which is necessary for the HL2SDK regardless).  &lt;br /&gt;
&lt;br /&gt;
Make sure to read the overview article, [[Metamod:Source Development]].&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Before you begin, you should set up your [[Metamod:Source Environment]].  If you fail to complete this step, it is unlikely much else in this article will work for you.&lt;br /&gt;
&lt;br /&gt;
The two sample plugins provided are:&lt;br /&gt;
*&amp;lt;tt&amp;gt;stub_mm&amp;lt;/tt&amp;gt; - Bare-bones plugin that does almost nothing.&lt;br /&gt;
*&amp;lt;tt&amp;gt;sample_mm&amp;lt;/tt&amp;gt; - More complete example plugin which implements a few things that Valve's serverplugin_sample does, such as hooking functions, creating ConVars, console commands, and showing dialog boxes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=The Engine Divide=&lt;br /&gt;
The Orange Box and Episode 1 engines are not compatible, and thus there is a division:&lt;br /&gt;
*Metamod:Source 1.4 API, Episode 1 and lower&lt;br /&gt;
*Metamod:Source 1.6 API, Orange Box and higher&lt;br /&gt;
&lt;br /&gt;
This is explained more in [[MM:S API Differences]].&lt;br /&gt;
&lt;br /&gt;
As such, you will notice various idiosyncrasies in the sample plugins.  For example, &amp;lt;tt&amp;gt;METAMOD_PLAPI_VERSION&amp;lt;/tt&amp;gt; exists in Metamod:Source 1.6 or later, so it is used to decide between &amp;lt;tt&amp;gt;GetEngineFactory&amp;lt;/tt&amp;gt; (1.6) or &amp;lt;tt&amp;gt;engineFactory&amp;lt;/tt&amp;gt; (1.4).  Similarly, the sample plugins use two macros:&lt;br /&gt;
*&amp;lt;tt&amp;gt;ENGINE_ORANGEBOX&amp;lt;/tt&amp;gt; - Orange Box build&lt;br /&gt;
*&amp;lt;tt&amp;gt;ENGINE_ORIGINAL&amp;lt;/tt&amp;gt; - Original/Episode 1 build&lt;br /&gt;
&lt;br /&gt;
These two macros are used in a few places to toggle functionality compatible for the given build.&lt;br /&gt;
&lt;br /&gt;
For more information, see:&lt;br /&gt;
*[[MM:S API Differences]]&lt;br /&gt;
*[[Porting to Orange Box]]&lt;br /&gt;
*[[Porting to Left 4 Dead]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Compiling=&lt;br /&gt;
&lt;br /&gt;
==Windows==&lt;br /&gt;
Both plugins have a Visual Studio 2008 project file in their &amp;lt;tt&amp;gt;msvc9&amp;lt;/tt&amp;gt; folders.  Each plugin has six build modes:&lt;br /&gt;
*&amp;lt;tt&amp;gt;Release - Left 4 Dead&amp;lt;/tt&amp;gt; - Release mode, Left 4 Dead&lt;br /&gt;
*&amp;lt;tt&amp;gt;Debug - Left 4 Dead&amp;lt;/tt&amp;gt; - Debug mode, Left 4 Dead&lt;br /&gt;
*&amp;lt;tt&amp;gt;Release - Orange Box&amp;lt;/tt&amp;gt; - Release mode, Orange Box&lt;br /&gt;
*&amp;lt;tt&amp;gt;Debug - Orange Box&amp;lt;/tt&amp;gt; - Debug mode, Orange Box&lt;br /&gt;
*&amp;lt;tt&amp;gt;Release - Original&amp;lt;/tt&amp;gt; - Release mode, Original/Episode1&lt;br /&gt;
*&amp;lt;tt&amp;gt;Debug - Original&amp;lt;/tt&amp;gt; - Debug mode, Original/Episode1&lt;br /&gt;
&lt;br /&gt;
There exists normal &amp;quot;Release&amp;quot; and &amp;quot;Debug&amp;quot; build modes -- you should not use them, as they are not configured.&lt;br /&gt;
&lt;br /&gt;
==Linux==&lt;br /&gt;
On Linux, you cannot simply type &amp;quot;make&amp;quot; in the folder containing the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;.  You must specify a combination of parameters:&lt;br /&gt;
*&amp;lt;tt&amp;gt;ENGINE&amp;lt;/tt&amp;gt; - Required.  Must be either &amp;quot;orangebox&amp;quot; or &amp;quot;original&amp;quot; or &amp;quot;left4dead&amp;quot;.&lt;br /&gt;
*&amp;lt;tt&amp;gt;DEBUG&amp;lt;/tt&amp;gt; - Optional.  Can be empty (Release mode) or &amp;quot;true&amp;quot; (Debug mode).&lt;br /&gt;
&lt;br /&gt;
Binaries and object files will be written to one of the following folders:&lt;br /&gt;
*&amp;lt;tt&amp;gt;Release.left4dead&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;Debug.left4dead&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;Debug.orangebox&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;Release.orangebox&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;Debug.orangebox&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;Release.original&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;Debug.original&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Examples of building one of the example plugins:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Episode 1, debug mode&lt;br /&gt;
make DEBUG=true ENGINE=original&lt;br /&gt;
#Orange Box, release mode&lt;br /&gt;
make ENGINE=orangebox&lt;br /&gt;
#Cleaning the Episode 1 build&lt;br /&gt;
make clean ENGINE=original&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note''' that you may need to edit the folder locations at the top of the Makefile, in case you set up your paths differently.&lt;br /&gt;
'''Note''' ignore any messages that start with the word echo.  A successful build creates a Debug.[mod]/filename.so or Release.[mod]/filename.so plugin file.&lt;br /&gt;
&lt;br /&gt;
=Stub Plugin=&lt;br /&gt;
The stub plugin is a very simple, bare-bones plugin.  It has little, if anything, beyond an implementation of the required API callbacks.  &lt;br /&gt;
&lt;br /&gt;
It hooks one function, &amp;lt;tt&amp;gt;IServerGameDLL::ServerActivate&amp;lt;/tt&amp;gt;, which is a callback fired after &amp;lt;tt&amp;gt;IServerGameDLL::LevelInit&amp;lt;/tt&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Note that for the most part, &amp;lt;tt&amp;gt;stub_mm&amp;lt;/tt&amp;gt; is free of compatibility cruft, whereas &amp;lt;tt&amp;gt;sample_mm&amp;lt;/tt&amp;gt; tries to abstract more.  This is so &amp;lt;tt&amp;gt;stub_mm&amp;lt;/tt&amp;gt; doesn't appear to be &amp;quot;hiding&amp;quot; anything -- it's laid out very simply.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Sample Plugin=&lt;br /&gt;
The full sample plugin is a bit more complicated, as it contains some of the examples from Valve's &amp;lt;tt&amp;gt;serverplugin_sample&amp;lt;/tt&amp;gt;.  It also may be a bit messy to read because of the engine compatibility wrappers in it.&lt;br /&gt;
&lt;br /&gt;
==Compatibility Wrappers==&lt;br /&gt;
The first file of importance is &amp;lt;tt&amp;gt;engine_wrappers.h&amp;lt;/tt&amp;gt;, which is full of compatibility shims.  For example:&lt;br /&gt;
*&amp;lt;tt&amp;gt;engineFactory&amp;lt;/tt&amp;gt; became &amp;lt;tt&amp;gt;GetEngineFactory&amp;lt;/tt&amp;gt; from 1.4 to 1.6&lt;br /&gt;
*&amp;lt;tt&amp;gt;serverFactory&amp;lt;/tt&amp;gt; became &amp;lt;tt&amp;gt;GetServerFactory&amp;lt;/tt&amp;gt; from 1.4 to 1.6&lt;br /&gt;
*&amp;lt;tt&amp;gt;ISmmAPI::Format&amp;lt;/tt&amp;gt; did not exist in 1.4, so we created a simple &amp;lt;tt&amp;gt;#define&amp;lt;/tt&amp;gt; to use &amp;lt;tt&amp;gt;snprintf&amp;lt;/tt&amp;gt; instead.  You could also use Valve's Q_snprintf if you desired.&lt;br /&gt;
*Valve renamed &amp;lt;tt&amp;gt;VENGINE_CVAR_INTERFACE_VERSION&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;CVAR_INTERFACE_VERSION&amp;lt;/tt&amp;gt; from Episode 1 to Orange Box.&lt;br /&gt;
*The syntax to &amp;lt;tt&amp;gt;SH_CALL&amp;lt;/tt&amp;gt; changed from 1.4 to 1.6 (which we have demonstrated for completeness and will be explained later).&lt;br /&gt;
&lt;br /&gt;
Also note the &amp;lt;tt&amp;gt;CCommand&amp;lt;/tt&amp;gt; class.  This is a wrapper around the &amp;lt;tt&amp;gt;IVEngineServer::Cmd_Arg*&amp;lt;/tt&amp;gt; functions, which were removed in Orange Box.  Valve replaced it with a newer, more re-entrant set of functions based around &amp;lt;tt&amp;gt;CCommand&amp;lt;/tt&amp;gt;.  Rather than create two codebases, we've simply wrapped the old functions in the new API.  The functionality isn't ''exactly'' the same (becaose of re-entrancy), but it works nicely for our purposes.  You can read more about this trick in [[Porting to Orange Box]].&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===BaseAccessor===&lt;br /&gt;
This is a singleton class responsible for registering anything extending from &amp;lt;tt&amp;gt;ConCommandBase&amp;lt;/tt&amp;gt; (&amp;lt;tt&amp;gt;ConVar&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;ConCommand&amp;lt;/tt&amp;gt;).  You only need one, and it should wrap &amp;lt;tt&amp;gt;META_REGCVAR&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Note that the accessor is invoked differently based on the engine version.  For Orange Box, &amp;lt;tt&amp;gt;g_pCVar&amp;lt;/tt&amp;gt; is assigned and &amp;lt;tt&amp;gt;ConVar_Register&amp;lt;/tt&amp;gt; is called, whereas on Episode 1, only &amp;lt;tt&amp;gt;ConCommandBaseMgr::OneTimeInit&amp;lt;/tt&amp;gt; is needed.&lt;br /&gt;
&lt;br /&gt;
===CallClasses===&lt;br /&gt;
[[SourceHook Development|SourceHook]] has a feature where you can invoke a virtual function while bypassing all hooks on it.  In SourceHook v4 (Metamod:Source 1.4 and lower), &amp;lt;tt&amp;gt;SH_CALL&amp;lt;/tt&amp;gt; required a special object called a '''call class'''.  This was removed in SourceHook v5.  However, to be compatible with both MM:S 1.4 and 1.6, the sample plugin creates and destroys a call class when necessary.&lt;br /&gt;
&lt;br /&gt;
For more information on this syntax and what it means, see: [[Sourcehook Development#Bypassing_Hooks]].&lt;br /&gt;
&lt;br /&gt;
Note that the &amp;lt;tt&amp;gt;ENGINE_CALL&amp;lt;/tt&amp;gt; macro is in &amp;lt;tt&amp;gt;engine_wrappers.h&amp;lt;/tt&amp;gt;, and wraps &amp;lt;tt&amp;gt;SH_CALL&amp;lt;/tt&amp;gt; based on the MM:S version.&lt;br /&gt;
&lt;br /&gt;
===VSP Listening===&lt;br /&gt;
Some of the sample functionality requires an IServerPluginCallbacks pointer, and Metamod:Source can provide one for you.&lt;br /&gt;
&lt;br /&gt;
In the Metamod:Source 1.4 API, you had to implement &amp;lt;tt&amp;gt;IMetamodListener&amp;lt;/tt&amp;gt;, and do something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
		ismm-&amp;gt;AddListener(this, this);&lt;br /&gt;
		ismm-&amp;gt;EnableVSPListener();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you had to wait for the callback to give you a correct pointer.  In Metamod:Source 1.6, you can attempt to get the point immediately with:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ((vsp_callbacks = ismm-&amp;gt;GetVSPInfo(NULL)) == NULL)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Hooked Functions===&lt;br /&gt;
The sample plugin hooks most of the functions available to &amp;lt;tt&amp;gt;IServerPluginCallbacks&amp;lt;/tt&amp;gt;, in order to show you how to re-implement Valve's functionality.&lt;br /&gt;
&lt;br /&gt;
Recall a few concepts:&lt;br /&gt;
*In [[SourceHook Development|SourceHook]], hooks can either be &amp;quot;pre&amp;quot; (pre-empting the final call), or &amp;quot;post&amp;quot; (occurring after the pre hooks and final call, if any).&lt;br /&gt;
*In Valve Server Plugins, only hooks labeled with &amp;lt;tt&amp;gt;PLUGIN_RESULT&amp;lt;/tt&amp;gt; can override functionality.  SourceHook, however, can override the functionality of '''any function'''.  The default action is to continue (or pass-through), though there are options to override and supercede (see the [[Sourcehook Development#Hook_Functions]] for more information).&lt;br /&gt;
*A hook with a return value must return a value, or else the compiler will complain.  However, unless you use &amp;lt;tt&amp;gt;RETURN_META_VALUE&amp;lt;/tt&amp;gt; with &amp;lt;tt&amp;gt;MRES_SUPERCEDE&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;MRES_OVERRIDE&amp;lt;/tt&amp;gt;, the value will not affect anything.&lt;br /&gt;
&lt;br /&gt;
The following are generic hooks that Valve Server Plugins cannot override, so in the example they're hooked as '''post'''.&lt;br /&gt;
*&amp;lt;tt&amp;gt;IServerGameDLL::LevelInit&amp;lt;/tt&amp;gt;: Translates to &amp;lt;tt&amp;gt;LevelInit&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*&amp;lt;tt&amp;gt;IServerGameDLL::ServerActivate&amp;lt;/tt&amp;gt;: Translates to &amp;lt;tt&amp;gt;ServerActivate&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*&amp;lt;tt&amp;gt;IServerGameDLL::GameFrame&amp;lt;/tt&amp;gt;: Translates to &amp;lt;tt&amp;gt;GameFrame&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*&amp;lt;tt&amp;gt;IServerGameDLL::LevelShutdown&amp;lt;/tt&amp;gt;: Translates to &amp;lt;tt&amp;gt;LevelShutdown&amp;lt;/tt&amp;gt;.  (This is not actually hooked false in the example, but you probably shouldn't try overriding it.)&lt;br /&gt;
*&amp;lt;tt&amp;gt;IServerGameClients::ClientActive&amp;lt;/tt&amp;gt;: Translates to &amp;lt;tt&amp;gt;ClientActive&amp;lt;/tt&amp;gt;.  Not a very useful callback, not recommended for real work.&lt;br /&gt;
*&amp;lt;tt&amp;gt;IServerGameClients::ClientDisconnect&amp;lt;/tt&amp;gt;: Translates to &amp;lt;tt&amp;gt;ClientDisconnect&amp;lt;/tt&amp;gt;.  Called when the client disconnects.&lt;br /&gt;
*&amp;lt;tt&amp;gt;IServerGameClients::ClientPutInServer&amp;lt;/tt&amp;gt;: Translates to &amp;lt;tt&amp;gt;ClientPutInServer&amp;lt;/tt&amp;gt;.  Called when the client is put in-game and is fully instantiated (that is, IPlayerInfoManager will return valid results).&lt;br /&gt;
*&amp;lt;tt&amp;gt;IServerGameClients::SetCommandClient&amp;lt;/tt&amp;gt;: Translates to &amp;lt;tt&amp;gt;SetCommandClient&amp;lt;/tt&amp;gt;.  Called when a console command bound to a &amp;lt;tt&amp;gt;ConCommand&amp;lt;/tt&amp;gt; is invoked, to tell all listeners which client typed the command.  The index supplied is the client index minus one (that is, -1 for the server console, 0 for the first client, et cetera).&lt;br /&gt;
&lt;br /&gt;
The following hooks are pre-empted, and thus can be overridden or superseded:&lt;br /&gt;
*&amp;lt;tt&amp;gt;IServerGameClients::ClientSettingsChanged&amp;lt;/tt&amp;gt;: Translates to &amp;lt;tt&amp;gt;ClientSettingsChanged&amp;lt;/tt&amp;gt;.  Called when a client's info buffer changes (that is, anything from &amp;lt;tt&amp;gt;IVEngineServer::GetClientConVarValue&amp;lt;/tt&amp;gt;).  Overriding it will prevent the game from being notified.&lt;br /&gt;
*&amp;lt;tt&amp;gt;IServerGameClients::ClientConnect&amp;lt;/tt&amp;gt;: Translates to &amp;lt;tt&amp;gt;ClientConnect&amp;lt;/tt&amp;gt;.  Called when a client is connecting.  You can override/supersede with a value of &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt; to reject the client (note, of course, you should fill the rejection message buffer).&lt;br /&gt;
*&amp;lt;tt&amp;gt;IServerGameClients::ClientCommand&amp;lt;/tt&amp;gt;: Translates to &amp;lt;tt&amp;gt;ClientCommand&amp;lt;/tt&amp;gt;.  Called when the client types unrecognized text in their client console.  If you don't override this function, the original game's handler will be called.  If the game doesn't recognize the text, it will print &amp;quot;Unknown command&amp;quot; or something similar.  Therefore, if you wish to block this text from appearing, you should supercede when you recognize the text.  The sample plugin shows how to do this for a few commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=The VDF Files=&lt;br /&gt;
Note that both &amp;lt;tt&amp;gt;stub_mm&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;sample_mm&amp;lt;/tt&amp;gt; come with their own VDF files.  These are example files that load their respective binaries from the &amp;lt;tt&amp;gt;addons&amp;lt;/tt&amp;gt; folder.  Make two notes about this:&lt;br /&gt;
*'''VDF files go in Metamod's folder'''.  That is, &amp;lt;tt&amp;gt;addons/metamod&amp;lt;/tt&amp;gt; (or whatever &amp;lt;tt&amp;gt;mm_basedir&amp;lt;/tt&amp;gt; is).  They are not Valve Server Plugin files and they cannot go in the &amp;lt;tt&amp;gt;addons&amp;lt;/tt&amp;gt; folder.&lt;br /&gt;
*If your plugin has more than one file, or it creates other files, it may be prudent to place it in its own sub-folder.  The sample plugins are small and thus we placed the binaries in &amp;lt;tt&amp;gt;addons&amp;lt;/tt&amp;gt; for simplicity.  The extended convention for more complicated plugins is:&lt;br /&gt;
**&amp;lt;tt&amp;gt;addons/NAME/bin/NAME_mm.dll&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;addons/NAME/bin/NAME_mm_i486.so&amp;lt;/tt&amp;gt;.  For example, &amp;lt;tt&amp;gt;addons/sourcemod/bin/sourcemod_mm&amp;lt;/tt&amp;gt; is [[SourceMod]]'s VDF path, since it has a large directory structure.&lt;br /&gt;
**''Note: This convention is not required, but it is recommended.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Modifying/Reusing the Build Files=&lt;br /&gt;
==Linux==&lt;br /&gt;
The &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;s are organized into four main sections:&lt;br /&gt;
*User-specific paths&lt;br /&gt;
*Project-specific settings&lt;br /&gt;
*Build logic&lt;br /&gt;
*Build rules&lt;br /&gt;
&lt;br /&gt;
The most important area to edit for a new project would be the &amp;quot;project-specific settings.&amp;quot;  These are variables such as:&lt;br /&gt;
*&amp;lt;tt&amp;gt;OPT_FLAGS&amp;lt;/tt&amp;gt; - Optimization flags (release-only).&lt;br /&gt;
*&amp;lt;tt&amp;gt;DEBUG_FLAGS&amp;lt;/tt&amp;gt; - Debug-only flags.&lt;br /&gt;
*&amp;lt;tt&amp;gt;GCC4_FLAGS&amp;lt;/tt&amp;gt; - Flags that are only used with GCC4.&lt;br /&gt;
*&amp;lt;tt&amp;gt;CPP&amp;lt;/tt&amp;gt; - The compiler to invoke.&lt;br /&gt;
*&amp;lt;tt&amp;gt;BINARY&amp;lt;/tt&amp;gt; - The binary file name to produce.&lt;br /&gt;
*&amp;lt;tt&amp;gt;LINK&amp;lt;/tt&amp;gt; - Extra link options.&lt;br /&gt;
*&amp;lt;tt&amp;gt;INCLUDE&amp;lt;/tt&amp;gt; - Extra include options (don't forget that you need -I to each item).&lt;br /&gt;
&lt;br /&gt;
You should probably keep the &amp;lt;tt&amp;gt;-DENGINE_ORANGEBOX&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;-DENGINE_ORIGINAL&amp;lt;/tt&amp;gt; macros.&lt;br /&gt;
&lt;br /&gt;
For more information on flags and distribution, see [[Metamod:Source Development#Compiling]].&lt;br /&gt;
&lt;br /&gt;
==Windows==&lt;br /&gt;
You should probably keep the &amp;lt;tt&amp;gt;ENGINE_ORANGEBOX&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;ENGINE_ORIGINAL&amp;lt;/tt&amp;gt; preprocessor macros.&lt;br /&gt;
&lt;br /&gt;
You can edit the output binary name under the Linker options in the Project Properties dialog.&lt;br /&gt;
&lt;br /&gt;
You should not add global include folders in order to compile.  Set up your [[Metamod:Source Environment]] and, if you need more include folders, add them to the &amp;quot;Additional Include Directories&amp;quot; option under the C++ options in the Project Properties dialog.  It is a semicolon-delimited list, for example: &amp;lt;tt&amp;gt;$(SOURCEMM14);$(HL2SDK)\public&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For the most part, editing a Visual Studio project is otherwise self-explanatory.  See [[Metamod:Source Development#Compiling]] for more information on required &amp;quot;project-from-scratch&amp;quot; options.&lt;br /&gt;
&lt;br /&gt;
[[Category:Metamod:Source Development]]&lt;/div&gt;</summary>
		<author><name>LumiStance</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKTools_(SourceMod_Scripting)&amp;diff=8345</id>
		<title>SDKTools (SourceMod Scripting)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKTools_(SourceMod_Scripting)&amp;diff=8345"/>
		<updated>2011-10-30T08:26:10Z</updated>

		<summary type="html">&lt;p&gt;LumiStance: /* Raw address lookups */  replace 'TODO'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The SDKTools extension is an extension for various functions provided by the Source SDK.  Additionally, it has the ability to dynamically call many C++ functions in the SDK, for example, from CBaseEntity or any derived class.&lt;br /&gt;
&lt;br /&gt;
SDKTools contains simplified versions of SDK functions pre-written for ease of use.  These can be found in the additional include files:&lt;br /&gt;
*&amp;lt;tt&amp;gt;sdktools_functions.inc&amp;lt;/tt&amp;gt; - Popular functions from the SDK.&lt;br /&gt;
*&amp;lt;tt&amp;gt;sdktools_sound.inc&amp;lt;/tt&amp;gt; - [[#Sound Functions|Sound-related functions]].&lt;br /&gt;
*&amp;lt;tt&amp;gt;sdktools_tempents.inc&amp;lt;/tt&amp;gt; - [[#TempEnt Functions|TempEnt-related functions]].&lt;br /&gt;
*&amp;lt;tt&amp;gt;sdktools_tempents_stocks.inc&amp;lt;/tt&amp;gt; - [[TempEnts (SourceMod SDKTools)|TempEnt Stocks for convenience]].&lt;br /&gt;
&lt;br /&gt;
SDKTools is powered by &amp;quot;BinTools,&amp;quot; a powerful extension for creating dynamic C/C++ calls.  BinTools is automatically loaded by SDKTools.&lt;br /&gt;
&lt;br /&gt;
=GameConfigs=&lt;br /&gt;
GameConfig files go into the &amp;quot;gamedata&amp;quot; folder under &amp;quot;sourcemod.&amp;quot;  In older revisions it was under &amp;quot;sourcemod/configs&amp;quot; which is now deprecated.&lt;br /&gt;
&lt;br /&gt;
==Virtual Offsets==&lt;br /&gt;
For adding virtual offsets, add sub-sections to the &amp;quot;Offsets&amp;quot; section of your game config file.  For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;Games&amp;quot;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;cstrike&amp;quot;&lt;br /&gt;
	{&lt;br /&gt;
		&amp;quot;Offsets&amp;quot;&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;GiveNamedItem&amp;quot;&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;windows&amp;quot;	&amp;quot;329&amp;quot;&lt;br /&gt;
				&amp;quot;linux&amp;quot;		&amp;quot;330&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			&amp;quot;EyePosition&amp;quot;&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;windows&amp;quot;	&amp;quot;117&amp;quot;&lt;br /&gt;
				&amp;quot;linux&amp;quot;		&amp;quot;118&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Signature Scans==&lt;br /&gt;
For automated signature scans, add sub-sections to the &amp;quot;Signatures&amp;quot; section of your game config file.  There are three properties for a signature:&lt;br /&gt;
*&amp;lt;tt&amp;gt;library&amp;lt;/tt&amp;gt;: Must be &amp;quot;server&amp;quot; right now.&lt;br /&gt;
*&amp;lt;tt&amp;gt;windows&amp;lt;/tt&amp;gt;: A signature written in binary; for example, &amp;quot;\x56&amp;quot; instead of &amp;quot;0x56&amp;quot; -- the '*' character is a single byte wildcard.&lt;br /&gt;
*&amp;lt;tt&amp;gt;linux&amp;lt;/tt&amp;gt;: Either a signature as with &amp;lt;tt&amp;gt;windows&amp;lt;/tt&amp;gt;, or a named symbol.  To use a named symbol, start the string with the '@' character.  If a signature begins with '@', write the character in hexadecimal as above.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;Games&amp;quot;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;cstrike&amp;quot;&lt;br /&gt;
	{&lt;br /&gt;
		&amp;quot;Signatures&amp;quot;&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;RoundRespawn&amp;quot;&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;library&amp;quot;	&amp;quot;server&amp;quot;&lt;br /&gt;
				&amp;quot;windows&amp;quot;	&amp;quot;\x56\x8B\xF1\x8B\x06\xFF\x90*\x04\x00\x00\x8B\x86*\x0D\x00&amp;quot;&lt;br /&gt;
				&amp;quot;linux&amp;quot;		&amp;quot;@_ZN9CCSPlayer12RoundRespawnEv&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Raw address lookups==&lt;br /&gt;
See https://bugs.alliedmods.net/show_bug.cgi?id=3520 and http://wiki.alliedmods.net/SourceMod_1.4.0_API_Changes#SourceMod&lt;br /&gt;
&lt;br /&gt;
Lets you peek and poke (limitation may apply) the Source Dedicated Server memory space, and get the address of a named thingamajig.&lt;br /&gt;
Server crashes a possible side affect.&lt;br /&gt;
&lt;br /&gt;
==Inheritance==&lt;br /&gt;
If you wish for multiple mods to inherit from one block, you can add a special &amp;quot;#supported&amp;quot; section under a &amp;quot;#default&amp;quot; section.  For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;Games&amp;quot;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;#default&amp;quot;&lt;br /&gt;
	{&lt;br /&gt;
		&amp;quot;#supported&amp;quot;&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;game&amp;quot;		&amp;quot;dod&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This specifies that the given block will be read for Day of Defeat as well.&lt;br /&gt;
&lt;br /&gt;
=Calling Functions=&lt;br /&gt;
Calling functions is complicated and requires strict attention to the C++ API you are trying to use.  If you make a mistake, something bad '''will''' happen (and if not, you got lucky!)  SDKTools is more complicated than PimpinJuice's &amp;quot;Hacks&amp;quot; extension because it precompiles all of the information needed to convert from Plugin memory to C++ types.  This precompilation step ensures better safety and speed, but it lengthens the preparation process.&lt;br /&gt;
&lt;br /&gt;
With that said, let's look at an overview of the call creation process.  Before making calls, we must ''prepare'' the call.  This will give us a &amp;lt;tt&amp;gt;Handle&amp;lt;/tt&amp;gt; which will let us make as many calls as we like.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Init&amp;lt;/b&amp;gt; - The preparation must be initialized.  Here we can specify the calling convention, which is either static, or BaseEntity/BasePlayer-based.  BasePlayer should be used when only player entities should be allowed as the &amp;lt;tt&amp;gt;this&amp;lt;/tt&amp;gt; pointer.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Destination&amp;lt;/b&amp;gt; - The call must have a destination address or virtual index to use.  This is normally done via &amp;lt;tt&amp;gt;PrepSDKCall_SetFromConf&amp;lt;/tt&amp;gt; which ties into gameconf files.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Return Info&amp;lt;/b&amp;gt; - If the call has return information, it must be set via &amp;lt;tt&amp;gt;PrepSDKCall_SetReturnInfo&amp;lt;/tt&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Parameters&amp;lt;/b&amp;gt; - Each parameter (if any) must be added with &amp;lt;tt&amp;gt;PrepSDKCall_AddParameter&amp;lt;/tt&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Finalize&amp;lt;/b&amp;gt; - The call must be finalized with &amp;lt;tt&amp;gt;EndPrepSDKCall&amp;lt;/tt&amp;gt;, which will return a &amp;lt;tt&amp;gt;Handle&amp;lt;/tt&amp;gt;.  If it doesn't, one or more of the preparation operations failed.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the examples below, consider a plugin called &amp;quot;sdkexamples.sp&amp;quot; which has a gamedata file of &amp;quot;plugin.sdkexamples.txt&amp;quot; containing the definitions in the first section.&lt;br /&gt;
&lt;br /&gt;
==RoundRespawn Example==&lt;br /&gt;
CCSPlayer::RoundRespawn is a Counter-Strike Source function which respawns players.  It used by CS:S DM.  Prototype:&lt;br /&gt;
&amp;lt;pre&amp;gt;void CCSPlayer::RoundRespawn()&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SDKCall example:&lt;br /&gt;
&amp;lt;pawn&amp;gt;#include &amp;lt;sourcemod&amp;gt;&lt;br /&gt;
#include &amp;lt;sdktools&amp;gt;&lt;br /&gt;
&lt;br /&gt;
new Handle:hGameConf;&lt;br /&gt;
new Handle:hRoundRespawn;&lt;br /&gt;
&lt;br /&gt;
public OnPluginStart()&lt;br /&gt;
{&lt;br /&gt;
	hGameConf = LoadGameConfigFile(&amp;quot;plugin.sdkexamples&amp;quot;);&lt;br /&gt;
	StartPrepSDKCall(SDKCall_Player);&lt;br /&gt;
	PrepSDKCall_SetFromConf(hGameConf, SDKConf_Signature, &amp;quot;RoundRespawn&amp;quot;);&lt;br /&gt;
	hRoundRespawn = EndPrepSDKCall();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
RespawnPlayer(client)&lt;br /&gt;
{&lt;br /&gt;
	SDKCall(hRoundRespawn, client);&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that we did not have to set any extra information for parameters or return info, since CCSPlayer::RoundRespawn has no parameters and has a void return.&lt;br /&gt;
&lt;br /&gt;
==GiveNamedItem Example==&lt;br /&gt;
GiveNamedItem will give a player a named item.  Prototype:&lt;br /&gt;
&amp;lt;pre&amp;gt;virtual CBaseEntity *CBasePlayer::GiveNamedItem(const char *item, int iSubType = 0);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pawn&amp;gt;#include &amp;lt;sourcemod&amp;gt;&lt;br /&gt;
#include &amp;lt;sdktools&amp;gt;&lt;br /&gt;
&lt;br /&gt;
new Handle:hGameConf;&lt;br /&gt;
new Handle:hGiveNamedItem;&lt;br /&gt;
&lt;br /&gt;
public OnPluginStart()&lt;br /&gt;
{&lt;br /&gt;
	hGameConf = LoadGameConfigFile(&amp;quot;plugin.sdkexamples&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	StartPrepSDKCall(SDKCall_Player);&lt;br /&gt;
	PrepSDKCall_SetFromConf(hGameConf, SDKConf_Virtual, &amp;quot;GiveNamedItem&amp;quot;);&lt;br /&gt;
	PrepSDKCall_SetReturnInfo(SDKType_CBaseEntity, SDKPass_Pointer);&lt;br /&gt;
	PrepSDKCall_AddParameter(SDKType_String, SDKPass_Pointer);&lt;br /&gt;
	PrepSDKCall_AddParameter(SDKType_PlainOldData, SDKPass_Plain);&lt;br /&gt;
	hGiveNamedItem = EndPrepSDKCall();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
GiveItem(client, const String:item[])&lt;br /&gt;
{&lt;br /&gt;
	return SDKCall(hGiveNamedItem, client, item, 0);&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetEyePosition Example==&lt;br /&gt;
Prototype:&lt;br /&gt;
&amp;lt;pre&amp;gt;virtual Vector CBaseEntity::EyePosition();&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pawn&amp;gt;#include &amp;lt;sourcemod&amp;gt;&lt;br /&gt;
#include &amp;lt;sdktools&amp;gt;&lt;br /&gt;
&lt;br /&gt;
new Handle:hGameConf;&lt;br /&gt;
new Handle:hGetEyePosition;&lt;br /&gt;
&lt;br /&gt;
public OnPluginStart()&lt;br /&gt;
{&lt;br /&gt;
	hGameConf = LoadGameConfigFile(&amp;quot;plugin.sdkexamples&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	StartPrepSDKCall(SDKCall_Player);&lt;br /&gt;
	PrepSDKCall_SetFromConf(hGameConf, SDKConf_Virtual, &amp;quot;EyePosition&amp;quot;);&lt;br /&gt;
	PrepSDKCall_SetReturnInfo(SDKType_Vector, SDKPass_ByValue);&lt;br /&gt;
	hGetEyePosition= EndPrepSDKCall();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
GetEyePosition(client, Float:pos[3])&lt;br /&gt;
{&lt;br /&gt;
	SDKCall(hGetEyePosition, client, pos);&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the vector is returned as the third parameter (first parameter after the &amp;lt;tt&amp;gt;this&amp;lt;/tt&amp;gt; pointer).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TempEnt Functions=&lt;br /&gt;
TempEnts, also called &amp;quot;temporary entities,&amp;quot; &amp;quot;tempentities,&amp;quot; or &amp;quot;TEs,&amp;quot; are quick graphical displays that are too simple to justify the overhead of a &amp;lt;tt&amp;gt;CBaseEntity&amp;lt;/tt&amp;gt; instantiation or full server-side networkability.  In the SDK, they are statically defined instances that can be &amp;quot;played back&amp;quot; to the client by simply sending a copy of its network class properties.&lt;br /&gt;
&lt;br /&gt;
Temporary Entities are mod-dependent, in that a mod can change any of their properties or even the &amp;lt;tt&amp;gt;ITempEnts&amp;lt;/tt&amp;gt; class definition.  Because of this, SourceMod takes a very flexible approach:&lt;br /&gt;
*&amp;lt;b&amp;gt;First&amp;lt;/b&amp;gt;, a temp entity is ''started'' by name using &amp;lt;tt&amp;gt;TE_Start&amp;lt;/tt&amp;gt;.  A list of all tempent names and their network classes can be dumped with &amp;lt;tt&amp;gt;sm_print_telist&amp;lt;/tt&amp;gt; (SDKTools must be loaded).&lt;br /&gt;
*&amp;lt;b&amp;gt;Second&amp;lt;/b&amp;gt;, all of the tempent's properties are set via the &amp;lt;tt&amp;gt;TE_Write&amp;lt;/tt&amp;gt; natives.  All tempent properties can be dumped to a file using &amp;lt;tt&amp;gt;sm_dump_teprops&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*&amp;lt;b&amp;gt;Third&amp;lt;/b&amp;gt;, the properties are transmitted using &amp;lt;tt&amp;gt;TE_Send&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;TE_SendToAll&amp;lt;/tt&amp;gt;, or &amp;lt;tt&amp;gt;TE_SendToClient&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
As a convenience, SourceMod provides a number of pre-written stocks for SDK-defined temporary entities.  While the &amp;lt;tt&amp;gt;TE_*&amp;lt;/tt&amp;gt; natives are guaranteed to work on any fully-supported SourceMod mod, the &amp;lt;tt&amp;gt;TE_Setup*&amp;lt;/tt&amp;gt; stocks are not, as a mod might change the property layouts or the functionalities of the SDK-defined tempents.&lt;br /&gt;
&lt;br /&gt;
Some examples are below.  For pictures, see [[TempEnts (SourceMod SDKTools)]].&lt;br /&gt;
&lt;br /&gt;
Using stocks:&lt;br /&gt;
&amp;lt;pawn&amp;gt;SparkClient(client, const Float:pos[3], const Float:dir[3])&lt;br /&gt;
{&lt;br /&gt;
	TE_SetupMetalSparks(pos, dir);&lt;br /&gt;
	TE_SendToClient(client);&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Not using stocks:&lt;br /&gt;
&amp;lt;pawn&amp;gt;SparkClient(client, const Float:pos[3], const Float:dir[3])&lt;br /&gt;
{&lt;br /&gt;
	TE_Start(&amp;quot;Metal Sparks&amp;quot;);&lt;br /&gt;
	TE_WriteVector(&amp;quot;m_vecPos&amp;quot;, pos);&lt;br /&gt;
	TE_WriteVector(&amp;quot;m_vecDir&amp;quot;, dir);&lt;br /&gt;
	TE_SendToClient(client);&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Sound Functions=&lt;br /&gt;
SDKTools exposes various sound-related members of IVEngineServer and IEngineSound.  The basic functions are in &amp;lt;tt&amp;gt;sdktools_sound.inc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
*&amp;lt;tt&amp;gt;EmitAmbientSound&amp;lt;/tt&amp;gt;: Plays an ambient sound from an origin.&lt;br /&gt;
*&amp;lt;tt&amp;gt;EmitSound, EmitSoundToClient, EmitSoundToAll&amp;lt;/tt&amp;gt;: Plays a sound to a list of clients from a specific entity.&lt;br /&gt;
&lt;br /&gt;
There are a few important properties about sounds:&lt;br /&gt;
*&amp;lt;b&amp;gt;Entity&amp;lt;/b&amp;gt;: The entity the sound should come from.  When playing a generic sound file to player(s), you should use &amp;lt;tt&amp;gt;SOUND_FROM_PLAYER&amp;lt;/tt&amp;gt;, which is a special SourceMod macro for making the sound come from the player target.  For ambient sounds you'd use &amp;lt;tt&amp;gt;SOUND_FROM_WORLD&amp;lt;/tt&amp;gt;, and for sounds from an entity you'd use the entity index.&lt;br /&gt;
*&amp;lt;b&amp;gt;Channel&amp;lt;/b&amp;gt;: Exposed as &amp;lt;tt&amp;gt;SNDCHAN_*&amp;lt;/tt&amp;gt;, normally you only need to use &amp;lt;tt&amp;gt;SNDCHAN_AUTO&amp;lt;/tt&amp;gt;.  The channel affects how the sound is spatialized[?]&lt;br /&gt;
*&amp;lt;b&amp;gt;Level&amp;lt;/b&amp;gt;: The decibel level.  There are a number of predefined levels as &amp;lt;tt&amp;gt;SNDLEVEL_*&amp;lt;/tt&amp;gt; -- the standard one is &amp;lt;tt&amp;gt;SNDLEVEL_NORMAL&amp;lt;/tt&amp;gt;.  Half-Life 1 used attenuation values instead; you can convert from these using &amp;lt;tt&amp;gt;ATTN_TO_SNDLEVEL()&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*&amp;lt;b&amp;gt;Volume&amp;lt;/b&amp;gt;: The volume, on a scale of 0.0 to 1.0.  To use a volume other than the default, the &amp;lt;tt&amp;gt;SND_CHANGEVOL&amp;lt;/tt&amp;gt; flag should be included in the &amp;quot;flags&amp;quot; parameter.  The default volume is &amp;lt;tt&amp;gt;SNDVOL_NORMAL&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*&amp;lt;b&amp;gt;Pitch&amp;lt;/b&amp;gt;: The pitch; predefined values are &amp;lt;tt&amp;gt;SNDPITCH_*&amp;lt;/tt&amp;gt; with &amp;lt;tt&amp;gt;SNDPITCH_NORMAL&amp;lt;/tt&amp;gt; being the default.  &amp;lt;tt&amp;gt;SND_CHANGEPITCH&amp;lt;/tt&amp;gt; should be passed to use a non-default pitch.&lt;br /&gt;
*&amp;lt;b&amp;gt;Origin&amp;lt;/b&amp;gt;: If specified, an origin to play the sound from.&lt;br /&gt;
&lt;br /&gt;
Some very simple examples:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
EmitSoundToClient(client, &amp;quot;bot/affirmative.wav&amp;quot;);&lt;br /&gt;
EmitSoundToAll(&amp;quot;radio/terwin.wav&amp;quot;);&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Supported Mods=&lt;br /&gt;
SDKTools must have specific support added for each mod.  So far, default support exists for the following modifications:&lt;br /&gt;
*Counter-Strike: Source&lt;br /&gt;
*Day of Defeat: Source&lt;br /&gt;
*Dystopia&lt;br /&gt;
*Half-Life 2: Deathmatch&lt;br /&gt;
*Insurgency (only some of the CBasePlayer SDK functions are available)&lt;br /&gt;
*Pirates, Vikings, and Knights II&lt;br /&gt;
*The Ship&lt;br /&gt;
*SourceForts&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
*[[Vfunc_offsets_%28SourceMM%29|Virtual Functions]]&lt;br /&gt;
*[[TempEnts (SourceMod SDKTools)|TempEnts]]&lt;br /&gt;
*[[Useful_Signatures_%28Source%29|Useful Signatures]]&lt;br /&gt;
&lt;br /&gt;
[[Category:SourceMod Scripting]]&lt;/div&gt;</summary>
		<author><name>LumiStance</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Metamod:Source_Environment&amp;diff=7760</id>
		<title>Metamod:Source Environment</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Metamod:Source_Environment&amp;diff=7760"/>
		<updated>2010-07-01T07:15:26Z</updated>

		<summary type="html">&lt;p&gt;LumiStance: /* Getting the Files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article explains how to set up your Windows or Linux environment to compile Metamod:Source's sample plugins.  &lt;br /&gt;
&lt;br /&gt;
This article does not guarantee that you will be able to build third-party plugins, which may have their own build environment requirements.  However, it creates a baseline for making sure you can successfully build plugins.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' You can use Valve's HL2SDK source tree, but we have our own available.  It fixes all of Valve's mistakes such that you can build on both GCC and Visual Studio with no warnings or errors.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This article is intended to be used against Metamod:Source 1.7.&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
&lt;br /&gt;
==Windows==&lt;br /&gt;
*Microsoft Visual C++ 2008 (Express or higher) is supported and used for official builds.&lt;br /&gt;
*Microsoft Visual C++ 2005 (Express or higher) is unsupported, though it should work as it is capable of building compatible binaries.&lt;br /&gt;
*Microsoft Visual C++ 2003 7.1 is unsupported.  It is capable of building compatible binaries against the original (non-Orange Box SDK) only.&lt;br /&gt;
*Microsoft Visual C++ 2003 7.0 or lower '''cannot''' be used.&lt;br /&gt;
&lt;br /&gt;
If you are installing Visual C++ 2005 Express, it may not come with Microsoft's Platform SDK installed.  If this is the case, you must manually install the Platform SDK.  You can find directions on how to do this and test your setup [http://www.microsoft.com/express/2005/platformsdk/default.aspx here].  According to Microsoft, Visual C++ 2008 &amp;quot;streamlines&amp;quot; the Platform SDK installation for you.&lt;br /&gt;
&lt;br /&gt;
==Linux==&lt;br /&gt;
For Linux, Metamod:Source requires the GNU C/C++ Compiler (from GCC):&lt;br /&gt;
*Version 4.1 is used for official binaries and is guaranteed to build.&lt;br /&gt;
*Versions 3.4 through 4.2 are guaranteed to be binary (ABI) compatible.  Metamod:Source and its sample plugins will probably build fine on them.&lt;br /&gt;
*Any GCC version below 3.4 '''cannot''' be used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
==Getting the Files==&lt;br /&gt;
This section describes which files you must have and how to get them.  Do not worry about where to place them yet -- that will be discussed on a per-platform basis.  You can download the files anywhere you'd like.&lt;br /&gt;
&lt;br /&gt;
You can use the HL2SDK from Valve, but it's recommended you use the one linked to here.  We have a patched version that fixes many compilation bugs and it will make your life easier on both operating systems. Link for [http://hg.alliedmods.net/hl2sdks/ HLSDK changes] located at bottom of Metamod:Source downloads page.&lt;br /&gt;
&lt;br /&gt;
You need each SDK for each game you want to compile against (if your plugin requires knowledge about the game).&lt;br /&gt;
&lt;br /&gt;
To get Metamod:Source files, visit [http://www.metamodsource.net/?go=downloads Metamod:Source downloads].  Make sure to get the source code and not the binaries.&lt;br /&gt;
&lt;br /&gt;
==Linux==&lt;br /&gt;
As of this writing, SourceMod's Makefiles are hardcoded to use a binary called &amp;quot;gcc-4.1&amp;quot;  You can override this, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;make CPP=gcc&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otherwise, you can also just create a symlink:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that you must use &amp;lt;tt&amp;gt;gcc&amp;lt;/tt&amp;gt; and not &amp;lt;tt&amp;gt;g++&amp;lt;/tt&amp;gt;.  Using &amp;lt;tt&amp;gt;g++&amp;lt;/tt&amp;gt; creates a &amp;lt;tt&amp;gt;libstdc++&amp;lt;/tt&amp;gt; dependency, which may interfere with Valve's &amp;lt;tt&amp;gt;libstdc++&amp;lt;/tt&amp;gt; usage and will cause platform portability problems in general.  As a corollary you should avoid using STL, RTTI (Run-Time Type Information), or exceptions.&lt;br /&gt;
&lt;br /&gt;
Metamod:Source's Makefiles have a strict directory organization.  You must have a top-level folder.  For this document, we'll assume it is called &amp;lt;tt&amp;gt;project&amp;lt;/tt&amp;gt;, though it can be named anything.  The layout of &amp;lt;tt&amp;gt;project&amp;lt;/tt&amp;gt; should be:&lt;br /&gt;
*&amp;lt;tt&amp;gt;project&amp;lt;/tt&amp;gt;/&lt;br /&gt;
**&amp;lt;tt&amp;gt;mmsource-1.7&amp;lt;/tt&amp;gt; - symlink or folder containing Metamod:Source 1.7 source code&lt;br /&gt;
**&amp;lt;tt&amp;gt;hl2sdk&amp;lt;/tt&amp;gt; - symlink or folder containing the HL2SDK for Episode 1&lt;br /&gt;
**&amp;lt;tt&amp;gt;hl2sdk-ob&amp;lt;/tt&amp;gt; - symlink or folder containing the HL2SDK for Orange Box/TF&lt;br /&gt;
**&amp;lt;tt&amp;gt;hl2sdk-l4d&amp;lt;/tt&amp;gt; - symlink or folder containing the HL2SDK for Left 4 Dead&lt;br /&gt;
&lt;br /&gt;
If you are using a 64-bit version of Linux, you may need to install extra packages to be able to compile SourceMod.  On Debian-based distros, these are typically:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#prerequisites&lt;br /&gt;
#apt-get install g++-4.1 gcc-4.1 make mercurial&lt;br /&gt;
#apt-get instal libz libz-dev&lt;br /&gt;
#only needed if you want to use the build tool&lt;br /&gt;
#apt-get install mono mono-devel&lt;br /&gt;
#32-bit support&lt;br /&gt;
apt-get install ia32-libs&lt;br /&gt;
apt-get install lib32z1 lib32z1-dev&lt;br /&gt;
apt-get install libc6-dev-i386 libc6-i386&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In your projects, you should use &amp;lt;tt&amp;gt;mmsource-1.7/core&amp;lt;/tt&amp;gt; for the new (1.6+) API and &amp;lt;tt&amp;gt;mmsource-1.7/core-legacy&amp;lt;/tt&amp;gt; for the legacy (1.4-) API, needed for compatibility with the original MM:S engine.&lt;br /&gt;
&lt;br /&gt;
==Windows==&lt;br /&gt;
On Windows, there is no particular directory layout required -- environment variables are used instead.  The directions below apply to Windows XP, and are assumed to be similar for other versions of Windows.&lt;br /&gt;
*Open the Control Panel (for example, via Start -&amp;gt; Settings).&lt;br /&gt;
*Open the System control.  If you don't see it, you may need to switch to &amp;quot;Classic view&amp;quot; (either via the left-hand pane or by going to Tools -&amp;gt; Folder Options).&lt;br /&gt;
*Click the Advanced tab.&lt;br /&gt;
*Click the Environment Variables button.&lt;br /&gt;
&lt;br /&gt;
You can add your environment variables to either your User settings or your System settings.  Create a new variable for each item in the list below.  The item names are in &amp;lt;tt&amp;gt;fixed-width font&amp;lt;/tt&amp;gt; and their value descriptions follow.&lt;br /&gt;
*&amp;lt;tt&amp;gt;MMSOURCE17&amp;lt;/tt&amp;gt; - Path to Metamod:Source 1.7 source code.&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDK&amp;lt;/tt&amp;gt; - Path to HL2SDK for Ep1/Original&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDKOB&amp;lt;/tt&amp;gt; - Path to HL2SDK for Ep2/OrangeBox&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDKL4D&amp;lt;/tt&amp;gt; - Path to HL2SDK for Left 4 Dead&lt;br /&gt;
&lt;br /&gt;
In your projects, you should use &amp;lt;tt&amp;gt;$(MMSOURCE17)/core&amp;lt;/tt&amp;gt; for the new (1.6+) API and &amp;lt;tt&amp;gt;$(MMSOURCE17)/core-legacy&amp;lt;/tt&amp;gt; for the legacy (1.4-) API, needed for compatibility with the original MM:S engine.&lt;br /&gt;
&lt;br /&gt;
[[Category:Metamod:Source Development]]&lt;/div&gt;</summary>
		<author><name>LumiStance</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Metamod:Source_Environment&amp;diff=7759</id>
		<title>Metamod:Source Environment</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Metamod:Source_Environment&amp;diff=7759"/>
		<updated>2010-07-01T07:14:58Z</updated>

		<summary type="html">&lt;p&gt;LumiStance: /* Getting the Files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article explains how to set up your Windows or Linux environment to compile Metamod:Source's sample plugins.  &lt;br /&gt;
&lt;br /&gt;
This article does not guarantee that you will be able to build third-party plugins, which may have their own build environment requirements.  However, it creates a baseline for making sure you can successfully build plugins.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' You can use Valve's HL2SDK source tree, but we have our own available.  It fixes all of Valve's mistakes such that you can build on both GCC and Visual Studio with no warnings or errors.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This article is intended to be used against Metamod:Source 1.7.&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
&lt;br /&gt;
==Windows==&lt;br /&gt;
*Microsoft Visual C++ 2008 (Express or higher) is supported and used for official builds.&lt;br /&gt;
*Microsoft Visual C++ 2005 (Express or higher) is unsupported, though it should work as it is capable of building compatible binaries.&lt;br /&gt;
*Microsoft Visual C++ 2003 7.1 is unsupported.  It is capable of building compatible binaries against the original (non-Orange Box SDK) only.&lt;br /&gt;
*Microsoft Visual C++ 2003 7.0 or lower '''cannot''' be used.&lt;br /&gt;
&lt;br /&gt;
If you are installing Visual C++ 2005 Express, it may not come with Microsoft's Platform SDK installed.  If this is the case, you must manually install the Platform SDK.  You can find directions on how to do this and test your setup [http://www.microsoft.com/express/2005/platformsdk/default.aspx here].  According to Microsoft, Visual C++ 2008 &amp;quot;streamlines&amp;quot; the Platform SDK installation for you.&lt;br /&gt;
&lt;br /&gt;
==Linux==&lt;br /&gt;
For Linux, Metamod:Source requires the GNU C/C++ Compiler (from GCC):&lt;br /&gt;
*Version 4.1 is used for official binaries and is guaranteed to build.&lt;br /&gt;
*Versions 3.4 through 4.2 are guaranteed to be binary (ABI) compatible.  Metamod:Source and its sample plugins will probably build fine on them.&lt;br /&gt;
*Any GCC version below 3.4 '''cannot''' be used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
==Getting the Files==&lt;br /&gt;
This section describes which files you must have and how to get them.  Do not worry about where to place them yet -- that will be discussed on a per-platform basis.  You can download the files anywhere you'd like.&lt;br /&gt;
&lt;br /&gt;
You can use the HL2SDK from Valve, but it's recommended you use the one linked to here.  We have a patched version that fixes many compilation bugs and it will make your life easier on both operating systems. Link for [HLSDK changes HLSDK changes] located at bottom of Metamod:Source downloads page.&lt;br /&gt;
&lt;br /&gt;
You need each SDK for each game you want to compile against (if your plugin requires knowledge about the game).&lt;br /&gt;
&lt;br /&gt;
To get Metamod:Source files, visit [http://www.metamodsource.net/?go=downloads Metamod:Source downloads].  Make sure to get the source code and not the binaries.&lt;br /&gt;
&lt;br /&gt;
==Linux==&lt;br /&gt;
As of this writing, SourceMod's Makefiles are hardcoded to use a binary called &amp;quot;gcc-4.1&amp;quot;  You can override this, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;make CPP=gcc&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otherwise, you can also just create a symlink:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that you must use &amp;lt;tt&amp;gt;gcc&amp;lt;/tt&amp;gt; and not &amp;lt;tt&amp;gt;g++&amp;lt;/tt&amp;gt;.  Using &amp;lt;tt&amp;gt;g++&amp;lt;/tt&amp;gt; creates a &amp;lt;tt&amp;gt;libstdc++&amp;lt;/tt&amp;gt; dependency, which may interfere with Valve's &amp;lt;tt&amp;gt;libstdc++&amp;lt;/tt&amp;gt; usage and will cause platform portability problems in general.  As a corollary you should avoid using STL, RTTI (Run-Time Type Information), or exceptions.&lt;br /&gt;
&lt;br /&gt;
Metamod:Source's Makefiles have a strict directory organization.  You must have a top-level folder.  For this document, we'll assume it is called &amp;lt;tt&amp;gt;project&amp;lt;/tt&amp;gt;, though it can be named anything.  The layout of &amp;lt;tt&amp;gt;project&amp;lt;/tt&amp;gt; should be:&lt;br /&gt;
*&amp;lt;tt&amp;gt;project&amp;lt;/tt&amp;gt;/&lt;br /&gt;
**&amp;lt;tt&amp;gt;mmsource-1.7&amp;lt;/tt&amp;gt; - symlink or folder containing Metamod:Source 1.7 source code&lt;br /&gt;
**&amp;lt;tt&amp;gt;hl2sdk&amp;lt;/tt&amp;gt; - symlink or folder containing the HL2SDK for Episode 1&lt;br /&gt;
**&amp;lt;tt&amp;gt;hl2sdk-ob&amp;lt;/tt&amp;gt; - symlink or folder containing the HL2SDK for Orange Box/TF&lt;br /&gt;
**&amp;lt;tt&amp;gt;hl2sdk-l4d&amp;lt;/tt&amp;gt; - symlink or folder containing the HL2SDK for Left 4 Dead&lt;br /&gt;
&lt;br /&gt;
If you are using a 64-bit version of Linux, you may need to install extra packages to be able to compile SourceMod.  On Debian-based distros, these are typically:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#prerequisites&lt;br /&gt;
#apt-get install g++-4.1 gcc-4.1 make mercurial&lt;br /&gt;
#apt-get instal libz libz-dev&lt;br /&gt;
#only needed if you want to use the build tool&lt;br /&gt;
#apt-get install mono mono-devel&lt;br /&gt;
#32-bit support&lt;br /&gt;
apt-get install ia32-libs&lt;br /&gt;
apt-get install lib32z1 lib32z1-dev&lt;br /&gt;
apt-get install libc6-dev-i386 libc6-i386&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In your projects, you should use &amp;lt;tt&amp;gt;mmsource-1.7/core&amp;lt;/tt&amp;gt; for the new (1.6+) API and &amp;lt;tt&amp;gt;mmsource-1.7/core-legacy&amp;lt;/tt&amp;gt; for the legacy (1.4-) API, needed for compatibility with the original MM:S engine.&lt;br /&gt;
&lt;br /&gt;
==Windows==&lt;br /&gt;
On Windows, there is no particular directory layout required -- environment variables are used instead.  The directions below apply to Windows XP, and are assumed to be similar for other versions of Windows.&lt;br /&gt;
*Open the Control Panel (for example, via Start -&amp;gt; Settings).&lt;br /&gt;
*Open the System control.  If you don't see it, you may need to switch to &amp;quot;Classic view&amp;quot; (either via the left-hand pane or by going to Tools -&amp;gt; Folder Options).&lt;br /&gt;
*Click the Advanced tab.&lt;br /&gt;
*Click the Environment Variables button.&lt;br /&gt;
&lt;br /&gt;
You can add your environment variables to either your User settings or your System settings.  Create a new variable for each item in the list below.  The item names are in &amp;lt;tt&amp;gt;fixed-width font&amp;lt;/tt&amp;gt; and their value descriptions follow.&lt;br /&gt;
*&amp;lt;tt&amp;gt;MMSOURCE17&amp;lt;/tt&amp;gt; - Path to Metamod:Source 1.7 source code.&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDK&amp;lt;/tt&amp;gt; - Path to HL2SDK for Ep1/Original&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDKOB&amp;lt;/tt&amp;gt; - Path to HL2SDK for Ep2/OrangeBox&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDKL4D&amp;lt;/tt&amp;gt; - Path to HL2SDK for Left 4 Dead&lt;br /&gt;
&lt;br /&gt;
In your projects, you should use &amp;lt;tt&amp;gt;$(MMSOURCE17)/core&amp;lt;/tt&amp;gt; for the new (1.6+) API and &amp;lt;tt&amp;gt;$(MMSOURCE17)/core-legacy&amp;lt;/tt&amp;gt; for the legacy (1.4-) API, needed for compatibility with the original MM:S engine.&lt;br /&gt;
&lt;br /&gt;
[[Category:Metamod:Source Development]]&lt;/div&gt;</summary>
		<author><name>LumiStance</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Adding_Admins_(SourceMod)&amp;diff=6856</id>
		<title>Adding Admins (SourceMod)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Adding_Admins_(SourceMod)&amp;diff=6856"/>
		<updated>2009-01-18T11:14:28Z</updated>

		<summary type="html">&lt;p&gt;LumiStance: /* Quick Start */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
SourceMod has as very detailed and flexible administration system, and it can be quite daunting to users.  To simplify things, there are a number of &amp;quot;flags&amp;quot; which specify generic permissions administrators can have.&lt;br /&gt;
&lt;br /&gt;
Aside from that, there are (currently) two provided ways of storing admins.  One via a simplified flat file, and another via a more complex tree-based file.&lt;br /&gt;
&lt;br /&gt;
SourceMod provides three methods of authentication by default:&lt;br /&gt;
*''Steam ID'' (unique to a Steam account)&lt;br /&gt;
*''IP Address'' (semi-unique to a given computer, better for LANs)&lt;br /&gt;
*''Name'' (requires a password)&lt;br /&gt;
&lt;br /&gt;
=Quick Start=&lt;br /&gt;
On the server, open cstrike/addons/sourcemod/configs/admins_simple.ini&lt;br /&gt;
&lt;br /&gt;
In a new line, add the following, replacing yoursteamid (use your client's console '''status''' command to retrieve your steamid - formatted as STEAM_n:o:p)&lt;br /&gt;
&lt;br /&gt;
'''&amp;quot;yoursteamid&amp;quot; &amp;quot;99:z&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
Save&lt;br /&gt;
&lt;br /&gt;
Restart Server&lt;br /&gt;
&lt;br /&gt;
Connect to Server with Client&lt;br /&gt;
&lt;br /&gt;
Enter sm_admin into console, and return to game.  You should see admin menu.&lt;br /&gt;
&lt;br /&gt;
=Levels=&lt;br /&gt;
First, let's quickly run down the provided levels:&lt;br /&gt;
:{| cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| Name&lt;br /&gt;
| Flag&lt;br /&gt;
| Purpose&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| reservation&lt;br /&gt;
| a&lt;br /&gt;
| Reserved slot access.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| generic&lt;br /&gt;
| b&lt;br /&gt;
| Generic admin; required for admins.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| kick&lt;br /&gt;
| c&lt;br /&gt;
| Kick other players.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| ban&lt;br /&gt;
| d&lt;br /&gt;
| Ban other players.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| unban&lt;br /&gt;
| e&lt;br /&gt;
| Remove bans.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| slay&lt;br /&gt;
| f&lt;br /&gt;
| Slay/harm other players.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| changemap&lt;br /&gt;
| g&lt;br /&gt;
| Change the map or major gameplay features.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| cvar&lt;br /&gt;
| h&lt;br /&gt;
| Change most cvars.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| config&lt;br /&gt;
| i&lt;br /&gt;
| Execute config files.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| chat&lt;br /&gt;
| j&lt;br /&gt;
| Special chat privileges.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| vote&lt;br /&gt;
| k&lt;br /&gt;
| Start or create votes.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| password&lt;br /&gt;
| l&lt;br /&gt;
| Set a password on the server.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| rcon&lt;br /&gt;
| m&lt;br /&gt;
| Use RCON commands.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| cheats&lt;br /&gt;
| n&lt;br /&gt;
| Change sv_cheats or use cheating commands.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| root&lt;br /&gt;
| z&lt;br /&gt;
| Magically enables all flags.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Immunity=&lt;br /&gt;
In SourceMod, immunity is a flexible system based on ''immunity levels''.  Every admin can have an arbitrary immunity value assigned to them.  Whether an admin can target another admin depends on who has a higher immunity value.&lt;br /&gt;
&lt;br /&gt;
For example, say Admin #1 has an immunity level of &amp;quot;3&amp;quot; and Admin #2 has an immunity level of &amp;quot;10.&amp;quot;  Admin #2 can target Admin #1, but Admin #1 cannot target Admin #2.  The numbers are completely arbitrary, and they can be any number equal to or higher than 0.  Note that 0 always implies no immunity.&lt;br /&gt;
&lt;br /&gt;
By default, admins with the same immunity value can target each other.  This can be changed via &amp;lt;tt&amp;gt;sm_immunity_mode&amp;lt;/tt&amp;gt; in &amp;lt;tt&amp;gt;cfg/sourcemod.cfg&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Passwords=&lt;br /&gt;
For passwords to work, the server administrator must change the &amp;quot;PassInfoVar&amp;quot; line in &amp;lt;tt&amp;gt;addons/sourcemod/configs/core.cfg&amp;lt;/tt&amp;gt;.  For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;PassInfoVar&amp;quot;			&amp;quot;_sm1337&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, if an admin has a password, he or she must set the password via the ''setinfo'' command in the client console.   For example, using the examples above, &amp;lt;tt&amp;gt;BAILOPAN&amp;lt;/tt&amp;gt; would need to type:&lt;br /&gt;
&amp;lt;pre&amp;gt;setinfo &amp;quot;_sm1337&amp;quot; &amp;quot;Gab3n&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To automate this upon connecting to a server, you can create an &amp;quot;autoexec.cfg&amp;quot; file in your client &amp;lt;tt&amp;gt;cstrike&amp;lt;/tt&amp;gt; folder.  This will be located under &amp;lt;tt&amp;gt;SteamApps\ACCOUNT\Counter-Strike Source\cstrike\cfg&amp;lt;/tt&amp;gt;.  For example:&lt;br /&gt;
*&amp;lt;tt&amp;gt;C:\program files\steam\steamapps\bailopan\counter-strike source\cstrike\cfg&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also set the password upon connecting.  For steam and IP authentication, your admin privileges will be automatically assigned if the password is correct.  For name based authentication, your password must be correct before you change your name, or else you will be kicked from the server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Simple Admins=&lt;br /&gt;
The easiest way to add administrators is through &amp;lt;tt&amp;gt;configs/admins_simple.ini&amp;lt;/tt&amp;gt;.  This is a flat file which requires two parameters per line: authentication info, and flags.  The flag string is somewhat flexible and can have the following information:&lt;br /&gt;
*An optional immunity level value, followed by a colon (':');&lt;br /&gt;
*A flag string, '''or''';&lt;br /&gt;
*A group name, preceded by an '@' symbol&lt;br /&gt;
&lt;br /&gt;
Three examples are provided:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;STEAM_0:1:16&amp;quot;		&amp;quot;bce&amp;quot;			//generic, kick, unban for this steam ID.  no immunity&lt;br /&gt;
&amp;quot;!127.0.0.1&amp;quot;		&amp;quot;5:z&amp;quot;			//all permissions for this ip, immunity level = 5&lt;br /&gt;
&amp;quot;BAILOPAN&amp;quot;		&amp;quot;abc&amp;quot;	&amp;quot;Gab3n&amp;quot;		//name BAILOPAN, password &amp;quot;Gab3n&amp;quot;: gets reservation, generic, kick&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Detailed Admins=&lt;br /&gt;
Alternatively, you can add admins via &amp;lt;tt&amp;gt;configs/admins.cfg&amp;lt;/tt&amp;gt;, a more advanced file stored in a KeyValues format.  Each admin is its own block inside a main &amp;quot;Admin&amp;quot; block.  The format is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Admins&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;Admin Name&amp;quot;&lt;br /&gt;
	{&lt;br /&gt;
		&amp;quot;auth&amp;quot;		&amp;quot;[steam|name|ip]&amp;quot;&lt;br /&gt;
		&amp;quot;identity&amp;quot;	&amp;quot;[unique id]&amp;quot;&lt;br /&gt;
		&amp;quot;[option1]&amp;quot;	&amp;quot;[value1]&amp;quot;&lt;br /&gt;
		&amp;quot;[option2]&amp;quot;	&amp;quot;[value2]&amp;quot;&lt;br /&gt;
		/* .... */&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Available options are:&lt;br /&gt;
*&amp;lt;tt&amp;gt;auth&amp;lt;/tt&amp;gt;: Required.  Must be one of &amp;lt;tt&amp;gt;steam&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;, or &amp;lt;tt&amp;gt;ip&amp;lt;/tt&amp;gt; (unless there is a custom auth method), and instructs SourceMod how to interpret the &amp;lt;tt&amp;gt;identity&amp;lt;/tt&amp;gt; value.&lt;br /&gt;
*&amp;lt;tt&amp;gt;identity&amp;lt;/tt&amp;gt;: Required.  Unique value that allows SourceMod to find this admin given an authentication method and the given value.&lt;br /&gt;
*&amp;lt;tt&amp;gt;password&amp;lt;/tt&amp;gt;: Optional.  Specifies the password the user must enter (see above section on passwords).&lt;br /&gt;
*&amp;lt;tt&amp;gt;group&amp;lt;/tt&amp;gt;: Optional.  Specifies a group name the user should inherit if available.  More than one &amp;quot;group&amp;quot; line can be specified.  There should be no '@' symbol as there is no ambiguity.&lt;br /&gt;
*&amp;lt;tt&amp;gt;flags&amp;lt;/tt&amp;gt;: Optional.  Default access flags the user should receive.&lt;br /&gt;
*&amp;lt;tt&amp;gt;immunity&amp;lt;/tt&amp;gt;: Optional:  Default immunity level the user should receive.&lt;br /&gt;
&lt;br /&gt;
The admin name is optional (it can be blank).  It is not used internally and is intended for convenience usage by 3rd party tools.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;Admins&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;BAILOPAN&amp;quot;&lt;br /&gt;
	{&lt;br /&gt;
		&amp;quot;auth&amp;quot;		&amp;quot;steam&amp;quot;&lt;br /&gt;
		&amp;quot;identity&amp;quot;	&amp;quot;STEAM_0:1:2345&amp;quot;&lt;br /&gt;
		&amp;quot;flags&amp;quot;		&amp;quot;abcdef&amp;quot;&lt;br /&gt;
		&amp;quot;immunity&amp;quot;	&amp;quot;5&amp;quot;&lt;br /&gt;
		&amp;quot;group&amp;quot;		&amp;quot;Awesome Admins&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Blue Crab&amp;quot;&lt;br /&gt;
	{&lt;br /&gt;
		&amp;quot;auth&amp;quot;		&amp;quot;steam&amp;quot;&lt;br /&gt;
		&amp;quot;identity&amp;quot;	&amp;quot;STEAM_0:1:666666&amp;quot;&lt;br /&gt;
		&amp;quot;flags&amp;quot;		&amp;quot;z&amp;quot;&lt;br /&gt;
		&amp;quot;immunity&amp;quot;	&amp;quot;99&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
*[[Adding Groups (SourceMod)]]&lt;br /&gt;
*[[Overriding Command Access (SourceMod)]]&lt;br /&gt;
&lt;br /&gt;
[[Category:SourceMod Documentation]]&lt;/div&gt;</summary>
		<author><name>LumiStance</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Adding_Admins_(SourceMod)&amp;diff=6855</id>
		<title>Adding Admins (SourceMod)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Adding_Admins_(SourceMod)&amp;diff=6855"/>
		<updated>2009-01-18T11:12:56Z</updated>

		<summary type="html">&lt;p&gt;LumiStance: /* Quick Start */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
SourceMod has as very detailed and flexible administration system, and it can be quite daunting to users.  To simplify things, there are a number of &amp;quot;flags&amp;quot; which specify generic permissions administrators can have.&lt;br /&gt;
&lt;br /&gt;
Aside from that, there are (currently) two provided ways of storing admins.  One via a simplified flat file, and another via a more complex tree-based file.&lt;br /&gt;
&lt;br /&gt;
SourceMod provides three methods of authentication by default:&lt;br /&gt;
*''Steam ID'' (unique to a Steam account)&lt;br /&gt;
*''IP Address'' (semi-unique to a given computer, better for LANs)&lt;br /&gt;
*''Name'' (requires a password)&lt;br /&gt;
&lt;br /&gt;
=Quick Start=&lt;br /&gt;
On the server, open cstrike/addons/sourcemod/configs/admins_simple.ini&lt;br /&gt;
&lt;br /&gt;
In a new line, add the following, replacing yoursteamid (use your client's console '''status''' command to retrieve your steamid)&lt;br /&gt;
&lt;br /&gt;
'''&amp;quot;yoursteamid&amp;quot; &amp;quot;99:z&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
Save&lt;br /&gt;
&lt;br /&gt;
Restart Server&lt;br /&gt;
&lt;br /&gt;
Connect to Server with Client&lt;br /&gt;
&lt;br /&gt;
Enter sm_admin into console, and return to game.  You should see admin menu.&lt;br /&gt;
&lt;br /&gt;
=Levels=&lt;br /&gt;
First, let's quickly run down the provided levels:&lt;br /&gt;
:{| cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| Name&lt;br /&gt;
| Flag&lt;br /&gt;
| Purpose&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| reservation&lt;br /&gt;
| a&lt;br /&gt;
| Reserved slot access.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| generic&lt;br /&gt;
| b&lt;br /&gt;
| Generic admin; required for admins.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| kick&lt;br /&gt;
| c&lt;br /&gt;
| Kick other players.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| ban&lt;br /&gt;
| d&lt;br /&gt;
| Ban other players.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| unban&lt;br /&gt;
| e&lt;br /&gt;
| Remove bans.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| slay&lt;br /&gt;
| f&lt;br /&gt;
| Slay/harm other players.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| changemap&lt;br /&gt;
| g&lt;br /&gt;
| Change the map or major gameplay features.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| cvar&lt;br /&gt;
| h&lt;br /&gt;
| Change most cvars.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| config&lt;br /&gt;
| i&lt;br /&gt;
| Execute config files.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| chat&lt;br /&gt;
| j&lt;br /&gt;
| Special chat privileges.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| vote&lt;br /&gt;
| k&lt;br /&gt;
| Start or create votes.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| password&lt;br /&gt;
| l&lt;br /&gt;
| Set a password on the server.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| rcon&lt;br /&gt;
| m&lt;br /&gt;
| Use RCON commands.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| cheats&lt;br /&gt;
| n&lt;br /&gt;
| Change sv_cheats or use cheating commands.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| root&lt;br /&gt;
| z&lt;br /&gt;
| Magically enables all flags.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Immunity=&lt;br /&gt;
In SourceMod, immunity is a flexible system based on ''immunity levels''.  Every admin can have an arbitrary immunity value assigned to them.  Whether an admin can target another admin depends on who has a higher immunity value.&lt;br /&gt;
&lt;br /&gt;
For example, say Admin #1 has an immunity level of &amp;quot;3&amp;quot; and Admin #2 has an immunity level of &amp;quot;10.&amp;quot;  Admin #2 can target Admin #1, but Admin #1 cannot target Admin #2.  The numbers are completely arbitrary, and they can be any number equal to or higher than 0.  Note that 0 always implies no immunity.&lt;br /&gt;
&lt;br /&gt;
By default, admins with the same immunity value can target each other.  This can be changed via &amp;lt;tt&amp;gt;sm_immunity_mode&amp;lt;/tt&amp;gt; in &amp;lt;tt&amp;gt;cfg/sourcemod.cfg&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Passwords=&lt;br /&gt;
For passwords to work, the server administrator must change the &amp;quot;PassInfoVar&amp;quot; line in &amp;lt;tt&amp;gt;addons/sourcemod/configs/core.cfg&amp;lt;/tt&amp;gt;.  For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;PassInfoVar&amp;quot;			&amp;quot;_sm1337&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, if an admin has a password, he or she must set the password via the ''setinfo'' command in the client console.   For example, using the examples above, &amp;lt;tt&amp;gt;BAILOPAN&amp;lt;/tt&amp;gt; would need to type:&lt;br /&gt;
&amp;lt;pre&amp;gt;setinfo &amp;quot;_sm1337&amp;quot; &amp;quot;Gab3n&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To automate this upon connecting to a server, you can create an &amp;quot;autoexec.cfg&amp;quot; file in your client &amp;lt;tt&amp;gt;cstrike&amp;lt;/tt&amp;gt; folder.  This will be located under &amp;lt;tt&amp;gt;SteamApps\ACCOUNT\Counter-Strike Source\cstrike\cfg&amp;lt;/tt&amp;gt;.  For example:&lt;br /&gt;
*&amp;lt;tt&amp;gt;C:\program files\steam\steamapps\bailopan\counter-strike source\cstrike\cfg&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also set the password upon connecting.  For steam and IP authentication, your admin privileges will be automatically assigned if the password is correct.  For name based authentication, your password must be correct before you change your name, or else you will be kicked from the server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Simple Admins=&lt;br /&gt;
The easiest way to add administrators is through &amp;lt;tt&amp;gt;configs/admins_simple.ini&amp;lt;/tt&amp;gt;.  This is a flat file which requires two parameters per line: authentication info, and flags.  The flag string is somewhat flexible and can have the following information:&lt;br /&gt;
*An optional immunity level value, followed by a colon (':');&lt;br /&gt;
*A flag string, '''or''';&lt;br /&gt;
*A group name, preceded by an '@' symbol&lt;br /&gt;
&lt;br /&gt;
Three examples are provided:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;STEAM_0:1:16&amp;quot;		&amp;quot;bce&amp;quot;			//generic, kick, unban for this steam ID.  no immunity&lt;br /&gt;
&amp;quot;!127.0.0.1&amp;quot;		&amp;quot;5:z&amp;quot;			//all permissions for this ip, immunity level = 5&lt;br /&gt;
&amp;quot;BAILOPAN&amp;quot;		&amp;quot;abc&amp;quot;	&amp;quot;Gab3n&amp;quot;		//name BAILOPAN, password &amp;quot;Gab3n&amp;quot;: gets reservation, generic, kick&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Detailed Admins=&lt;br /&gt;
Alternatively, you can add admins via &amp;lt;tt&amp;gt;configs/admins.cfg&amp;lt;/tt&amp;gt;, a more advanced file stored in a KeyValues format.  Each admin is its own block inside a main &amp;quot;Admin&amp;quot; block.  The format is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Admins&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;Admin Name&amp;quot;&lt;br /&gt;
	{&lt;br /&gt;
		&amp;quot;auth&amp;quot;		&amp;quot;[steam|name|ip]&amp;quot;&lt;br /&gt;
		&amp;quot;identity&amp;quot;	&amp;quot;[unique id]&amp;quot;&lt;br /&gt;
		&amp;quot;[option1]&amp;quot;	&amp;quot;[value1]&amp;quot;&lt;br /&gt;
		&amp;quot;[option2]&amp;quot;	&amp;quot;[value2]&amp;quot;&lt;br /&gt;
		/* .... */&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Available options are:&lt;br /&gt;
*&amp;lt;tt&amp;gt;auth&amp;lt;/tt&amp;gt;: Required.  Must be one of &amp;lt;tt&amp;gt;steam&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;, or &amp;lt;tt&amp;gt;ip&amp;lt;/tt&amp;gt; (unless there is a custom auth method), and instructs SourceMod how to interpret the &amp;lt;tt&amp;gt;identity&amp;lt;/tt&amp;gt; value.&lt;br /&gt;
*&amp;lt;tt&amp;gt;identity&amp;lt;/tt&amp;gt;: Required.  Unique value that allows SourceMod to find this admin given an authentication method and the given value.&lt;br /&gt;
*&amp;lt;tt&amp;gt;password&amp;lt;/tt&amp;gt;: Optional.  Specifies the password the user must enter (see above section on passwords).&lt;br /&gt;
*&amp;lt;tt&amp;gt;group&amp;lt;/tt&amp;gt;: Optional.  Specifies a group name the user should inherit if available.  More than one &amp;quot;group&amp;quot; line can be specified.  There should be no '@' symbol as there is no ambiguity.&lt;br /&gt;
*&amp;lt;tt&amp;gt;flags&amp;lt;/tt&amp;gt;: Optional.  Default access flags the user should receive.&lt;br /&gt;
*&amp;lt;tt&amp;gt;immunity&amp;lt;/tt&amp;gt;: Optional:  Default immunity level the user should receive.&lt;br /&gt;
&lt;br /&gt;
The admin name is optional (it can be blank).  It is not used internally and is intended for convenience usage by 3rd party tools.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;Admins&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;BAILOPAN&amp;quot;&lt;br /&gt;
	{&lt;br /&gt;
		&amp;quot;auth&amp;quot;		&amp;quot;steam&amp;quot;&lt;br /&gt;
		&amp;quot;identity&amp;quot;	&amp;quot;STEAM_0:1:2345&amp;quot;&lt;br /&gt;
		&amp;quot;flags&amp;quot;		&amp;quot;abcdef&amp;quot;&lt;br /&gt;
		&amp;quot;immunity&amp;quot;	&amp;quot;5&amp;quot;&lt;br /&gt;
		&amp;quot;group&amp;quot;		&amp;quot;Awesome Admins&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Blue Crab&amp;quot;&lt;br /&gt;
	{&lt;br /&gt;
		&amp;quot;auth&amp;quot;		&amp;quot;steam&amp;quot;&lt;br /&gt;
		&amp;quot;identity&amp;quot;	&amp;quot;STEAM_0:1:666666&amp;quot;&lt;br /&gt;
		&amp;quot;flags&amp;quot;		&amp;quot;z&amp;quot;&lt;br /&gt;
		&amp;quot;immunity&amp;quot;	&amp;quot;99&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
*[[Adding Groups (SourceMod)]]&lt;br /&gt;
*[[Overriding Command Access (SourceMod)]]&lt;br /&gt;
&lt;br /&gt;
[[Category:SourceMod Documentation]]&lt;/div&gt;</summary>
		<author><name>LumiStance</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Adding_Admins_(SourceMod)&amp;diff=6854</id>
		<title>Adding Admins (SourceMod)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Adding_Admins_(SourceMod)&amp;diff=6854"/>
		<updated>2009-01-18T11:03:34Z</updated>

		<summary type="html">&lt;p&gt;LumiStance: Added quick start&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
SourceMod has as very detailed and flexible administration system, and it can be quite daunting to users.  To simplify things, there are a number of &amp;quot;flags&amp;quot; which specify generic permissions administrators can have.&lt;br /&gt;
&lt;br /&gt;
Aside from that, there are (currently) two provided ways of storing admins.  One via a simplified flat file, and another via a more complex tree-based file.&lt;br /&gt;
&lt;br /&gt;
SourceMod provides three methods of authentication by default:&lt;br /&gt;
*''Steam ID'' (unique to a Steam account)&lt;br /&gt;
*''IP Address'' (semi-unique to a given computer, better for LANs)&lt;br /&gt;
*''Name'' (requires a password)&lt;br /&gt;
&lt;br /&gt;
=Quick Start=&lt;br /&gt;
On the server, open cstrike/addons/sourcemod/configs/admins_simple.ini&lt;br /&gt;
&lt;br /&gt;
In a new line, add the following, replacing yoursteamid (use your client's console status command to retrieve your steamid)&lt;br /&gt;
&lt;br /&gt;
'''&amp;quot;yoursteamid&amp;quot; &amp;quot;99:z&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
Save&lt;br /&gt;
&lt;br /&gt;
Restart Server&lt;br /&gt;
&lt;br /&gt;
Connect to Server with Client&lt;br /&gt;
&lt;br /&gt;
Enter sm_admin into console, and return to game.  You should see admin menu.&lt;br /&gt;
&lt;br /&gt;
=Levels=&lt;br /&gt;
First, let's quickly run down the provided levels:&lt;br /&gt;
:{| cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| Name&lt;br /&gt;
| Flag&lt;br /&gt;
| Purpose&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| reservation&lt;br /&gt;
| a&lt;br /&gt;
| Reserved slot access.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| generic&lt;br /&gt;
| b&lt;br /&gt;
| Generic admin; required for admins.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| kick&lt;br /&gt;
| c&lt;br /&gt;
| Kick other players.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| ban&lt;br /&gt;
| d&lt;br /&gt;
| Ban other players.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| unban&lt;br /&gt;
| e&lt;br /&gt;
| Remove bans.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| slay&lt;br /&gt;
| f&lt;br /&gt;
| Slay/harm other players.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| changemap&lt;br /&gt;
| g&lt;br /&gt;
| Change the map or major gameplay features.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| cvar&lt;br /&gt;
| h&lt;br /&gt;
| Change most cvars.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| config&lt;br /&gt;
| i&lt;br /&gt;
| Execute config files.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| chat&lt;br /&gt;
| j&lt;br /&gt;
| Special chat privileges.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| vote&lt;br /&gt;
| k&lt;br /&gt;
| Start or create votes.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| password&lt;br /&gt;
| l&lt;br /&gt;
| Set a password on the server.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| rcon&lt;br /&gt;
| m&lt;br /&gt;
| Use RCON commands.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| cheats&lt;br /&gt;
| n&lt;br /&gt;
| Change sv_cheats or use cheating commands.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| root&lt;br /&gt;
| z&lt;br /&gt;
| Magically enables all flags.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Immunity=&lt;br /&gt;
In SourceMod, immunity is a flexible system based on ''immunity levels''.  Every admin can have an arbitrary immunity value assigned to them.  Whether an admin can target another admin depends on who has a higher immunity value.&lt;br /&gt;
&lt;br /&gt;
For example, say Admin #1 has an immunity level of &amp;quot;3&amp;quot; and Admin #2 has an immunity level of &amp;quot;10.&amp;quot;  Admin #2 can target Admin #1, but Admin #1 cannot target Admin #2.  The numbers are completely arbitrary, and they can be any number equal to or higher than 0.  Note that 0 always implies no immunity.&lt;br /&gt;
&lt;br /&gt;
By default, admins with the same immunity value can target each other.  This can be changed via &amp;lt;tt&amp;gt;sm_immunity_mode&amp;lt;/tt&amp;gt; in &amp;lt;tt&amp;gt;cfg/sourcemod.cfg&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Passwords=&lt;br /&gt;
For passwords to work, the server administrator must change the &amp;quot;PassInfoVar&amp;quot; line in &amp;lt;tt&amp;gt;addons/sourcemod/configs/core.cfg&amp;lt;/tt&amp;gt;.  For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;PassInfoVar&amp;quot;			&amp;quot;_sm1337&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, if an admin has a password, he or she must set the password via the ''setinfo'' command in the client console.   For example, using the examples above, &amp;lt;tt&amp;gt;BAILOPAN&amp;lt;/tt&amp;gt; would need to type:&lt;br /&gt;
&amp;lt;pre&amp;gt;setinfo &amp;quot;_sm1337&amp;quot; &amp;quot;Gab3n&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To automate this upon connecting to a server, you can create an &amp;quot;autoexec.cfg&amp;quot; file in your client &amp;lt;tt&amp;gt;cstrike&amp;lt;/tt&amp;gt; folder.  This will be located under &amp;lt;tt&amp;gt;SteamApps\ACCOUNT\Counter-Strike Source\cstrike\cfg&amp;lt;/tt&amp;gt;.  For example:&lt;br /&gt;
*&amp;lt;tt&amp;gt;C:\program files\steam\steamapps\bailopan\counter-strike source\cstrike\cfg&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also set the password upon connecting.  For steam and IP authentication, your admin privileges will be automatically assigned if the password is correct.  For name based authentication, your password must be correct before you change your name, or else you will be kicked from the server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Simple Admins=&lt;br /&gt;
The easiest way to add administrators is through &amp;lt;tt&amp;gt;configs/admins_simple.ini&amp;lt;/tt&amp;gt;.  This is a flat file which requires two parameters per line: authentication info, and flags.  The flag string is somewhat flexible and can have the following information:&lt;br /&gt;
*An optional immunity level value, followed by a colon (':');&lt;br /&gt;
*A flag string, '''or''';&lt;br /&gt;
*A group name, preceded by an '@' symbol&lt;br /&gt;
&lt;br /&gt;
Three examples are provided:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;STEAM_0:1:16&amp;quot;		&amp;quot;bce&amp;quot;			//generic, kick, unban for this steam ID.  no immunity&lt;br /&gt;
&amp;quot;!127.0.0.1&amp;quot;		&amp;quot;5:z&amp;quot;			//all permissions for this ip, immunity level = 5&lt;br /&gt;
&amp;quot;BAILOPAN&amp;quot;		&amp;quot;abc&amp;quot;	&amp;quot;Gab3n&amp;quot;		//name BAILOPAN, password &amp;quot;Gab3n&amp;quot;: gets reservation, generic, kick&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Detailed Admins=&lt;br /&gt;
Alternatively, you can add admins via &amp;lt;tt&amp;gt;configs/admins.cfg&amp;lt;/tt&amp;gt;, a more advanced file stored in a KeyValues format.  Each admin is its own block inside a main &amp;quot;Admin&amp;quot; block.  The format is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Admins&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;Admin Name&amp;quot;&lt;br /&gt;
	{&lt;br /&gt;
		&amp;quot;auth&amp;quot;		&amp;quot;[steam|name|ip]&amp;quot;&lt;br /&gt;
		&amp;quot;identity&amp;quot;	&amp;quot;[unique id]&amp;quot;&lt;br /&gt;
		&amp;quot;[option1]&amp;quot;	&amp;quot;[value1]&amp;quot;&lt;br /&gt;
		&amp;quot;[option2]&amp;quot;	&amp;quot;[value2]&amp;quot;&lt;br /&gt;
		/* .... */&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Available options are:&lt;br /&gt;
*&amp;lt;tt&amp;gt;auth&amp;lt;/tt&amp;gt;: Required.  Must be one of &amp;lt;tt&amp;gt;steam&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;, or &amp;lt;tt&amp;gt;ip&amp;lt;/tt&amp;gt; (unless there is a custom auth method), and instructs SourceMod how to interpret the &amp;lt;tt&amp;gt;identity&amp;lt;/tt&amp;gt; value.&lt;br /&gt;
*&amp;lt;tt&amp;gt;identity&amp;lt;/tt&amp;gt;: Required.  Unique value that allows SourceMod to find this admin given an authentication method and the given value.&lt;br /&gt;
*&amp;lt;tt&amp;gt;password&amp;lt;/tt&amp;gt;: Optional.  Specifies the password the user must enter (see above section on passwords).&lt;br /&gt;
*&amp;lt;tt&amp;gt;group&amp;lt;/tt&amp;gt;: Optional.  Specifies a group name the user should inherit if available.  More than one &amp;quot;group&amp;quot; line can be specified.  There should be no '@' symbol as there is no ambiguity.&lt;br /&gt;
*&amp;lt;tt&amp;gt;flags&amp;lt;/tt&amp;gt;: Optional.  Default access flags the user should receive.&lt;br /&gt;
*&amp;lt;tt&amp;gt;immunity&amp;lt;/tt&amp;gt;: Optional:  Default immunity level the user should receive.&lt;br /&gt;
&lt;br /&gt;
The admin name is optional (it can be blank).  It is not used internally and is intended for convenience usage by 3rd party tools.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;Admins&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;BAILOPAN&amp;quot;&lt;br /&gt;
	{&lt;br /&gt;
		&amp;quot;auth&amp;quot;		&amp;quot;steam&amp;quot;&lt;br /&gt;
		&amp;quot;identity&amp;quot;	&amp;quot;STEAM_0:1:2345&amp;quot;&lt;br /&gt;
		&amp;quot;flags&amp;quot;		&amp;quot;abcdef&amp;quot;&lt;br /&gt;
		&amp;quot;immunity&amp;quot;	&amp;quot;5&amp;quot;&lt;br /&gt;
		&amp;quot;group&amp;quot;		&amp;quot;Awesome Admins&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Blue Crab&amp;quot;&lt;br /&gt;
	{&lt;br /&gt;
		&amp;quot;auth&amp;quot;		&amp;quot;steam&amp;quot;&lt;br /&gt;
		&amp;quot;identity&amp;quot;	&amp;quot;STEAM_0:1:666666&amp;quot;&lt;br /&gt;
		&amp;quot;flags&amp;quot;		&amp;quot;z&amp;quot;&lt;br /&gt;
		&amp;quot;immunity&amp;quot;	&amp;quot;99&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
*[[Adding Groups (SourceMod)]]&lt;br /&gt;
*[[Overriding Command Access (SourceMod)]]&lt;br /&gt;
&lt;br /&gt;
[[Category:SourceMod Documentation]]&lt;/div&gt;</summary>
		<author><name>LumiStance</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Installing_SourceMod&amp;diff=6853</id>
		<title>Installing SourceMod</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Installing_SourceMod&amp;diff=6853"/>
		<updated>2009-01-18T10:26:42Z</updated>

		<summary type="html">&lt;p&gt;LumiStance: /* Remote Server */  spelling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Installing SourceMod is very simple, and it can be added with almost no configuration changes.&lt;br /&gt;
&lt;br /&gt;
=Prerequisites=&lt;br /&gt;
A GUI Web Browser to retrive Metamod and SourceMod compressed archives.&lt;br /&gt;
A tool to copy archive to your dedicated server host.&lt;br /&gt;
&lt;br /&gt;
SourceMod requires [[Metamod:Source]] 1.4.3 or higher. [http://www.metamodsource.net/ Click here] to visit the Metamod:Source homepage. Instructions to install SourceMM muanually can be found [http://wiki.alliedmods.net/index.php/Installing_Metamod:Source here].&lt;br /&gt;
&lt;br /&gt;
SourceMod will run on any mod built using the Source SDK.  It also supports &amp;quot;The Ship,&amp;quot; which uses the Source engine.&lt;br /&gt;
&lt;br /&gt;
=Uploading/Installing=&lt;br /&gt;
==Local Server==&lt;br /&gt;
To install SourceMod locally, simply extract the &amp;lt;tt&amp;gt;.zip&amp;lt;/tt&amp;gt; (Windows) or &amp;lt;tt&amp;gt;.tar.gz&amp;lt;/tt&amp;gt; (Linux) package to your mod folder (i.e. &amp;lt;tt&amp;gt;cstrike&amp;lt;/tt&amp;gt; for Counter-Strike, &amp;lt;tt&amp;gt;dod&amp;lt;/tt&amp;gt; for Day of Defeat, et cetera).&lt;br /&gt;
[http://www.sourcemod.net/downloads.php Download Here]&lt;br /&gt;
&lt;br /&gt;
==Remote Server==&lt;br /&gt;
To install SourceMod remotely, first extract the &amp;lt;tt&amp;gt;.zip&amp;lt;/tt&amp;gt; (Windows) or &amp;lt;tt&amp;gt;.tar.gz&amp;lt;/tt&amp;gt; (Linux) package to your local computer (for example, your Desktop).  You will see an &amp;lt;tt&amp;gt;addons&amp;lt;/tt&amp;gt; folder.  &lt;br /&gt;
&lt;br /&gt;
Using a tool such as [http://www.google.com/search?q=FTP FTP], locate your mod folder (i.e. &amp;lt;tt&amp;gt;cstrike&amp;lt;/tt&amp;gt; for Counter-Strike, &amp;lt;tt&amp;gt;dod&amp;lt;/tt&amp;gt; for Day of Defeat, et cetera).  Underneath this folder, you should have an &amp;lt;tt&amp;gt;addons&amp;lt;/tt&amp;gt; folder (if not, Metamod:Source is probably not installed).  From your local &amp;lt;tt&amp;gt;addons&amp;lt;/tt&amp;gt; folder, upload the entire contents to your remote &amp;lt;tt&amp;gt;addons&amp;lt;/tt&amp;gt; folder.  When done, your remote &amp;lt;tt&amp;gt;addons&amp;lt;/tt&amp;gt; folder should have a &amp;lt;tt&amp;gt;sourcemod&amp;lt;/tt&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
If you have trouble with these steps, you need to get acquainted with FTP and server management.  However, you can also ask your server provider for help.  Some providers also have web interfaces for managing your server.&lt;br /&gt;
&lt;br /&gt;
Alternatively, if you copied the tar.gz to your srcds directory, execute the following from the cstrike sub directory:&lt;br /&gt;
tar -xzf ../sourcemod-1.1.0.tar.gz&lt;br /&gt;
&lt;br /&gt;
=Checking the Install=&lt;br /&gt;
Your folder layout should look like:&lt;br /&gt;
*&amp;lt;tt&amp;gt;[mod]&amp;lt;/tt&amp;gt; - Your mod's folder&lt;br /&gt;
**&amp;lt;tt&amp;gt;addons&amp;lt;/tt&amp;gt;&lt;br /&gt;
***&amp;lt;tt&amp;gt;metamod&amp;lt;/tt&amp;gt; - Metamod:Source&lt;br /&gt;
***&amp;lt;tt&amp;gt;sourcemod&amp;lt;/tt&amp;gt; - SourceMod&lt;br /&gt;
&lt;br /&gt;
Once SourceMod is uploaded/copied and configured with Metamod:Source, restart your server completely.  If it is local, shut it down and restart it.  If it is remote, you may need to ask your server provider for help.  However, it is often safe to issue a &amp;quot;quit&amp;quot; command via [[rcon]], and most providers will automatically restart your server.&lt;br /&gt;
&lt;br /&gt;
First, in your [[server console]] (not client console), type:&lt;br /&gt;
&amp;lt;pre&amp;gt;meta list&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the install worked, you will see something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;] meta list&lt;br /&gt;
Listing 1 plugin:&lt;br /&gt;
    [01] SourceMod (1.1.0.2489) by AlliedModders LLC&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should then be able to use the SourceMod root console command, which can be invoked with simply:&lt;br /&gt;
&amp;lt;pre&amp;gt;sm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;] sm version&lt;br /&gt;
 SourceMod Version Information:&lt;br /&gt;
    SourceMod Version: 1.1.0.2489&lt;br /&gt;
    SourcePawn Engine: SourcePawn 1.1, jit-x86 (build 1.1.0-svn)&lt;br /&gt;
    SourcePawn API: v1 = 4, v2 = 2&lt;br /&gt;
    Compiled on: Sep  5 2008 02:02:12&lt;br /&gt;
    http://www.sourcemod.net/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lastly, assuming you have already setup your administration user, you can test the in game menu by joining the server, and in the client console type the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;sm_admin&amp;lt;/pre&amp;gt;&lt;br /&gt;
You should see a menu popup with all you options.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
If the install failed, you will generally see one of four symptoms.  &lt;br /&gt;
&lt;br /&gt;
==Metamod reports NOFILE or FAILED==&lt;br /&gt;
If &amp;quot;meta list&amp;quot; replies with something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;] meta list&lt;br /&gt;
-Id- Name                  Version     Author           Status  &lt;br /&gt;
[01] -                     -           -                NOFILE  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most likely, either the files are not located in the correct place, or the file could not be loaded.  For more information, use the following command (except use the correct list number):&lt;br /&gt;
&amp;lt;pre&amp;gt;meta list 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Metamod lists no plugins==&lt;br /&gt;
If &amp;quot;meta list&amp;quot; replies with something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;] meta list&lt;br /&gt;
-Id- Name                  Version     Author           Status  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You forgot to add SourceMod to the &amp;lt;tt&amp;gt;addons/metamod/metaplugins.ini&amp;lt;/tt&amp;gt; file.&lt;br /&gt;
Or if that doesn't fix your problem, make sure you are using the correct build of Sourcemod (zip = windows, tar = linux).&lt;br /&gt;
&lt;br /&gt;
==Metamod says nothing==&lt;br /&gt;
If &amp;quot;meta list&amp;quot; has no reply at all, Metamod:Source is not properly installed. [http://wiki.alliedmods.net/index.php/Installing_SourceMM This wiki page] may provide you with clues on how to solve this problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:SourceMod Documentation]]&lt;/div&gt;</summary>
		<author><name>LumiStance</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Installing_SourceMod&amp;diff=6852</id>
		<title>Installing SourceMod</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Installing_SourceMod&amp;diff=6852"/>
		<updated>2009-01-18T10:26:19Z</updated>

		<summary type="html">&lt;p&gt;LumiStance: /* Remote Server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Installing SourceMod is very simple, and it can be added with almost no configuration changes.&lt;br /&gt;
&lt;br /&gt;
=Prerequisites=&lt;br /&gt;
A GUI Web Browser to retrive Metamod and SourceMod compressed archives.&lt;br /&gt;
A tool to copy archive to your dedicated server host.&lt;br /&gt;
&lt;br /&gt;
SourceMod requires [[Metamod:Source]] 1.4.3 or higher. [http://www.metamodsource.net/ Click here] to visit the Metamod:Source homepage. Instructions to install SourceMM muanually can be found [http://wiki.alliedmods.net/index.php/Installing_Metamod:Source here].&lt;br /&gt;
&lt;br /&gt;
SourceMod will run on any mod built using the Source SDK.  It also supports &amp;quot;The Ship,&amp;quot; which uses the Source engine.&lt;br /&gt;
&lt;br /&gt;
=Uploading/Installing=&lt;br /&gt;
==Local Server==&lt;br /&gt;
To install SourceMod locally, simply extract the &amp;lt;tt&amp;gt;.zip&amp;lt;/tt&amp;gt; (Windows) or &amp;lt;tt&amp;gt;.tar.gz&amp;lt;/tt&amp;gt; (Linux) package to your mod folder (i.e. &amp;lt;tt&amp;gt;cstrike&amp;lt;/tt&amp;gt; for Counter-Strike, &amp;lt;tt&amp;gt;dod&amp;lt;/tt&amp;gt; for Day of Defeat, et cetera).&lt;br /&gt;
[http://www.sourcemod.net/downloads.php Download Here]&lt;br /&gt;
&lt;br /&gt;
==Remote Server==&lt;br /&gt;
To install SourceMod remotely, first extract the &amp;lt;tt&amp;gt;.zip&amp;lt;/tt&amp;gt; (Windows) or &amp;lt;tt&amp;gt;.tar.gz&amp;lt;/tt&amp;gt; (Linux) package to your local computer (for example, your Desktop).  You will see an &amp;lt;tt&amp;gt;addons&amp;lt;/tt&amp;gt; folder.  &lt;br /&gt;
&lt;br /&gt;
Using a tool such as [http://www.google.com/search?q=FTP FTP], locate your mod folder (i.e. &amp;lt;tt&amp;gt;cstrike&amp;lt;/tt&amp;gt; for Counter-Strike, &amp;lt;tt&amp;gt;dod&amp;lt;/tt&amp;gt; for Day of Defeat, et cetera).  Underneath this folder, you should have an &amp;lt;tt&amp;gt;addons&amp;lt;/tt&amp;gt; folder (if not, Metamod:Source is probably not installed).  From your local &amp;lt;tt&amp;gt;addons&amp;lt;/tt&amp;gt; folder, upload the entire contents to your remote &amp;lt;tt&amp;gt;addons&amp;lt;/tt&amp;gt; folder.  When done, your remote &amp;lt;tt&amp;gt;addons&amp;lt;/tt&amp;gt; folder should have a &amp;lt;tt&amp;gt;sourcemod&amp;lt;/tt&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
If you have trouble with these steps, you need to get acquainted with FTP and server management.  However, you can also ask your server provider for help.  Some providers also have web interfaces for managing your server.&lt;br /&gt;
&lt;br /&gt;
Alternatively, if you copied the tar.gz to your srcds directory, excute the following from the cstrike sub directory:&lt;br /&gt;
tar -xzf ../sourcemod-1.1.0.tar.gz&lt;br /&gt;
&lt;br /&gt;
=Checking the Install=&lt;br /&gt;
Your folder layout should look like:&lt;br /&gt;
*&amp;lt;tt&amp;gt;[mod]&amp;lt;/tt&amp;gt; - Your mod's folder&lt;br /&gt;
**&amp;lt;tt&amp;gt;addons&amp;lt;/tt&amp;gt;&lt;br /&gt;
***&amp;lt;tt&amp;gt;metamod&amp;lt;/tt&amp;gt; - Metamod:Source&lt;br /&gt;
***&amp;lt;tt&amp;gt;sourcemod&amp;lt;/tt&amp;gt; - SourceMod&lt;br /&gt;
&lt;br /&gt;
Once SourceMod is uploaded/copied and configured with Metamod:Source, restart your server completely.  If it is local, shut it down and restart it.  If it is remote, you may need to ask your server provider for help.  However, it is often safe to issue a &amp;quot;quit&amp;quot; command via [[rcon]], and most providers will automatically restart your server.&lt;br /&gt;
&lt;br /&gt;
First, in your [[server console]] (not client console), type:&lt;br /&gt;
&amp;lt;pre&amp;gt;meta list&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the install worked, you will see something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;] meta list&lt;br /&gt;
Listing 1 plugin:&lt;br /&gt;
    [01] SourceMod (1.1.0.2489) by AlliedModders LLC&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should then be able to use the SourceMod root console command, which can be invoked with simply:&lt;br /&gt;
&amp;lt;pre&amp;gt;sm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;] sm version&lt;br /&gt;
 SourceMod Version Information:&lt;br /&gt;
    SourceMod Version: 1.1.0.2489&lt;br /&gt;
    SourcePawn Engine: SourcePawn 1.1, jit-x86 (build 1.1.0-svn)&lt;br /&gt;
    SourcePawn API: v1 = 4, v2 = 2&lt;br /&gt;
    Compiled on: Sep  5 2008 02:02:12&lt;br /&gt;
    http://www.sourcemod.net/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lastly, assuming you have already setup your administration user, you can test the in game menu by joining the server, and in the client console type the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;sm_admin&amp;lt;/pre&amp;gt;&lt;br /&gt;
You should see a menu popup with all you options.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
If the install failed, you will generally see one of four symptoms.  &lt;br /&gt;
&lt;br /&gt;
==Metamod reports NOFILE or FAILED==&lt;br /&gt;
If &amp;quot;meta list&amp;quot; replies with something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;] meta list&lt;br /&gt;
-Id- Name                  Version     Author           Status  &lt;br /&gt;
[01] -                     -           -                NOFILE  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most likely, either the files are not located in the correct place, or the file could not be loaded.  For more information, use the following command (except use the correct list number):&lt;br /&gt;
&amp;lt;pre&amp;gt;meta list 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Metamod lists no plugins==&lt;br /&gt;
If &amp;quot;meta list&amp;quot; replies with something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;] meta list&lt;br /&gt;
-Id- Name                  Version     Author           Status  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You forgot to add SourceMod to the &amp;lt;tt&amp;gt;addons/metamod/metaplugins.ini&amp;lt;/tt&amp;gt; file.&lt;br /&gt;
Or if that doesn't fix your problem, make sure you are using the correct build of Sourcemod (zip = windows, tar = linux).&lt;br /&gt;
&lt;br /&gt;
==Metamod says nothing==&lt;br /&gt;
If &amp;quot;meta list&amp;quot; has no reply at all, Metamod:Source is not properly installed. [http://wiki.alliedmods.net/index.php/Installing_SourceMM This wiki page] may provide you with clues on how to solve this problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:SourceMod Documentation]]&lt;/div&gt;</summary>
		<author><name>LumiStance</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Installing_SourceMod&amp;diff=6851</id>
		<title>Installing SourceMod</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Installing_SourceMod&amp;diff=6851"/>
		<updated>2009-01-18T10:20:30Z</updated>

		<summary type="html">&lt;p&gt;LumiStance: Important download information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Installing SourceMod is very simple, and it can be added with almost no configuration changes.&lt;br /&gt;
&lt;br /&gt;
=Prerequisites=&lt;br /&gt;
A GUI Web Browser to retrive Metamod and SourceMod compressed archives.&lt;br /&gt;
A tool to copy archive to your dedicated server host.&lt;br /&gt;
&lt;br /&gt;
SourceMod requires [[Metamod:Source]] 1.4.3 or higher. [http://www.metamodsource.net/ Click here] to visit the Metamod:Source homepage. Instructions to install SourceMM muanually can be found [http://wiki.alliedmods.net/index.php/Installing_Metamod:Source here].&lt;br /&gt;
&lt;br /&gt;
SourceMod will run on any mod built using the Source SDK.  It also supports &amp;quot;The Ship,&amp;quot; which uses the Source engine.&lt;br /&gt;
&lt;br /&gt;
=Uploading/Installing=&lt;br /&gt;
==Local Server==&lt;br /&gt;
To install SourceMod locally, simply extract the &amp;lt;tt&amp;gt;.zip&amp;lt;/tt&amp;gt; (Windows) or &amp;lt;tt&amp;gt;.tar.gz&amp;lt;/tt&amp;gt; (Linux) package to your mod folder (i.e. &amp;lt;tt&amp;gt;cstrike&amp;lt;/tt&amp;gt; for Counter-Strike, &amp;lt;tt&amp;gt;dod&amp;lt;/tt&amp;gt; for Day of Defeat, et cetera).&lt;br /&gt;
[http://www.sourcemod.net/downloads.php Download Here]&lt;br /&gt;
&lt;br /&gt;
==Remote Server==&lt;br /&gt;
To install SourceMod remotely, first extract the &amp;lt;tt&amp;gt;.zip&amp;lt;/tt&amp;gt; (Windows) or &amp;lt;tt&amp;gt;.tar.gz&amp;lt;/tt&amp;gt; (Linux) package to your local computer (for example, your Desktop).  You will see an &amp;lt;tt&amp;gt;addons&amp;lt;/tt&amp;gt; folder.  &lt;br /&gt;
&lt;br /&gt;
Using a tool such as [http://www.google.com/search?q=FTP FTP], locate your mod folder (i.e. &amp;lt;tt&amp;gt;cstrike&amp;lt;/tt&amp;gt; for Counter-Strike, &amp;lt;tt&amp;gt;dod&amp;lt;/tt&amp;gt; for Day of Defeat, et cetera).  Underneath this folder, you should have an &amp;lt;tt&amp;gt;addons&amp;lt;/tt&amp;gt; folder (if not, Metamod:Source is probably not installed).  From your local &amp;lt;tt&amp;gt;addons&amp;lt;/tt&amp;gt; folder, upload the entire contents to your remote &amp;lt;tt&amp;gt;addons&amp;lt;/tt&amp;gt; folder.  When done, your remote &amp;lt;tt&amp;gt;addons&amp;lt;/tt&amp;gt; folder should have a &amp;lt;tt&amp;gt;sourcemod&amp;lt;/tt&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
If you have trouble with these steps, you need to get acquainted with FTP and server management.  However, you can also ask your server provider for help.  Some providers also have web interfaces for managing your server.&lt;br /&gt;
&lt;br /&gt;
=Checking the Install=&lt;br /&gt;
Your folder layout should look like:&lt;br /&gt;
*&amp;lt;tt&amp;gt;[mod]&amp;lt;/tt&amp;gt; - Your mod's folder&lt;br /&gt;
**&amp;lt;tt&amp;gt;addons&amp;lt;/tt&amp;gt;&lt;br /&gt;
***&amp;lt;tt&amp;gt;metamod&amp;lt;/tt&amp;gt; - Metamod:Source&lt;br /&gt;
***&amp;lt;tt&amp;gt;sourcemod&amp;lt;/tt&amp;gt; - SourceMod&lt;br /&gt;
&lt;br /&gt;
Once SourceMod is uploaded/copied and configured with Metamod:Source, restart your server completely.  If it is local, shut it down and restart it.  If it is remote, you may need to ask your server provider for help.  However, it is often safe to issue a &amp;quot;quit&amp;quot; command via [[rcon]], and most providers will automatically restart your server.&lt;br /&gt;
&lt;br /&gt;
First, in your [[server console]] (not client console), type:&lt;br /&gt;
&amp;lt;pre&amp;gt;meta list&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the install worked, you will see something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;] meta list&lt;br /&gt;
Listing 1 plugin:&lt;br /&gt;
    [01] SourceMod (1.1.0.2489) by AlliedModders LLC&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should then be able to use the SourceMod root console command, which can be invoked with simply:&lt;br /&gt;
&amp;lt;pre&amp;gt;sm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;] sm version&lt;br /&gt;
 SourceMod Version Information:&lt;br /&gt;
    SourceMod Version: 1.1.0.2489&lt;br /&gt;
    SourcePawn Engine: SourcePawn 1.1, jit-x86 (build 1.1.0-svn)&lt;br /&gt;
    SourcePawn API: v1 = 4, v2 = 2&lt;br /&gt;
    Compiled on: Sep  5 2008 02:02:12&lt;br /&gt;
    http://www.sourcemod.net/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lastly, assuming you have already setup your administration user, you can test the in game menu by joining the server, and in the client console type the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;sm_admin&amp;lt;/pre&amp;gt;&lt;br /&gt;
You should see a menu popup with all you options.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
If the install failed, you will generally see one of four symptoms.  &lt;br /&gt;
&lt;br /&gt;
==Metamod reports NOFILE or FAILED==&lt;br /&gt;
If &amp;quot;meta list&amp;quot; replies with something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;] meta list&lt;br /&gt;
-Id- Name                  Version     Author           Status  &lt;br /&gt;
[01] -                     -           -                NOFILE  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most likely, either the files are not located in the correct place, or the file could not be loaded.  For more information, use the following command (except use the correct list number):&lt;br /&gt;
&amp;lt;pre&amp;gt;meta list 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Metamod lists no plugins==&lt;br /&gt;
If &amp;quot;meta list&amp;quot; replies with something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;] meta list&lt;br /&gt;
-Id- Name                  Version     Author           Status  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You forgot to add SourceMod to the &amp;lt;tt&amp;gt;addons/metamod/metaplugins.ini&amp;lt;/tt&amp;gt; file.&lt;br /&gt;
Or if that doesn't fix your problem, make sure you are using the correct build of Sourcemod (zip = windows, tar = linux).&lt;br /&gt;
&lt;br /&gt;
==Metamod says nothing==&lt;br /&gt;
If &amp;quot;meta list&amp;quot; has no reply at all, Metamod:Source is not properly installed. [http://wiki.alliedmods.net/index.php/Installing_SourceMM This wiki page] may provide you with clues on how to solve this problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:SourceMod Documentation]]&lt;/div&gt;</summary>
		<author><name>LumiStance</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Installing_SourceMod&amp;diff=6850</id>
		<title>Installing SourceMod</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Installing_SourceMod&amp;diff=6850"/>
		<updated>2009-01-18T10:14:55Z</updated>

		<summary type="html">&lt;p&gt;LumiStance: Add link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Installing SourceMod is very simple, and it can be added with almost no configuration changes.&lt;br /&gt;
&lt;br /&gt;
=Prerequisites=&lt;br /&gt;
SourceMod requires [[Metamod:Source]] 1.4.3 or higher. [http://www.metamodsource.net/ Click here] to visit the Metamod:Source homepage. Instructions to install SourceMM muanually can be found [http://wiki.alliedmods.net/index.php/Installing_Metamod:Source here].&lt;br /&gt;
&lt;br /&gt;
SourceMod will run on any mod built using the Source SDK.  It also supports &amp;quot;The Ship,&amp;quot; which uses the Source engine.&lt;br /&gt;
&lt;br /&gt;
=Uploading/Installing=&lt;br /&gt;
==Local Server==&lt;br /&gt;
To install SourceMod locally, simply extract the &amp;lt;tt&amp;gt;.zip&amp;lt;/tt&amp;gt; (Windows) or &amp;lt;tt&amp;gt;.tar.gz&amp;lt;/tt&amp;gt; (Linux) package to your mod folder (i.e. &amp;lt;tt&amp;gt;cstrike&amp;lt;/tt&amp;gt; for Counter-Strike, &amp;lt;tt&amp;gt;dod&amp;lt;/tt&amp;gt; for Day of Defeat, et cetera).&lt;br /&gt;
[http://www.sourcemod.net/downloads.php Download Here]&lt;br /&gt;
&lt;br /&gt;
==Remote Server==&lt;br /&gt;
To install SourceMod remotely, first extract the &amp;lt;tt&amp;gt;.zip&amp;lt;/tt&amp;gt; (Windows) or &amp;lt;tt&amp;gt;.tar.gz&amp;lt;/tt&amp;gt; (Linux) package to your local computer (for example, your Desktop).  You will see an &amp;lt;tt&amp;gt;addons&amp;lt;/tt&amp;gt; folder.  &lt;br /&gt;
&lt;br /&gt;
Using a tool such as [http://www.google.com/search?q=FTP FTP], locate your mod folder (i.e. &amp;lt;tt&amp;gt;cstrike&amp;lt;/tt&amp;gt; for Counter-Strike, &amp;lt;tt&amp;gt;dod&amp;lt;/tt&amp;gt; for Day of Defeat, et cetera).  Underneath this folder, you should have an &amp;lt;tt&amp;gt;addons&amp;lt;/tt&amp;gt; folder (if not, Metamod:Source is probably not installed).  From your local &amp;lt;tt&amp;gt;addons&amp;lt;/tt&amp;gt; folder, upload the entire contents to your remote &amp;lt;tt&amp;gt;addons&amp;lt;/tt&amp;gt; folder.  When done, your remote &amp;lt;tt&amp;gt;addons&amp;lt;/tt&amp;gt; folder should have a &amp;lt;tt&amp;gt;sourcemod&amp;lt;/tt&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
If you have trouble with these steps, you need to get acquainted with FTP and server management.  However, you can also ask your server provider for help.  Some providers also have web interfaces for managing your server.&lt;br /&gt;
&lt;br /&gt;
=Checking the Install=&lt;br /&gt;
Your folder layout should look like:&lt;br /&gt;
*&amp;lt;tt&amp;gt;[mod]&amp;lt;/tt&amp;gt; - Your mod's folder&lt;br /&gt;
**&amp;lt;tt&amp;gt;addons&amp;lt;/tt&amp;gt;&lt;br /&gt;
***&amp;lt;tt&amp;gt;metamod&amp;lt;/tt&amp;gt; - Metamod:Source&lt;br /&gt;
***&amp;lt;tt&amp;gt;sourcemod&amp;lt;/tt&amp;gt; - SourceMod&lt;br /&gt;
&lt;br /&gt;
Once SourceMod is uploaded/copied and configured with Metamod:Source, restart your server completely.  If it is local, shut it down and restart it.  If it is remote, you may need to ask your server provider for help.  However, it is often safe to issue a &amp;quot;quit&amp;quot; command via [[rcon]], and most providers will automatically restart your server.&lt;br /&gt;
&lt;br /&gt;
First, in your [[server console]] (not client console), type:&lt;br /&gt;
&amp;lt;pre&amp;gt;meta list&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the install worked, you will see something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;] meta list&lt;br /&gt;
Listing 1 plugin:&lt;br /&gt;
    [01] SourceMod (1.1.0.2489) by AlliedModders LLC&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should then be able to use the SourceMod root console command, which can be invoked with simply:&lt;br /&gt;
&amp;lt;pre&amp;gt;sm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;] sm version&lt;br /&gt;
 SourceMod Version Information:&lt;br /&gt;
    SourceMod Version: 1.1.0.2489&lt;br /&gt;
    SourcePawn Engine: SourcePawn 1.1, jit-x86 (build 1.1.0-svn)&lt;br /&gt;
    SourcePawn API: v1 = 4, v2 = 2&lt;br /&gt;
    Compiled on: Sep  5 2008 02:02:12&lt;br /&gt;
    http://www.sourcemod.net/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lastly, assuming you have already setup your administration user, you can test the in game menu by joining the server, and in the client console type the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;sm_admin&amp;lt;/pre&amp;gt;&lt;br /&gt;
You should see a menu popup with all you options.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
If the install failed, you will generally see one of four symptoms.  &lt;br /&gt;
&lt;br /&gt;
==Metamod reports NOFILE or FAILED==&lt;br /&gt;
If &amp;quot;meta list&amp;quot; replies with something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;] meta list&lt;br /&gt;
-Id- Name                  Version     Author           Status  &lt;br /&gt;
[01] -                     -           -                NOFILE  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most likely, either the files are not located in the correct place, or the file could not be loaded.  For more information, use the following command (except use the correct list number):&lt;br /&gt;
&amp;lt;pre&amp;gt;meta list 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Metamod lists no plugins==&lt;br /&gt;
If &amp;quot;meta list&amp;quot; replies with something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;] meta list&lt;br /&gt;
-Id- Name                  Version     Author           Status  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You forgot to add SourceMod to the &amp;lt;tt&amp;gt;addons/metamod/metaplugins.ini&amp;lt;/tt&amp;gt; file.&lt;br /&gt;
Or if that doesn't fix your problem, make sure you are using the correct build of Sourcemod (zip = windows, tar = linux).&lt;br /&gt;
&lt;br /&gt;
==Metamod says nothing==&lt;br /&gt;
If &amp;quot;meta list&amp;quot; has no reply at all, Metamod:Source is not properly installed. [http://wiki.alliedmods.net/index.php/Installing_SourceMM This wiki page] may provide you with clues on how to solve this problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:SourceMod Documentation]]&lt;/div&gt;</summary>
		<author><name>LumiStance</name></author>
		
	</entry>
</feed>