<?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=Sslice</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=Sslice"/>
	<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/Special:Contributions/Sslice"/>
	<updated>2026-04-18T12:15:43Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.6</generator>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Cross_Compiling_Plugins_(Metamod:Source)&amp;diff=5659</id>
		<title>Cross Compiling Plugins (Metamod:Source)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Cross_Compiling_Plugins_(Metamod:Source)&amp;diff=5659"/>
		<updated>2008-03-14T05:24:59Z</updated>

		<summary type="html">&lt;p&gt;Sslice: /* Installing CrossTool */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
The aim of this tutorial is to allow Windows Half-Life 2 plugin coders to compile their plugins on the same machine as the windows binaries.&lt;br /&gt;
The binaries are compatible with 99% of all linux servers and do not suffer from bulky file sizes.&lt;br /&gt;
One of the main benefits to using this method of compiling is that your code can be left wherever you currently have it so that compile time reluctance is removed and coders can concentrate on coding the plugins instead of &amp;quot;How on earth am I to compile this for linux ???&amp;quot;.&lt;br /&gt;
All you need to get started are the base Cygwin installation, the CrossTool.tar.gz file and the makefile. Links to the latter two are included at the end of the tutorial.&lt;br /&gt;
&lt;br /&gt;
This tutorial assumes the following.&lt;br /&gt;
&amp;lt;OL&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;You currently have a plugin which you can compile on windows using MSVC.&lt;br /&gt;
&amp;lt;LI&amp;gt;You have a copy of the HL2SDK Source Code installed on your hard drive.&lt;br /&gt;
&amp;lt;LI&amp;gt;You have a copy of the [http://www.sourcemm.net Metamod:Source] source code on your hard drive.&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although the cross compiler will allow for compiling of Valves standard plugins, I do not include a Makefile or instructions on how to successfully accomplish this.&lt;br /&gt;
&lt;br /&gt;
==Installing Cygwin==&lt;br /&gt;
First, download CygWin from [http://www.cygwin.com www.CygWin.com] by clicking on &amp;quot;Install Now&amp;quot; located in the middle of the page.&lt;br /&gt;
&lt;br /&gt;
Once the download finishes, run &amp;lt;i&amp;gt;setup.exe&amp;lt;/i&amp;gt;&lt;br /&gt;
Click 'Next' on the introduction screen.&lt;br /&gt;
&lt;br /&gt;
On the second page, select 'Install from Internet'.&amp;lt;br&amp;gt;&lt;br /&gt;
The following page is all user preferances, except the 'Default Text File Type' which is recommended you use 'Unix / binary'.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
After clicking next, you are prompted for a CygWin temporary folder, any folder will suffice, the default is usually the better option.&amp;lt;br&amp;gt;&lt;br /&gt;
The next screen's options are firewall/proxy settings, these are specific to the Computer/Network you are currently using.&amp;lt;br&amp;gt;&lt;br /&gt;
Once you click next on the previous screen, the installer will download a list of mirror sites containing the CygWin binaries. Select one which you think is closest to you for a faster installation time.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Finaly, you are presented with a 'Select Packages' screen.&amp;lt;br&amp;gt;&lt;br /&gt;
I *think* it should work fine without all of the dev packages.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If anyone has gotten this to work by selecting less packages, please let me know so I can remove them from this list.&amp;lt;br&amp;gt;&lt;br /&gt;
Items marked in bold are extremely important.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*binutils&lt;br /&gt;
*&amp;lt;b&amp;gt;bzip2&amp;lt;/b&amp;gt;&lt;br /&gt;
*cygutils&lt;br /&gt;
*gcc&lt;br /&gt;
*&amp;lt;b&amp;gt;glib&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;gzip&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*libiconv&lt;br /&gt;
*&amp;lt;b&amp;gt;make&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;zlib&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;grep&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Click next and it should install the packages to the target path you specified.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing CrossTool==&lt;br /&gt;
Download the CrossCompiler from one of the mirrors below to the root cygwin folder &amp;lt;i&amp;gt;(c:\cygwin)&amp;lt;/i&amp;gt;.&lt;br /&gt;
If it gets renamed to 'crosstool_gcc-3.4.1.tar.tar' please rename it to 'crosstool_gcc-3.4.1.tar.gz'.&lt;br /&gt;
Download Mirrors for 'crosstool_gcc.tar.gz'&lt;br /&gt;
*[http://files.filefront.com/crosstool+gcc+341targz/;9813824;/fileinfo.html FileFront]&lt;br /&gt;
*[http://downloads.punkassfraggers.com/redirect.php?dlid=1224 PunkAssFraggers.com]&lt;br /&gt;
&lt;br /&gt;
This is the most important part of the entire tutorial.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Do not try and extract 'crosstool_gcc-3.4.1.tar.gz' using any Windows Archiving utility !&amp;lt;/b&amp;gt;&lt;br /&gt;
They do not extract the files correctly and if you don't get errors during the extraction, you will while trying to compile !&lt;br /&gt;
Once the download is complete, run cygwin by navigating to the cygwin root folder, and double clicking on &amp;lt;i&amp;gt;'cygwin.bat'&amp;lt;/i&amp;gt;.&lt;br /&gt;
Type the following two commands in order into the cygwin bash shell followed by the enter key:&lt;br /&gt;
&lt;br /&gt;
  cd /&lt;br /&gt;
  tar -xzf crosstool_gcc-3.4.1.tar.gz&lt;br /&gt;
&lt;br /&gt;
This will start extracting the tar file to the '&amp;lt;cygroot&amp;gt;/opt' folder on your hard drive.&lt;br /&gt;
And thats it, now you have the pre-compiled GCC 3.4.1 [http://www.lduke.com (Thanks LDuke)] installed on your computer you can compile server plugins for both regular and SourceMM flavours with ease and compatibility with Valves GCC 3.4.1 requirements.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compiling Plugins==&lt;br /&gt;
Download the Makefile by clicking on [http://www.c0ld.net/Tutorials/CrossTool/Makefile this link.]&lt;br /&gt;
&lt;br /&gt;
Save it to your project's root source folder and open it with a text editor like notepad.&amp;lt;br&amp;gt;&lt;br /&gt;
Inside the Makefile I have shown examples on how your paths are translated into unix/cygwin hybrid paths.&amp;lt;br&amp;gt;&lt;br /&gt;
So, before trying any compling just yet, you need to insert the paths for the following.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;HL2SDK&amp;lt;/b&amp;gt;: The path to where your HL2SDK files are located.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;SMM_ROOT&amp;lt;/b&amp;gt;: The path to where you extracted the contents of the [http://www.sourcemm.net/ SourceMM package]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;SRCDS&amp;lt;/b&amp;gt;: The path to the linux SRCDS binaries.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;PLUGIN&amp;lt;/b&amp;gt;: The plugin filename.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the convenience of those who don't have access to a Linux srcds installation, you can grab the files required at one of the mirrors below.&amp;lt;br&amp;gt;&lt;br /&gt;
Extract them to a new folder which will be your SRCDS path in the Makefile.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt;The bin folder must be inside the srcds folder for maximum compatibility. For example, your files end up being something like this 'C:\MyFiles\srcds_l\bin\vstdlib_i486.so'.&lt;br /&gt;
&lt;br /&gt;
So, in your Makefile, SRCDS would be '/cygdrive/c/MyFiles/srcds_l'&lt;br /&gt;
&lt;br /&gt;
Download Mirrors for 'srcds_l_binaries.zip'&lt;br /&gt;
*[http://files.filefront.com/srcds_l_binarieszip/;4651213;;/fileinfo.html FileFront Mirror]&lt;br /&gt;
*[http://rapidshare.de/files/11597264/srcds_l_binaries.zip.html RapidShare.de Mirror]&lt;br /&gt;
Now you're ready to try compiling.&lt;br /&gt;
Back to the cygwin bash window, and we're now going to have to navigate to your code's location.&lt;br /&gt;
An example path could be 'C:\MyCode\MyPlugin\' so in the bash shell we type the following:&lt;br /&gt;
&lt;br /&gt;
  cd /cygdrive/c/MyCode/MyPlugin/&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
If all your paths are set correctly, it should start compiling the plugin.&lt;br /&gt;
Ignore all the warnings in the HL2SDK, they are harmless.&lt;br /&gt;
What you should be looking out for are errors and warnings located inside your own code.&lt;br /&gt;
Unfortunately I cannot compile plugins for you, but there is a forum dedicated to helping you with hl2sdk coding problems.&lt;br /&gt;
&lt;br /&gt;
[http://forums.alliedmods.net/forumdisplay.php?f=75 Click here to visit the forum]&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
*Tutorial by: Jason &amp;quot;c0ldfyr3&amp;quot; Croghan&lt;br /&gt;
*Cross Compiler compiled by: L. Duke&lt;br /&gt;
*Makefile originally written by: David &amp;quot;BAILOPAN&amp;quot; Anderson&lt;br /&gt;
*Converted to Wiki by: James &amp;quot;sslice&amp;quot; Gray&lt;br /&gt;
&lt;br /&gt;
Original Location: http://www.c0ld.net/index.php?inc=CrossTool&lt;br /&gt;
&lt;br /&gt;
[[Category:Metamod:Source Development]]&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=User_talk:Sslice&amp;diff=4767</id>
		<title>User talk:Sslice</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=User_talk:Sslice&amp;diff=4767"/>
		<updated>2007-06-11T05:12:41Z</updated>

		<summary type="html">&lt;p&gt;Sslice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;hai i talkz to meselfs --[[User:Sslice|Sslice]] 00:12, 11 June 2007 (CDT)&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=User_talk:Sslice&amp;diff=4766</id>
		<title>User talk:Sslice</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=User_talk:Sslice&amp;diff=4766"/>
		<updated>2007-06-11T05:06:47Z</updated>

		<summary type="html">&lt;p&gt;Sslice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;hi lolz&lt;br /&gt;
&lt;br /&gt;
HAI&lt;br /&gt;
CAN HAS STDIO?&lt;br /&gt;
KTHXBYE&lt;br /&gt;
&lt;br /&gt;
-- NOES PLZ DIE&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=User:Sslice&amp;diff=4761</id>
		<title>User:Sslice</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=User:Sslice&amp;diff=4761"/>
		<updated>2007-06-11T05:03:42Z</updated>

		<summary type="html">&lt;p&gt;Sslice: /* sslice */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== sslice ==&lt;br /&gt;
*sslice is a mysterious entity who is cooler than [[User:L. Duke|L. Duke]]&lt;br /&gt;
*He develops this anti-cheat thing called [http://detox.steambans.com/ Detox Anti-Cheat]&lt;br /&gt;
*He is also fond of pleasantries such as lime and cheese.&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=User:Sslice&amp;diff=4760</id>
		<title>User:Sslice</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=User:Sslice&amp;diff=4760"/>
		<updated>2007-06-11T05:03:28Z</updated>

		<summary type="html">&lt;p&gt;Sslice: /* sslice */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== sslice ==&lt;br /&gt;
*sslice is a mysterious entity who is cooler than [[User:L. Duke|L. Duke]]&lt;br /&gt;
*He develops this anti-cheat thing called [http://detox.steambans.com/ Detox Anti-Cheat]&lt;br /&gt;
*He also is fond of pleasantries such as lime and cheese.&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=User:FlyingMongoose&amp;diff=4759</id>
		<title>User:FlyingMongoose</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=User:FlyingMongoose&amp;diff=4759"/>
		<updated>2007-06-11T05:02:19Z</updated>

		<summary type="html">&lt;p&gt;Sslice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A mysterious creature, the FlyingMongoose is seemingly like a wing-ed mongoose. It is frightened easily and often hides when trouble is about, and often dies from heart failure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Current projects ===&lt;br /&gt;
&lt;br /&gt;
[http://forums.alliedmods.net/showthread.php?t=55452 Advanced Team Attack Control a.k.a ATAC] - This plugin's title is self explanatory, it was preceded by [http://forums.alliedmods.net/showthread.php?t=53902 SpawnProtect] (no longer supported)&lt;br /&gt;
&lt;br /&gt;
[http://forums.alliedmods.net/showthread.php?t=53900 KnifeMug] - Originally created as an alternative to mattie's MugMod, this provides features from the knife mugging scripts in beetlesmod, mattie's mugmod, as well as it's own special knife mugging method.&lt;br /&gt;
&lt;br /&gt;
[http://www.sourcebans.net/ SourceBans] - The concept is a web based fully featured ban and admin management system for Source servers operating the SourceMod plugin, it includes a web-mange-able bans database as well as a web interface to the SourceMod admin SQL.&lt;br /&gt;
&lt;br /&gt;
[[User:FlyingMongoose|FlyingMongoose]] is part of the [http://www.gameconnect.net GameConnect] Development Team&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=User:Sslice&amp;diff=4758</id>
		<title>User:Sslice</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=User:Sslice&amp;diff=4758"/>
		<updated>2007-06-11T05:01:17Z</updated>

		<summary type="html">&lt;p&gt;Sslice: /* sslice */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== sslice ==&lt;br /&gt;
*sslice is a mysterious entity who is cooler than [[User:L. Duke|L. Duke]]&lt;br /&gt;
*He also develops this anti-cheat thing called [http://detox.steambans.com/ Detox Anti-Cheat]&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=User:Sslice&amp;diff=4757</id>
		<title>User:Sslice</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=User:Sslice&amp;diff=4757"/>
		<updated>2007-06-11T05:00:44Z</updated>

		<summary type="html">&lt;p&gt;Sslice: /* sslice */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== sslice ==&lt;br /&gt;
*sslice is a mysterious entity who is cooler than [[User:L. Duke|L. Duke]]&lt;br /&gt;
*He also develops this anti-cheat thing called [[Detox Anti-Cheat]http://detox.steambans.com/]&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=User:Sslice&amp;diff=4756</id>
		<title>User:Sslice</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=User:Sslice&amp;diff=4756"/>
		<updated>2007-06-11T05:00:29Z</updated>

		<summary type="html">&lt;p&gt;Sslice: /* sslice */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== sslice ==&lt;br /&gt;
*sslice is a mysterious entity who is cooler than [[User:L. Duke|L. Duke]]&lt;br /&gt;
*He also develops this anti-cheat thing called [Detox Anti-Cheat|http://detox.steambans.com/]&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=User:Sslice&amp;diff=4755</id>
		<title>User:Sslice</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=User:Sslice&amp;diff=4755"/>
		<updated>2007-06-11T04:59:51Z</updated>

		<summary type="html">&lt;p&gt;Sslice: /* sslice */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== sslice ==&lt;br /&gt;
*sslice is a mysterious entity who is cooler than [[User:L. Duke|L. Duke]] but sux compared to [[User:FlyingMongoose|FlyingMongoose]]&lt;br /&gt;
*He also develops this anti-cheat thing called [Detox Anti-Cheat|http://detox.steambans.com/]&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=User:Sslice&amp;diff=4754</id>
		<title>User:Sslice</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=User:Sslice&amp;diff=4754"/>
		<updated>2007-06-11T04:59:43Z</updated>

		<summary type="html">&lt;p&gt;Sslice: /* sslice */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== sslice ==&lt;br /&gt;
*sslice is a mysterious entity who is cooler than [[User:L. Duke|L. Duke]] but sux compared to [[User:FlyingMongoose|FlyingMongoose]]&lt;br /&gt;
*He also develops this anti-cheat thing called [Detox Anti-Cheat:http://detox.steambans.com/]&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=User_talk:L._Duke&amp;diff=4753</id>
		<title>User talk:L. Duke</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=User_talk:L._Duke&amp;diff=4753"/>
		<updated>2007-06-11T04:58:03Z</updated>

		<summary type="html">&lt;p&gt;Sslice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;gyarrrr! -- [[User:BAILOPAN|BAILOPAN]] 21:30, 21 January 2006 (EST)&lt;br /&gt;
:aaaarrr! -- [[User:L. Duke|L. Duke]] 23:44, 21 January 2006 (EST)&lt;br /&gt;
::i have spotted teh gaben! -- [[User:sslice|sslice]] 0:57, 10 August 2041 (EST)&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=User:Sslice&amp;diff=4751</id>
		<title>User:Sslice</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=User:Sslice&amp;diff=4751"/>
		<updated>2007-06-11T04:54:11Z</updated>

		<summary type="html">&lt;p&gt;Sslice: /* sslice */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== sslice ==&lt;br /&gt;
*sslice is a mysterious entity who is cooler than [[User:L. Duke|L. Duke]]&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=User_talk:Sslice&amp;diff=4750</id>
		<title>User talk:Sslice</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=User_talk:Sslice&amp;diff=4750"/>
		<updated>2007-06-11T04:53:50Z</updated>

		<summary type="html">&lt;p&gt;Sslice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;hi lolz&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=User_talk:Sslice&amp;diff=4749</id>
		<title>User talk:Sslice</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=User_talk:Sslice&amp;diff=4749"/>
		<updated>2007-06-11T04:53:40Z</updated>

		<summary type="html">&lt;p&gt;Sslice: Removing all content from page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=User:Sslice&amp;diff=4747</id>
		<title>User:Sslice</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=User:Sslice&amp;diff=4747"/>
		<updated>2007-06-11T04:53:05Z</updated>

		<summary type="html">&lt;p&gt;Sslice: /* sslice */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== sslice ==&lt;br /&gt;
*sslice is a mysterious entity who is cooler than L. Duke&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=User_talk:Sslice&amp;diff=4746</id>
		<title>User talk:Sslice</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=User_talk:Sslice&amp;diff=4746"/>
		<updated>2007-06-11T04:52:29Z</updated>

		<summary type="html">&lt;p&gt;Sslice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;hi lolz&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=User_talk:Sslice&amp;diff=4745</id>
		<title>User talk:Sslice</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=User_talk:Sslice&amp;diff=4745"/>
		<updated>2007-06-11T04:52:13Z</updated>

		<summary type="html">&lt;p&gt;Sslice: New page: noooooees&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;noooooees&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=User:L._Duke&amp;diff=4744</id>
		<title>User:L. Duke</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=User:L._Duke&amp;diff=4744"/>
		<updated>2007-06-11T04:51:28Z</updated>

		<summary type="html">&lt;p&gt;Sslice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About L. Duke ==&lt;br /&gt;
L. Duke is a gaben eater.&lt;br /&gt;
&lt;br /&gt;
== Current Projects ==&lt;br /&gt;
*[http://vipmod.punkassfraggers.com VIP Mod]&lt;br /&gt;
*[http://www.sourcemod.net/forums/viewtopic.php?t=2059 FakeClients]&lt;br /&gt;
*[http://www.sourcemod.net/forums/viewtopic.php?p=34892 CS:S Weapon Restrictions 2]&lt;br /&gt;
&lt;br /&gt;
== Home Page ==&lt;br /&gt;
*[http://www.lduke.com LDuke.com]&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=My_First_Script&amp;diff=4731</id>
		<title>My First Script</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=My_First_Script&amp;diff=4731"/>
		<updated>2007-06-09T02:38:33Z</updated>

		<summary type="html">&lt;p&gt;Sslice: /* Initialize */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Intro ==&lt;br /&gt;
This is a Hello World type plugin tutorial.  Every beginner should learn these first baby steps. The full code is at the bottom.  Now let's begin.&lt;br /&gt;
&lt;br /&gt;
== Includes ==&lt;br /&gt;
We first need to have our include file added.  This file is located in the addons/sourcemod/scripting/include/ .  Includes are your best friend.  They give you access to all functions Sourcemod and its Module Extensions allow! Note: This always goes at the top of the entire source code.&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
#include &amp;lt;sourcemod&amp;gt;&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Plugin Info ==&lt;br /&gt;
Next we give our information, so people who download know who made it and what version they have.&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
public Plugin:myinfo = {&lt;br /&gt;
	name = &amp;quot;Hello Gaben&amp;quot;,&lt;br /&gt;
	author = &amp;quot;AlliedModders, LLC&amp;quot;,&lt;br /&gt;
	description = &amp;quot;Hi&amp;quot;,&lt;br /&gt;
	version = &amp;quot;1.0&amp;quot;,&lt;br /&gt;
	url = &amp;quot;http://www.sourcemod.net/&amp;quot;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Initialize ==&lt;br /&gt;
This function will be used in nearly every plugin available.  It is your friend.  This runs one time when your plugin is loaded.  You will use it to register many of SourceMod's capabilities including Custom Console Commands, CVARs, Natives, and Forwards.&lt;br /&gt;
&lt;br /&gt;
Here I just ran a simple function I created to print a '''LogMessage''' to our log files in '''sourcemod/logs/''' folder.&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
public OnPluginStart() &lt;br /&gt;
{&lt;br /&gt;
	SayHello();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== My Function ==&lt;br /&gt;
Here is the function ran at OnPluginStart().  Very simple and it uses the '''LogMessage''' function located in '''sourcemod.inc'''.   &lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
//Print Message to LogFile&lt;br /&gt;
SayHello()&lt;br /&gt;
{&lt;br /&gt;
	LogMessage(&amp;quot;Hello Gaben | Time: %i&amp;quot;, GetTime()); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Sourcemod scripting has been extended in syntax compared to AMXX.  This allows for better organization.  However there is the learning curve of learning the syntax for each corresponding function or variable.  Study the includes in the scripting/includes folder and you should be fine.  All functions are in there so make them your friend!&lt;br /&gt;
&lt;br /&gt;
Here is the code used in its entirety.&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
/* Hello Gaben */&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;sourcemod&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public Plugin:myinfo = {&lt;br /&gt;
	name = &amp;quot;Hello Gaben&amp;quot;,&lt;br /&gt;
	author = &amp;quot;AlliedModders, LLC&amp;quot;,&lt;br /&gt;
	description = &amp;quot;Hi&amp;quot;,&lt;br /&gt;
	version = &amp;quot;1.0&amp;quot;,&lt;br /&gt;
	url = &amp;quot;http://www.sourcemod.net/&amp;quot;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
public OnPluginStart() &lt;br /&gt;
{&lt;br /&gt;
	SayHello();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
SayHello()&lt;br /&gt;
{&lt;br /&gt;
	LogMessage(&amp;quot;Hello Gaben | Time: %i&amp;quot;, GetTime()); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SourceMod Scripting]]&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Game_Events_(Source)&amp;diff=4626</id>
		<title>Game Events (Source)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Game_Events_(Source)&amp;diff=4626"/>
		<updated>2007-06-08T05:20:57Z</updated>

		<summary type="html">&lt;p&gt;Sslice: /* player_activate */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Half-Life 2 Events =&lt;br /&gt;
&lt;br /&gt;
=== team_info ===&lt;br /&gt;
{{qnotice|Info about team}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{begin-hl2msg|team_info|string}}&lt;br /&gt;
{{hl2msg|byte|teamid}}&lt;br /&gt;
{{hl2msg|string|teamname}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== team_score ===&lt;br /&gt;
{{qnotice|Team score changed}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{begin-hl2msg|team_info|string}}&lt;br /&gt;
{{hl2msg|byte|teamid}}&lt;br /&gt;
{{hl2msg|short|score}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_team ===&lt;br /&gt;
{{qnotice|Player change his team}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{begin-hl2msg|player_team|string}}&lt;br /&gt;
{{hl2msg|short|userid}}&lt;br /&gt;
{{hl2msg|byte|team}}&lt;br /&gt;
{{hl2msg|byte|oldteam}}&lt;br /&gt;
{{hl2msg|bool|disconnect}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_class ===&lt;br /&gt;
{{qnotice|A player changed his class}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{begin-hl2msg|player_class|string}}&lt;br /&gt;
{{hl2msg|short|userid}}&lt;br /&gt;
{{hl2msg|string|class}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_death ===&lt;br /&gt;
{{qnotice|A game event, name may be 32 charaters long}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{begin-hl2msg|player_death|string}}&lt;br /&gt;
{{hl2msg|short|userid}}&lt;br /&gt;
{{hl2msg|short|attacker}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_hurt ===&lt;br /&gt;
{{qnotice|A player was hurt}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{begin-hl2msg|player_hurt|string}}&lt;br /&gt;
{{hl2msg|short|userid}}&lt;br /&gt;
{{hl2msg|short|attacker}}&lt;br /&gt;
{{hl2msg|byte|health}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_chat ===&lt;br /&gt;
{{qnotice|A public player chat}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{begin-hl2msg|player_chat|string}}&lt;br /&gt;
{{hl2msg|bool|teamonly}}&lt;br /&gt;
{{hl2msg|short|userid}}&lt;br /&gt;
{{hl2msg|string|text}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_score ===&lt;br /&gt;
{{qnotice|Players scores changed}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{begin-hl2msg|player_score|string}}&lt;br /&gt;
{{hl2msg|short|userid}}&lt;br /&gt;
{{hl2msg|short|kills}}&lt;br /&gt;
{{hl2msg|short|deaths}}&lt;br /&gt;
{{hl2msg|short|score}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_spawn ===&lt;br /&gt;
{{qnotice|player spawned in game}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{begin-hl2msg|player_score|string}}&lt;br /&gt;
{{hl2msg|short|userid}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_shoot ===&lt;br /&gt;
{{qnotice|Player shoot his weapon}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{begin-hl2msg|player_shoot|string}}&lt;br /&gt;
{{hl2msg|short|userid}}&lt;br /&gt;
{{hl2msg|byte|weapon}}&lt;br /&gt;
{{hl2msg|byte|mode}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_use ===&lt;br /&gt;
{{qnotice|When a player uses an option}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{begin-hl2msg|player_use|string}}&lt;br /&gt;
{{hl2msg|short|userid}}&lt;br /&gt;
{{hl2msg|short|entity}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_changename ===&lt;br /&gt;
{{qnotice|Player changed name}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{begin-hl2msg|player_changename|string}}&lt;br /&gt;
{{hl2msg|string|userid}}&lt;br /&gt;
{{hl2msg|string|oldname}}&lt;br /&gt;
{{hl2msg|string|newname}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== game_newmap ===&lt;br /&gt;
{{qnotice|Send when new map is completely loaded}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{begin-hl2msg|game_newmap|string}}&lt;br /&gt;
{{hl2msg|string|mapname}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== game_start ===&lt;br /&gt;
{{qnotice|A new game starts}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{begin-hl2msg|game_start|string}}&lt;br /&gt;
{{hl2msg|long|roundslimit}}&lt;br /&gt;
{{hl2msg|long|timelimit}}&lt;br /&gt;
{{hl2msg|long|fraglimit}}&lt;br /&gt;
{{hl2msg|string|objective}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== game_end ===&lt;br /&gt;
{{qnotice|A game ended}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{begin-hl2msg|game_end|string}}&lt;br /&gt;
{{hl2msg|byte|winner}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== round_start ===&lt;br /&gt;
{{qnotice|The round started}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{begin-hl2msg|player_changename|string}}&lt;br /&gt;
{{hl2msg|long|timelimit}}&lt;br /&gt;
{{hl2msg|long|fraglimit}}&lt;br /&gt;
{{hl2msg|string|objective}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== round_end ===&lt;br /&gt;
{{qnotice|The round ended}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{begin-hl2msg|round_end|string}}&lt;br /&gt;
{{hl2msg|byte|winner}}&lt;br /&gt;
{{hl2msg|byte|reason}}&lt;br /&gt;
{{hl2msg|string|message}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== game_message ===&lt;br /&gt;
{{qnotice|A game message}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{begin-hl2msg|game_message|string}}&lt;br /&gt;
{{hl2msg|byte|target}}&lt;br /&gt;
{{hl2msg|string|text}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== break_breakable ===&lt;br /&gt;
{{qnotice|A breakable is broken.}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{begin-hl2msg|break_breakable|string}}&lt;br /&gt;
{{hl2msg|long|entindex}}&lt;br /&gt;
{{hl2msg|short|userid}}&lt;br /&gt;
{{hl2msg|byte|material}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== break_prop ===&lt;br /&gt;
{{qnotice|A breakable prop is broken.}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{begin-hl2msg|break_prop|string}}&lt;br /&gt;
{{hl2msg|long|entindex}}&lt;br /&gt;
{{hl2msg|short|userid}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
= Half-Life 2 Server Events =&lt;br /&gt;
=== server_spawn ===&lt;br /&gt;
{{qnotice|Send once a server starts}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{begin-hl2msg|server_start|string}}&lt;br /&gt;
{{hl2msg|string|hostname}}&lt;br /&gt;
{{hl2msg|string|address}}&lt;br /&gt;
{{hl2msg|string|port}}&lt;br /&gt;
{{hl2msg|string|game}}&lt;br /&gt;
{{hl2msg|string|mapname}}&lt;br /&gt;
{{hl2msg|long|maxplayers}}&lt;br /&gt;
{{hl2msg|string|os}}&lt;br /&gt;
{{hl2msg|bool|dedicated}}&lt;br /&gt;
{{hl2msg|bool|password}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== server_shutdown ===&lt;br /&gt;
{{qnotice|Server shut down}}&lt;br /&gt;
{{begin-hl2msg|server_shutdown|string}}&lt;br /&gt;
{{hl2msg|string|reason}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== server_cvar ===&lt;br /&gt;
{{qnotice|A server console var has changed}}&lt;br /&gt;
{{begin-hl2msg|server_cvar|string}}&lt;br /&gt;
{{hl2msg|string|cvarname}}&lt;br /&gt;
{{hl2msg|string|cvarvalue}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== server_msg ===&lt;br /&gt;
{{qnotice|A generic server message}}&lt;br /&gt;
{{begin-hl2msg|server_message|string}}&lt;br /&gt;
{{hl2msg|string|text}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== server_addban ===&lt;br /&gt;
{{qnotice|When the server has a ban added}}&lt;br /&gt;
{{begin-hl2msg|server_addban|string}}&lt;br /&gt;
{{hl2msg|string|name}}&lt;br /&gt;
{{hl2msg|string|userid}}&lt;br /&gt;
{{hl2msg|string|networkid}}&lt;br /&gt;
{{hl2msg|string|ip}}&lt;br /&gt;
{{hl2msg|string|duration}}&lt;br /&gt;
{{hl2msg|string|by}}&lt;br /&gt;
{{hl2msg|bool|kicked}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== server_removeban ===&lt;br /&gt;
{{qnotice|When the server has a ban removed}}&lt;br /&gt;
{{begin-hl2msg|server_removeban|string}}&lt;br /&gt;
{{hl2msg|string|networkid}}&lt;br /&gt;
{{hl2msg|string|ip}}&lt;br /&gt;
{{hl2msg|stsring|by}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_connect ===&lt;br /&gt;
{{qnotice|A new player connected}}&lt;br /&gt;
{{begin-hl2msg|player_connect|string}}&lt;br /&gt;
{{hl2msg|string|name}}&lt;br /&gt;
{{hl2msg|byte|index}}&lt;br /&gt;
{{hl2msg|short|userid}}&lt;br /&gt;
{{hl2msg|string|networkid}}&lt;br /&gt;
{{hl2msg|string|address}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_info ===&lt;br /&gt;
{{qnotice|A player changed his name}}&lt;br /&gt;
{{begin-hl2msg|player_info|string}}&lt;br /&gt;
{{hl2msg|string|name}}&lt;br /&gt;
{{hl2msg|byte|index}}&lt;br /&gt;
{{hl2msg|short|userid}}&lt;br /&gt;
{{hl2msg|string|networkid}}&lt;br /&gt;
{{hl2msg|bool|bot}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_disconnect ===&lt;br /&gt;
{{qnotice|A client was disconnected}}&lt;br /&gt;
{{begin-hl2msg|player_disconnect|string}}&lt;br /&gt;
{{hl2msg|short|userid}}&lt;br /&gt;
{{hl2msg|string|reason}}&lt;br /&gt;
{{hl2msg|string|name}}&lt;br /&gt;
{{hl2msg|string|networkid}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_activate ===&lt;br /&gt;
{{qnotice|''A client has entered the game (connected and loaded)''}}&lt;br /&gt;
{{begin-hl2msg|player_activate|string}}&lt;br /&gt;
{{hl2msg|short|userid}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_say ===&lt;br /&gt;
{{qnotice|When a client sends a message in chat}}&lt;br /&gt;
{{begin-hl2msg|player_say|string}}&lt;br /&gt;
{{hl2msg|short|userid}}&lt;br /&gt;
{{hl2msg|string|text}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
= Counter-Strike: Source Events =&lt;br /&gt;
=== player_death ===&lt;br /&gt;
{{qnotice|When a client dies}}&lt;br /&gt;
{{begin-hl2msg|player_death|string}}&lt;br /&gt;
{{hl2msg|short|userid}}&lt;br /&gt;
{{hl2msg|short|attacker}}&lt;br /&gt;
{{hl2msg|string|weapon}}&lt;br /&gt;
{{hl2msg|bool|headshot}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_hurt ===&lt;br /&gt;
{{qnotice|When a client is damaged}}&lt;br /&gt;
{{begin-hl2msg|player_hurt|string}}&lt;br /&gt;
{{hl2msg|short|userid}}&lt;br /&gt;
{{hl2msg|short|attacker}}&lt;br /&gt;
{{hl2msg|byte|health}}&lt;br /&gt;
{{hl2msg|byte|armor}}&lt;br /&gt;
{{hl2msg|string|weapon}}&lt;br /&gt;
{{hl2msg|byte|dmg_health}}&lt;br /&gt;
{{hl2msg|byte|dmg_armor}}&lt;br /&gt;
{{hl2msg|byte|hitgroup}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_beginplant ===&lt;br /&gt;
{{qnotice|When the bomb is starting to get planted}}&lt;br /&gt;
{{begin-hl2msg|bomb_beginplant|string}}&lt;br /&gt;
{{hl2msg|short|userid}}&lt;br /&gt;
{{hl2msg|short|site}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_abortplant ===&lt;br /&gt;
{{qnotice|When the bomb planter stops planting the bomb}}&lt;br /&gt;
{{begin-hl2msg|bomb_abortplant|string}}&lt;br /&gt;
{{hl2msg|short|userid}}&lt;br /&gt;
{{hl2msg|short|site}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_plant ===&lt;br /&gt;
{{qnotice|When the bomb has been planted}}&lt;br /&gt;
{{begin-hl2msg|bomb_planted|string}}&lt;br /&gt;
{{hl2msg|short|userid}}&lt;br /&gt;
{{hl2msg|short|site}}&lt;br /&gt;
{{hl2msg|short|posx}}&lt;br /&gt;
{{hl2msg|short|posy}}&lt;br /&gt;
{{end-hl2msg}}&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Open_Source_Plugins_for_Metamod:Source&amp;diff=3443</id>
		<title>Open Source Plugins for Metamod:Source</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Open_Source_Plugins_for_Metamod:Source&amp;diff=3443"/>
		<updated>2006-10-20T01:59:56Z</updated>

		<summary type="html">&lt;p&gt;Sslice: /* IRC Relay */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Open Source Plugins for SourceMM =&lt;br /&gt;
This page lists known plugins with available source code. Please check the licenses for each one as they may not truly be &amp;quot;open source.&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Basic Templates ==&lt;br /&gt;
=== stub_mm ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:BAILOPAN|BAILOPAN]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; minmum implentation of a valid SourceMM plugin&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; starting template&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; Included in the SourceMM source code package: [http://www.sourcemm.net www.sourcemm.net]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sample_mm ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:BAILOPAN|BAILOPAN]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; implements the features of the standard Valve server plugin from the SDK&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; starting template with similar functionality to the Valve sample_plugin&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; Included in the SourceMM source code package: [http://www.sourcemm.net www.sourcemm.net]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sample2_mm ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:BAILOPAN|BAILOPAN]], edited by [[User:L._Duke|L. Duke]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; fixes (by inheriting from IGameEventListener2 instead of hooking FireGameEvent) the problem in sample_mm plugin where some events are not received&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; starting template with similar functionality to the Valve sample_plugin&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download: &amp;lt;/b&amp;gt;[http://forums.alliedmods.net/showthread.php?p=342749 forums.alliedmods.net/showthread.php?p=342749] (you must be logged in to view the download link) &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Functional Plugins ==&lt;br /&gt;
=== Anti-Griefer ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:devicenull|devicenull]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; This plugin is for the mod SourceForts.  In keeps track of what player unfreezes or freezes a block, and allows any other player to retrieve this information by aiming at a block.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; Basic VFuncs, listening for events, partial traceline (The method used for traceline might not be effective for any other mod)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://www.sourcemod.net/forums/viewtopic.php?t=3652 http://www.sourcemod.net/forums/viewtopic.php?t=3652]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Basic Admin Tool (BAT) ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:EKS|EKS]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; Provides basic admin functions&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; Kick, ban, menus, reserved slots, timeleft/nextmap say commands, and more&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://www.sourcemod.net/forums/viewtopic.php?t=2923 www.sourcemod.net/forums/viewtopic.php?t=2923]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Counter Strike Bot Control ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:EKS|EKS]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; This plugin allows you to control the counter strike source bots more easly, you can have them them automaticly keep the server populated. You can have bots automaticly killed when all the human players are dead, and any changes can be made in the bot menu.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; Control the built in bots in CSS via a menu&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://forums.alliedmods.net/showthread.php?t=40097 http://forums.alliedmods.net/showthread.php?t=40097]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CS:S Weapon Restrictions 2 ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:L._Duke|L. Duke]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; Prevents players from picking up restricted weapons (if bought, they fall to the ground). Also includes an option to remove restricted weapons from the game.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; Hook &amp;lt;i&amp;gt;CCSPlayer::Weapon_CanUse(CBaseCombatWeapon *pWeapon)&amp;lt;/i&amp;gt; and returns false for restricted weapons. Also shows how to use virtual functions on weapons such as Delete()and GetName() and on players for Weapon_GetSlot(int) and Drop(CBaseCombatWeapon*).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://forums.alliedmods.net/showthread.php?p=342750 forums.alliedmods.net/showthread.php?p=342750]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== ForgiveTK ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:EKS|EKS]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; This is a basic plugin to handle teamkilll and teamattack on your source server, it supports any Source mod. It will automaticly kick someone with to many offenses &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; Forgive via menu or chat. Support both Valves ESC menus and radio menus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://www.sourcemod.net/forums/viewtopic.php?t=3081 http://www.sourcemod.net/forums/viewtopic.php?t=3081]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Global Banlist===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:devicenull|devicenull]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; This plugin allows srcds to reguarly connect to an external PHP page, and download updates about it's banlist.  Srcds then stores these in a SQLite database. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; Embedding sqlite, using pthreads, using libcurl.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://www.sourcemod.net/forums/viewtopic.php?t=3539 http://www.sourcemod.net/forums/viewtopic.php?t=3539]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== HLStatsX ( Allows srcds to interact with hlstatsx ingame) ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:EKS|EKS]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; This plugin is made to interact with hlstatsx ( www.hlstatsx.org ) to give proper ingame stats, and provide the extra logging required for hit detection&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://forums.alliedmods.net/showthread.php?t=42502 http://forums.alliedmods.net/showthread.php?t=42502]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== IRC Relay ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:sslice|sslice]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; Reports game events to an IRC channel and allows you to administrate your server from IRC&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; ConCommand hooks and general networking using asynchronous sockets&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://forums.alliedmods.net/showthread.php?t=39395 AlliedModders] or [http://www.tcmagazine.info/modules.php?modname=custompage&amp;amp;name=ircrelay&amp;amp;catid=4 Gameconnect]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Last Users Connected ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:devicenull|devicenull]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; With this plugin, every player who comes onto your server has their steamid logged, along with any name they used on the server. You can then either view the names/steamid's of the last people to disconnect, or you can search for a name/steamid and see everyone who has used that name. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; shows how to embed sqlite3, send basic messages/basic hooks. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://www.sourcemod.net/forums/viewtopic.php?t=3339 http://www.sourcemod.net/forums/viewtopic.php?t=3339]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Stripper:Source ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:BAILOPAN|BAILOPAN]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;  You can add any type of entity - hostage, spawn point, physics prop, permanently to the map. You can also filter out entities for deletion, either by specific entries or regular expressions. Stripper:Source lets you define global rules and per-map rules. It also lets other plugins (both SourceMM plugins and Server Plugins) use its API. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; shows how to edit the map entity lump in memory to change map entities&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://www.sourcemod.net/forums/viewtopic.php?t=3008 www.sourcemod.net/forums/viewtopic.php?t=3008]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Category:Documentation (SourceMM)]]&lt;br /&gt;
&lt;br /&gt;
= Open Source Valve Server Plugins (VSP) =&lt;br /&gt;
A list of open source plugins for the Valve Server Plugin (VSP) interface can be found [http://developer.valvesoftware.com/wiki/List_of_Open_Source_Server_Plugins here].&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Open_Source_Plugins_for_Metamod:Source&amp;diff=3442</id>
		<title>Open Source Plugins for Metamod:Source</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Open_Source_Plugins_for_Metamod:Source&amp;diff=3442"/>
		<updated>2006-10-20T01:59:15Z</updated>

		<summary type="html">&lt;p&gt;Sslice: /* IRC Relay */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Open Source Plugins for SourceMM =&lt;br /&gt;
This page lists known plugins with available source code. Please check the licenses for each one as they may not truly be &amp;quot;open source.&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Basic Templates ==&lt;br /&gt;
=== stub_mm ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:BAILOPAN|BAILOPAN]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; minmum implentation of a valid SourceMM plugin&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; starting template&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; Included in the SourceMM source code package: [http://www.sourcemm.net www.sourcemm.net]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sample_mm ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:BAILOPAN|BAILOPAN]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; implements the features of the standard Valve server plugin from the SDK&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; starting template with similar functionality to the Valve sample_plugin&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; Included in the SourceMM source code package: [http://www.sourcemm.net www.sourcemm.net]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sample2_mm ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:BAILOPAN|BAILOPAN]], edited by [[User:L._Duke|L. Duke]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; fixes (by inheriting from IGameEventListener2 instead of hooking FireGameEvent) the problem in sample_mm plugin where some events are not received&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; starting template with similar functionality to the Valve sample_plugin&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download: &amp;lt;/b&amp;gt;[http://forums.alliedmods.net/showthread.php?p=342749 forums.alliedmods.net/showthread.php?p=342749] (you must be logged in to view the download link) &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Functional Plugins ==&lt;br /&gt;
=== Anti-Griefer ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:devicenull|devicenull]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; This plugin is for the mod SourceForts.  In keeps track of what player unfreezes or freezes a block, and allows any other player to retrieve this information by aiming at a block.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; Basic VFuncs, listening for events, partial traceline (The method used for traceline might not be effective for any other mod)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://www.sourcemod.net/forums/viewtopic.php?t=3652 http://www.sourcemod.net/forums/viewtopic.php?t=3652]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Basic Admin Tool (BAT) ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:EKS|EKS]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; Provides basic admin functions&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; Kick, ban, menus, reserved slots, timeleft/nextmap say commands, and more&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://www.sourcemod.net/forums/viewtopic.php?t=2923 www.sourcemod.net/forums/viewtopic.php?t=2923]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Counter Strike Bot Control ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:EKS|EKS]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; This plugin allows you to control the counter strike source bots more easly, you can have them them automaticly keep the server populated. You can have bots automaticly killed when all the human players are dead, and any changes can be made in the bot menu.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; Control the built in bots in CSS via a menu&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://forums.alliedmods.net/showthread.php?t=40097 http://forums.alliedmods.net/showthread.php?t=40097]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CS:S Weapon Restrictions 2 ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:L._Duke|L. Duke]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; Prevents players from picking up restricted weapons (if bought, they fall to the ground). Also includes an option to remove restricted weapons from the game.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; Hook &amp;lt;i&amp;gt;CCSPlayer::Weapon_CanUse(CBaseCombatWeapon *pWeapon)&amp;lt;/i&amp;gt; and returns false for restricted weapons. Also shows how to use virtual functions on weapons such as Delete()and GetName() and on players for Weapon_GetSlot(int) and Drop(CBaseCombatWeapon*).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://forums.alliedmods.net/showthread.php?p=342750 forums.alliedmods.net/showthread.php?p=342750]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== ForgiveTK ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:EKS|EKS]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; This is a basic plugin to handle teamkilll and teamattack on your source server, it supports any Source mod. It will automaticly kick someone with to many offenses &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; Forgive via menu or chat. Support both Valves ESC menus and radio menus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://www.sourcemod.net/forums/viewtopic.php?t=3081 http://www.sourcemod.net/forums/viewtopic.php?t=3081]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Global Banlist===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:devicenull|devicenull]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; This plugin allows srcds to reguarly connect to an external PHP page, and download updates about it's banlist.  Srcds then stores these in a SQLite database. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; Embedding sqlite, using pthreads, using libcurl.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://www.sourcemod.net/forums/viewtopic.php?t=3539 http://www.sourcemod.net/forums/viewtopic.php?t=3539]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== HLStatsX ( Allows srcds to interact with hlstatsx ingame) ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:EKS|EKS]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; This plugin is made to interact with hlstatsx ( www.hlstatsx.org ) to give proper ingame stats, and provide the extra logging required for hit detection&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://forums.alliedmods.net/showthread.php?t=42502 http://forums.alliedmods.net/showthread.php?t=42502]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== IRC Relay ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:sslice|sslice]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; Reports game events to an IRC channel and allows you to administrate your server from IRC&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; ConCommand hooks and asynchronous networking using sockets&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://forums.alliedmods.net/showthread.php?t=39395 AlliedModders] or [http://www.tcmagazine.info/modules.php?modname=custompage&amp;amp;name=ircrelay&amp;amp;catid=4 Gameconnect]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Last Users Connected ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:devicenull|devicenull]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; With this plugin, every player who comes onto your server has their steamid logged, along with any name they used on the server. You can then either view the names/steamid's of the last people to disconnect, or you can search for a name/steamid and see everyone who has used that name. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; shows how to embed sqlite3, send basic messages/basic hooks. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://www.sourcemod.net/forums/viewtopic.php?t=3339 http://www.sourcemod.net/forums/viewtopic.php?t=3339]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Stripper:Source ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:BAILOPAN|BAILOPAN]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;  You can add any type of entity - hostage, spawn point, physics prop, permanently to the map. You can also filter out entities for deletion, either by specific entries or regular expressions. Stripper:Source lets you define global rules and per-map rules. It also lets other plugins (both SourceMM plugins and Server Plugins) use its API. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; shows how to edit the map entity lump in memory to change map entities&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://www.sourcemod.net/forums/viewtopic.php?t=3008 www.sourcemod.net/forums/viewtopic.php?t=3008]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Category:Documentation (SourceMM)]]&lt;br /&gt;
&lt;br /&gt;
= Open Source Valve Server Plugins (VSP) =&lt;br /&gt;
A list of open source plugins for the Valve Server Plugin (VSP) interface can be found [http://developer.valvesoftware.com/wiki/List_of_Open_Source_Server_Plugins here].&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Open_Source_Plugins_for_Metamod:Source&amp;diff=3441</id>
		<title>Open Source Plugins for Metamod:Source</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Open_Source_Plugins_for_Metamod:Source&amp;diff=3441"/>
		<updated>2006-10-20T01:58:36Z</updated>

		<summary type="html">&lt;p&gt;Sslice: /* IRC Relay */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Open Source Plugins for SourceMM =&lt;br /&gt;
This page lists known plugins with available source code. Please check the licenses for each one as they may not truly be &amp;quot;open source.&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Basic Templates ==&lt;br /&gt;
=== stub_mm ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:BAILOPAN|BAILOPAN]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; minmum implentation of a valid SourceMM plugin&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; starting template&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; Included in the SourceMM source code package: [http://www.sourcemm.net www.sourcemm.net]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sample_mm ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:BAILOPAN|BAILOPAN]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; implements the features of the standard Valve server plugin from the SDK&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; starting template with similar functionality to the Valve sample_plugin&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; Included in the SourceMM source code package: [http://www.sourcemm.net www.sourcemm.net]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sample2_mm ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:BAILOPAN|BAILOPAN]], edited by [[User:L._Duke|L. Duke]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; fixes (by inheriting from IGameEventListener2 instead of hooking FireGameEvent) the problem in sample_mm plugin where some events are not received&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; starting template with similar functionality to the Valve sample_plugin&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download: &amp;lt;/b&amp;gt;[http://forums.alliedmods.net/showthread.php?p=342749 forums.alliedmods.net/showthread.php?p=342749] (you must be logged in to view the download link) &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Functional Plugins ==&lt;br /&gt;
=== Anti-Griefer ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:devicenull|devicenull]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; This plugin is for the mod SourceForts.  In keeps track of what player unfreezes or freezes a block, and allows any other player to retrieve this information by aiming at a block.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; Basic VFuncs, listening for events, partial traceline (The method used for traceline might not be effective for any other mod)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://www.sourcemod.net/forums/viewtopic.php?t=3652 http://www.sourcemod.net/forums/viewtopic.php?t=3652]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Basic Admin Tool (BAT) ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:EKS|EKS]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; Provides basic admin functions&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; Kick, ban, menus, reserved slots, timeleft/nextmap say commands, and more&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://www.sourcemod.net/forums/viewtopic.php?t=2923 www.sourcemod.net/forums/viewtopic.php?t=2923]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Counter Strike Bot Control ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:EKS|EKS]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; This plugin allows you to control the counter strike source bots more easly, you can have them them automaticly keep the server populated. You can have bots automaticly killed when all the human players are dead, and any changes can be made in the bot menu.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; Control the built in bots in CSS via a menu&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://forums.alliedmods.net/showthread.php?t=40097 http://forums.alliedmods.net/showthread.php?t=40097]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CS:S Weapon Restrictions 2 ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:L._Duke|L. Duke]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; Prevents players from picking up restricted weapons (if bought, they fall to the ground). Also includes an option to remove restricted weapons from the game.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; Hook &amp;lt;i&amp;gt;CCSPlayer::Weapon_CanUse(CBaseCombatWeapon *pWeapon)&amp;lt;/i&amp;gt; and returns false for restricted weapons. Also shows how to use virtual functions on weapons such as Delete()and GetName() and on players for Weapon_GetSlot(int) and Drop(CBaseCombatWeapon*).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://forums.alliedmods.net/showthread.php?p=342750 forums.alliedmods.net/showthread.php?p=342750]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== ForgiveTK ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:EKS|EKS]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; This is a basic plugin to handle teamkilll and teamattack on your source server, it supports any Source mod. It will automaticly kick someone with to many offenses &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; Forgive via menu or chat. Support both Valves ESC menus and radio menus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://www.sourcemod.net/forums/viewtopic.php?t=3081 http://www.sourcemod.net/forums/viewtopic.php?t=3081]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Global Banlist===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:devicenull|devicenull]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; This plugin allows srcds to reguarly connect to an external PHP page, and download updates about it's banlist.  Srcds then stores these in a SQLite database. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; Embedding sqlite, using pthreads, using libcurl.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://www.sourcemod.net/forums/viewtopic.php?t=3539 http://www.sourcemod.net/forums/viewtopic.php?t=3539]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== HLStatsX ( Allows srcds to interact with hlstatsx ingame) ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:EKS|EKS]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; This plugin is made to interact with hlstatsx ( www.hlstatsx.org ) to give proper ingame stats, and provide the extra logging required for hit detection&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://forums.alliedmods.net/showthread.php?t=42502 http://forums.alliedmods.net/showthread.php?t=42502]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== IRC Relay ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:sslice|sslice]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; Reports game events to an IRC channel and allows you to administrate your server from IRC&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; ConCommand hooks and general networking using sockets&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://forums.alliedmods.net/showthread.php?t=39395 AlliedModders] or [http://www.tcmagazine.info/modules.php?modname=custompage&amp;amp;name=ircrelay&amp;amp;catid=4 Gameconnect]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Last Users Connected ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:devicenull|devicenull]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; With this plugin, every player who comes onto your server has their steamid logged, along with any name they used on the server. You can then either view the names/steamid's of the last people to disconnect, or you can search for a name/steamid and see everyone who has used that name. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; shows how to embed sqlite3, send basic messages/basic hooks. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://www.sourcemod.net/forums/viewtopic.php?t=3339 http://www.sourcemod.net/forums/viewtopic.php?t=3339]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Stripper:Source ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:BAILOPAN|BAILOPAN]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;  You can add any type of entity - hostage, spawn point, physics prop, permanently to the map. You can also filter out entities for deletion, either by specific entries or regular expressions. Stripper:Source lets you define global rules and per-map rules. It also lets other plugins (both SourceMM plugins and Server Plugins) use its API. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; shows how to edit the map entity lump in memory to change map entities&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://www.sourcemod.net/forums/viewtopic.php?t=3008 www.sourcemod.net/forums/viewtopic.php?t=3008]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Category:Documentation (SourceMM)]]&lt;br /&gt;
&lt;br /&gt;
= Open Source Valve Server Plugins (VSP) =&lt;br /&gt;
A list of open source plugins for the Valve Server Plugin (VSP) interface can be found [http://developer.valvesoftware.com/wiki/List_of_Open_Source_Server_Plugins here].&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Open_Source_Plugins_for_Metamod:Source&amp;diff=3440</id>
		<title>Open Source Plugins for Metamod:Source</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Open_Source_Plugins_for_Metamod:Source&amp;diff=3440"/>
		<updated>2006-10-20T01:54:54Z</updated>

		<summary type="html">&lt;p&gt;Sslice: /* Functional Plugins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Open Source Plugins for SourceMM =&lt;br /&gt;
This page lists known plugins with available source code. Please check the licenses for each one as they may not truly be &amp;quot;open source.&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Basic Templates ==&lt;br /&gt;
=== stub_mm ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:BAILOPAN|BAILOPAN]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; minmum implentation of a valid SourceMM plugin&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; starting template&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; Included in the SourceMM source code package: [http://www.sourcemm.net www.sourcemm.net]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sample_mm ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:BAILOPAN|BAILOPAN]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; implements the features of the standard Valve server plugin from the SDK&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; starting template with similar functionality to the Valve sample_plugin&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; Included in the SourceMM source code package: [http://www.sourcemm.net www.sourcemm.net]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sample2_mm ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:BAILOPAN|BAILOPAN]], edited by [[User:L._Duke|L. Duke]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; fixes (by inheriting from IGameEventListener2 instead of hooking FireGameEvent) the problem in sample_mm plugin where some events are not received&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; starting template with similar functionality to the Valve sample_plugin&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download: &amp;lt;/b&amp;gt;[http://forums.alliedmods.net/showthread.php?p=342749 forums.alliedmods.net/showthread.php?p=342749] (you must be logged in to view the download link) &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Functional Plugins ==&lt;br /&gt;
=== Anti-Griefer ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:devicenull|devicenull]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; This plugin is for the mod SourceForts.  In keeps track of what player unfreezes or freezes a block, and allows any other player to retrieve this information by aiming at a block.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; Basic VFuncs, listening for events, partial traceline (The method used for traceline might not be effective for any other mod)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://www.sourcemod.net/forums/viewtopic.php?t=3652 http://www.sourcemod.net/forums/viewtopic.php?t=3652]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Basic Admin Tool (BAT) ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:EKS|EKS]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; Provides basic admin functions&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; Kick, ban, menus, reserved slots, timeleft/nextmap say commands, and more&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://www.sourcemod.net/forums/viewtopic.php?t=2923 www.sourcemod.net/forums/viewtopic.php?t=2923]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Counter Strike Bot Control ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:EKS|EKS]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; This plugin allows you to control the counter strike source bots more easly, you can have them them automaticly keep the server populated. You can have bots automaticly killed when all the human players are dead, and any changes can be made in the bot menu.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; Control the built in bots in CSS via a menu&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://forums.alliedmods.net/showthread.php?t=40097 http://forums.alliedmods.net/showthread.php?t=40097]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CS:S Weapon Restrictions 2 ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:L._Duke|L. Duke]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; Prevents players from picking up restricted weapons (if bought, they fall to the ground). Also includes an option to remove restricted weapons from the game.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; Hook &amp;lt;i&amp;gt;CCSPlayer::Weapon_CanUse(CBaseCombatWeapon *pWeapon)&amp;lt;/i&amp;gt; and returns false for restricted weapons. Also shows how to use virtual functions on weapons such as Delete()and GetName() and on players for Weapon_GetSlot(int) and Drop(CBaseCombatWeapon*).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://forums.alliedmods.net/showthread.php?p=342750 forums.alliedmods.net/showthread.php?p=342750]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== ForgiveTK ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:EKS|EKS]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; This is a basic plugin to handle teamkilll and teamattack on your source server, it supports any Source mod. It will automaticly kick someone with to many offenses &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; Forgive via menu or chat. Support both Valves ESC menus and radio menus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://www.sourcemod.net/forums/viewtopic.php?t=3081 http://www.sourcemod.net/forums/viewtopic.php?t=3081]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Global Banlist===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:devicenull|devicenull]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; This plugin allows srcds to reguarly connect to an external PHP page, and download updates about it's banlist.  Srcds then stores these in a SQLite database. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; Embedding sqlite, using pthreads, using libcurl.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://www.sourcemod.net/forums/viewtopic.php?t=3539 http://www.sourcemod.net/forums/viewtopic.php?t=3539]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== HLStatsX ( Allows srcds to interact with hlstatsx ingame) ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:EKS|EKS]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; This plugin is made to interact with hlstatsx ( www.hlstatsx.org ) to give proper ingame stats, and provide the extra logging required for hit detection&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://forums.alliedmods.net/showthread.php?t=42502 http://forums.alliedmods.net/showthread.php?t=42502]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== IRC Relay ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:sslice|sslice]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; Reports game events to an IRC channel and allows you to administrate your server from IRC&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; Interaction between players and IRC users, as well as general administration&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://forums.alliedmods.net/showthread.php?t=39395 AlliedModders] or [http://www.tcmagazine.info/modules.php?modname=custompage&amp;amp;name=ircrelay&amp;amp;catid=4 Gameconnect]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Last Users Connected ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:devicenull|devicenull]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; With this plugin, every player who comes onto your server has their steamid logged, along with any name they used on the server. You can then either view the names/steamid's of the last people to disconnect, or you can search for a name/steamid and see everyone who has used that name. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; shows how to embed sqlite3, send basic messages/basic hooks. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://www.sourcemod.net/forums/viewtopic.php?t=3339 http://www.sourcemod.net/forums/viewtopic.php?t=3339]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Stripper:Source ===&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; [[User:BAILOPAN|BAILOPAN]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;  You can add any type of entity - hostage, spawn point, physics prop, permanently to the map. You can also filter out entities for deletion, either by specific entries or regular expressions. Stripper:Source lets you define global rules and per-map rules. It also lets other plugins (both SourceMM plugins and Server Plugins) use its API. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Features:&amp;lt;/b&amp;gt; shows how to edit the map entity lump in memory to change map entities&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Download:&amp;lt;/b&amp;gt; [http://www.sourcemod.net/forums/viewtopic.php?t=3008 www.sourcemod.net/forums/viewtopic.php?t=3008]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Category:Documentation (SourceMM)]]&lt;br /&gt;
&lt;br /&gt;
= Open Source Valve Server Plugins (VSP) =&lt;br /&gt;
A list of open source plugins for the Valve Server Plugin (VSP) interface can be found [http://developer.valvesoftware.com/wiki/List_of_Open_Source_Server_Plugins here].&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Metamod:Source_Development&amp;diff=2763</id>
		<title>Metamod:Source Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Metamod:Source_Development&amp;diff=2763"/>
		<updated>2006-03-22T00:54:48Z</updated>

		<summary type="html">&lt;p&gt;Sslice: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article is an introduction to [[SourceMM]] coding.  &lt;br /&gt;
&lt;br /&gt;
{{qnotice|The majority of this documentation should be merged or moved into an article about [[SourceHook]].}}&lt;br /&gt;
&lt;br /&gt;
{{qnotice|This article probably needs some better formatting.}}&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
You must have the Valve [[HL2SDK]], available from your [[Steam]] Menu. For Windows, you must have [[Microsoft Visual Studio]] 7.0 or 7.1 (we have not tried 6.0). For [[Linux]], Valve requires you use at least [[GCC]] 3.4.1. You should also have a copy of the [[Metamod:Source]] source code, available [http://www.sourcemm.net/ here] (sourcemm/sourcehook and sourcemm/sourcemm).&lt;br /&gt;
&lt;br /&gt;
For [[Microsoft Visual Studio]], you should make sure that you have the following HL2SDK paths in your include settings (Tools -&amp;gt; Options -&amp;gt; Projects, VC++ Directories, Include Files), as well as the &amp;quot;sourcehook&amp;quot; and &amp;quot;sourcemm&amp;quot; folders:&lt;br /&gt;
*dlls&lt;br /&gt;
*public&lt;br /&gt;
*public\vsdtlib&lt;br /&gt;
*public\tier1&lt;br /&gt;
*public\tier0&lt;br /&gt;
*public\engine&lt;br /&gt;
*public\dlls&lt;br /&gt;
*tier1&lt;br /&gt;
*lib\public (this should be in your Library Paths!)&lt;br /&gt;
&lt;br /&gt;
=Plugin API=&lt;br /&gt;
In order to write a plugin, you must implement the ISmmPlugin interface, similar to IServerPluginCallbacks. Each Metamod:Source release has a minimum required interface version and a current version. The minimum version is guaranteed to be upward compatible to the current, however, it may be lacking some features.&lt;br /&gt;
&lt;br /&gt;
Once you've implemented the interface, you must also have a global singleton of your plugin available. There are a few macros to assist you in properly exposing the interface as a DLL and setting up the API states.&lt;br /&gt;
&lt;br /&gt;
*{{bcode|PLUGIN_GLOBALVARS}}() - Place in header. Declares the global variables that some API calls require (such as g_SHPtr and g_PLAPI).&lt;br /&gt;
*{{bcode|PLUGIN_EXPOSE}}(class, singleton) - Place in .cpp file. Declares the external CreateInterface function which exposes the API.&lt;br /&gt;
*{{bcode|PLUGIN_SAVEVARS}}() - Use first thing in ISmmPlugin::Load(), saves the global variables sent from SourceMM.&lt;br /&gt;
&lt;br /&gt;
The actual plugin API you must implement as of this writing is version 004. To see a description of each of the functions, you can view the doxygen information here. Note that the Load, Unload, Pause, and Unpause functions allow you to refuse the action and copy an error message (you should check to make sure error is not NULL - it can be).&lt;br /&gt;
&lt;br /&gt;
=SourceHook (Hooking)=&lt;br /&gt;
SourceHook is the engine used to intercept function calls, much like Metamod. The difference with SourceHook is that it can intercept any virtual function in any class that, at compile time, you have the header for. SourceHook has the following steps of operation:&lt;br /&gt;
&lt;br /&gt;
* Declare the prototype of the function you are going to hook. This generates compile-time code that is able to pinpoint exactly how to go about hooking the function.&lt;br /&gt;
* Hook the function - as a member function of another class or a regular static function.&lt;br /&gt;
* Before the hooked function is called, all of the &amp;quot;pre&amp;quot; hook handlers attached to it are called. Each hook can set a special flag, the highest of which is chosen as a final operation. This flag specifies whether the original function should be called or not.&lt;br /&gt;
* Once all the hooks have been called, SourceHook decides whether to call the original function. Another set of hooks are called directly after, called &amp;quot;post&amp;quot; hook handlers. You can specify whether each hook is a post or pre hook - it simply changes whether it's called before or after the original call is made.&lt;br /&gt;
* After you are done using a hook, you can safely remove it.&lt;br /&gt;
&lt;br /&gt;
For example, let's say you wanted to intercept log messages in VEngineServer. Observe the prototype:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
virtual void		LogPrint( const char *msg ) = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a virtual, public function of a class we have an instance of (let's say in IVEngineServer *m_Engine) and that we have the header for. It can be intercepted.&lt;br /&gt;
&lt;br /&gt;
The first step is to figure out how to declare its prototype to SourceHook. This function is void, and has one parameter. The declaration macro follows these formats:&lt;br /&gt;
&lt;br /&gt;
*{{bcode|SH_DECL_HOOK}}n - n is the number of parameters&lt;br /&gt;
**The parameters are: Class name, member function name, attributes, overloaded?, the return type, and a list of the parameter types.&lt;br /&gt;
*{{bcode|SH_DECL_HOOKn_void}} - n is the number of parameters&lt;br /&gt;
**_void specifies that the function does not return a value. The format is the same as above except the &amp;quot;return type&amp;quot; parameter is missing.&lt;br /&gt;
*'''Note:''' Not covered here are the SH_DECL_HOOKn[_void]_vafmt hooks. These can hook string-formattable variable argument lists. You do not pass the string format or ellipses parameter. SourceHook will automatically format the string for your hook.&lt;br /&gt;
&lt;br /&gt;
Our macro will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SH_DECL_HOOK1_void(IVEngineServer, LogPrint, SH_NOATTRIB, 0, const char *);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This line must appear outside of a function. It means &amp;quot;Declare a hook prototype for LogPrint in IVEngineServer, which is a void function that has one parameter, which is a const char *&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Next we must actually hook the function. You can do this wherever you want to begin the interception. The two macros for hooking look like this:&lt;br /&gt;
&lt;br /&gt;
*{{bcode|SH_ADD_HOOK_STATICFUNC}}(class, memberfunction, instance_pointer, handler, post Hooks a virtual function to a static/global function.&lt;br /&gt;
**class - The name of the class&lt;br /&gt;
**memberfunction - The name of the member function&lt;br /&gt;
**instance - A pointer to an instance of the class&lt;br /&gt;
**handler - Your function that will be called on hooking&lt;br /&gt;
**post - true for post operation, false for pre operation&lt;br /&gt;
*{{bcode|SH_ADD_HOOK_MEMFUNC}}(class, memberfunction, instance, myinstance, myfunction, post) Hooks a virtual function to a member function of another class.&lt;br /&gt;
**class - The name of the class&lt;br /&gt;
**memberfunction - The name of the member function&lt;br /&gt;
**instance - An pointer to an instance of the class&lt;br /&gt;
**myinstance - A pointer to an instance of the class that has the handler member function&lt;br /&gt;
**myfunction - The name of the handler member function in your class&lt;br /&gt;
**post - true for post operation, false for pre-operation&lt;br /&gt;
&lt;br /&gt;
Let's continue with the example. To hook LogPrint to a function in your class, CMetaHooks (instance, g_MetaHooks), you would use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SH_ADD_HOOK_MEMFUNC(IVEngineServer, LogPrint, m_Engine, &amp;amp;g_MetaHooks, &amp;amp;CMetaHooks::LogPrint, false);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To remove the hook (either once it will no longer be unused, or at unload time):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SH_REMOVE_HOOK_MEMFUNC(IVEngineServer, LogPrint, m_Engine &amp;amp;g_MetaHooks, &amp;amp;CMetaHooks::LogPrint, false);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now, your function contents will look something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void CMetaHooks::LogPrint(const char *msg)&lt;br /&gt;
{&lt;br /&gt;
	//Code here&lt;br /&gt;
	RETURN_META(MRES_IGNORED);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note this return statement. This style of returning is similar to Metamod's, where you can set four different flags to indicate how you would like SourceHook to proceed. In Metamod, this return statement was required. In SourceMM, it is only required if you wish to set a return state other than MRES_IGNORED.&lt;br /&gt;
&lt;br /&gt;
*{{bcode|MRES_IGNORED}} - No states were changed, act as though nothing happened. Original function is still called.&lt;br /&gt;
*{{bcode|MRES_HANDLED}} - Something changed, but the original function was still called. This can be used to tell another plugin that you did something.&lt;br /&gt;
*{{bcode|MRES_OVERRIDE}} - The original function will still be called, but your return value will override whatever it returns.&lt;br /&gt;
*{{bcode|MRES_SUPERCEDE}} - The original function is not called, and your return value will be what is returned to the caller.&lt;br /&gt;
&lt;br /&gt;
Note, that if you need to return a value, there is another macro. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RETURN_META_VALUE(MRES_SUPERCEDE, value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is required for non-void functions, athough the return value is ignored using MRES_IGNORED or MRES_HANDLED.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can hook to static member functions which has a slightly easier syntax. The DECL_HOOK line does not change. To add the hook:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SH_ADD_HOOK_STATICFUNC(IVEngineServer, LogPrint, m_Engine, LogPrint_handler, false);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Removing the hook:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SH_REMOVE_HOOK_STATICFUNC(IVEngineServer, LogPrint, m_Engine, LogPrint_handler, false);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Declaring the handler:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void LogPrint_handler(const char *msg)&lt;br /&gt;
{&lt;br /&gt;
	//Code here&lt;br /&gt;
	RETURN_META(MRES_IGNORED);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that vafmt functions hooked with SourceHook assume that the vafmt is for a printf style string, and that the vafmt occurs at the end. When setting the parameters, you do not include the '...' notation, and SourceHook will vafmt the input string for you (meaning you also don't specify ... in your hooked function).&lt;br /&gt;
&lt;br /&gt;
=Calling Original Functions=&lt;br /&gt;
Often it will be necessary for you to call a function that's hooked, however, you don't want the hooks to be included in the calling. For example, if you want to entirely supercede a function and call it yourself from within a hook. To do this, you must request a call class. This is similar to MDLL_x() from Metamod for Half-Life 1.&lt;br /&gt;
&lt;br /&gt;
Continuing with the above example, let's say we want to supercede the original call and log a different message. Assume we also have the pointer m_Engine which is a &amp;lt;tt&amp;gt;IVEngineServer *&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&amp;lt;cpp&amp;gt;&lt;br /&gt;
SourceHook::CallClass&amp;lt;IVEngineServer&amp;gt; *Engine_CC = SH_GET_CALLCLASS(m_Engine);&lt;br /&gt;
&lt;br /&gt;
SH_CALL(Engine_CC, &amp;amp;IVEngineServer::LogPrint)(&amp;quot;This is a log message!\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
//When you are done with the pointer..&lt;br /&gt;
SH_RELEASE_CALLCLASS(Engine_CC);&lt;br /&gt;
&amp;lt;/cpp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because of the complex nature of inheritance, instance pointers, and vtables, this syntax can be quite daunting. You may wish to make macros for specific functions or classes you use quite often, to reduce the amount of typing. For example:&lt;br /&gt;
&amp;lt;cpp&amp;gt;&lt;br /&gt;
//Assuming you have a global pointer g_Engine...&lt;br /&gt;
#define ENGCALL(func) SH_CALL(g_Engine, &amp;amp;IVEngineServer::func)&lt;br /&gt;
&lt;br /&gt;
//Then you can do:&lt;br /&gt;
ENGCALL(LogPrint)(&amp;quot;This is a test!&amp;quot;);&lt;br /&gt;
&amp;lt;/cpp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The syntax of calling class construction is:&lt;br /&gt;
*&amp;lt;tt&amp;gt;SourceHook::CallClass&amp;lt;class&amp;gt; *ptr = SH_GET_CALLCLASS(instance);&amp;lt;/tt&amp;gt;&lt;br /&gt;
**Returns an object which allows you to call the original function. Class is the name of the class which is the target, instance is an instance of that class.&lt;br /&gt;
*&amp;lt;tt&amp;gt;SH_CALL(cc_ptr, &amp;amp;class::func)([params])&amp;lt;/tt&amp;gt;&lt;br /&gt;
**Pass the pointer returned from SH_GET_CALLCLASS as cc_ptr. The target function you call must be passed as a pointer-to-member-function, which takes the form &amp;amp;Class::Function as seen in previous examples. You must then complete the function call by adding a parenthetical parameter expression, even for void functions, which would be ().&lt;br /&gt;
&lt;br /&gt;
=Other Macros=&lt;br /&gt;
All of the macros take g_PLAPI as the first parameter. For more information on this, see the global variables section.&lt;br /&gt;
&lt;br /&gt;
*{{bcode|META_CONPRINT}}(const char *msg)&lt;br /&gt;
*{{bcode|META_CONPRINTF}}(const char *fmt, ...)&lt;br /&gt;
**These two functions are recommended over Msg() for printing to the server console. Msg() does not relay commands back through rcon, and as of this writing Valve does not expose the function which does. To be able to display text through the rcon console (much like HL1), you should use these functions. If SourceMM is unable to extract the function properly, it will automatically default to Msg.&lt;br /&gt;
*{{bcode|META_LOG}}(g_PLAPI, const char *msg, ...)&lt;br /&gt;
**Logs a message through IVEngineServer::LogPrint(). A newline is automatically added, and msg is formatted as a sprintf() style string.&lt;br /&gt;
*{{bcode|META_REGCVAR}}(var)&lt;br /&gt;
**Registers a ConCommandBase pointer through SourceMM. The correct way to use this is to create an IConCommandBaseAccessor, and inside RegisterConCommandBase, call the macro on the given ConComandBase. This will ensure that SourceMM correctly detects and unloads your cvars and concommands at the appopriate time. Otherwise, unloading your plugin will cause a crash.&lt;br /&gt;
*{{bcode|META_UNREGCVAR}}(var)&lt;br /&gt;
**Unregisters a ConCommandBase pointer. This is not needed if you have set up your IConCommandBaseAccessor correctly (and called ConCommandBaseMngr::OneTimeInit()).&lt;br /&gt;
&lt;br /&gt;
=Events System=&lt;br /&gt;
The Events System is based on IMetamodListener. By implementing the IMetamodListener class and using g_SMAPI-&amp;gt;AddListener, you can watch for certain, low-traffic events. These events are split into three categories:&lt;br /&gt;
&lt;br /&gt;
*Plugin Events let you listen for plugin pauses and unloads. This is important if you're relying on information from another plugin, as you can handle cases where a live plugin has become invalid.&lt;br /&gt;
*Game Events are simple events that SourceMM is already hooking and makes available. These are LevelShutdown and LevelInit right now.&lt;br /&gt;
*Query Events occur when a factory is used. The four main factories (Engine, GameDLL, FileSystem, and Physics) are all overridable. You should simply return a non-NULL result to override, and fill the return code with IFACE_OK if available. There is no way to handle the case of two plugins overriding right now. The final factory is the Metamod Factory, which is the factory that Metamod:Source adds to the runtime space for plugins. By default, it only contains the interfaces for the PluginManager and SourceHook. Plugins can use this to add new interfaces. Other plugins request these interfaces through g_SMAPI-&amp;gt;MetaFactory().&lt;br /&gt;
&lt;br /&gt;
=Global Variables=&lt;br /&gt;
These global variables are saved by PLUGIN_EXPOSE and PLUGIN_SAVEVARS. They are declared with PLUGIN_GLOBALVARS.&lt;br /&gt;
&lt;br /&gt;
*{{bcode|g_PLAPI}}&lt;br /&gt;
**ISmmPlugin * pointer to your global class singleton.&lt;br /&gt;
*{{bcode|g_PLID}}&lt;br /&gt;
**The internal PluginId of your plugin.&lt;br /&gt;
*{{bcode|g_SHPtr}}&lt;br /&gt;
**The SourceHook::ISourceHook * pointer to SourceHook's interface.&lt;br /&gt;
*{{bcode|g_SMAPI}}&lt;br /&gt;
**The ISmmAPI * pointer to SourceMM's interface.&lt;br /&gt;
&lt;br /&gt;
=Compiling=&lt;br /&gt;
To see more about compiling, see the Sample Plugin Compiling section.&lt;br /&gt;
&lt;br /&gt;
Modifying the default Makefiles for your own projects:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tt&amp;gt;OPT_FLAGS&amp;lt;/tt&amp;gt; - Optimization flags&lt;br /&gt;
*&amp;lt;tt&amp;gt;DEBUG_FLAGS&amp;lt;/tt&amp;gt; - Debug flags&lt;br /&gt;
*&amp;lt;tt&amp;gt;CPP&amp;lt;/tt&amp;gt; - C++ Compiler&lt;br /&gt;
*&amp;lt;tt&amp;gt;OBJETS&amp;lt;/tt&amp;gt; - List of C++ files to compile&lt;br /&gt;
*&amp;lt;tt&amp;gt;LINK&amp;lt;/tt&amp;gt; - Linker Options&lt;br /&gt;
*&amp;lt;tt&amp;gt;CFLAGS&amp;lt;/tt&amp;gt; - Base Compiler Flags&lt;br /&gt;
*&amp;lt;tt&amp;gt;BINARY&amp;lt;/tt&amp;gt; - Output Binary Name&lt;br /&gt;
&lt;br /&gt;
Makefile commands:&lt;br /&gt;
&lt;br /&gt;
*clean - Cleans all build files&lt;br /&gt;
*debug - Builds debug version&lt;br /&gt;
&lt;br /&gt;
=1.1 Changes - Late Loading, Events=&lt;br /&gt;
SourceMM 1.1 changed quite a few things internally, and externally made many breaking changes. These include:&lt;br /&gt;
&lt;br /&gt;
*ISmmPlugin::Load() has removed the factory list parameter (the factory system was replaced with the event system). Also, a boolean parameter was added, specifying whether the plugin was loaded late or not.&lt;br /&gt;
*ISmmPlugin::Load() is now called BEFORE DLLInit(), rather than after. This means it might not have all information it needs -- for example, IGameEvents won't be parsed yet. You will need to do things like this in ISmmPlugin:AllPluginsLoaded() instead, as it is guaranteed to occur when all DLLs are initialized.&lt;br /&gt;
*ISmmPlugin now has default functions -- you don't have to implement all of them.&lt;br /&gt;
*SourceHook was modified to use interfaces rather than straight struct pointers. This breaking changes will ensure that future SourceHook modifications do not break older plugins.&lt;br /&gt;
*SourceHook was modified to be re-entrant.&lt;br /&gt;
*SourceHook now has a tiny template library with it. This removes the necessity to link against libstdc++.so.*, which harms binary compatibility across linux distributions.&lt;br /&gt;
*SourceMM's GameDLL code was completely rewritten. It will now work with newer mods much easier, and issues like the DoD:S release will be much easier to deal with (if at all). It also removes a few important speed bottlenecks.&lt;br /&gt;
*An events system was added.&lt;br /&gt;
&lt;br /&gt;
=1.2 Changes - Changing Parameters, Manual Hooking=&lt;br /&gt;
SourceMM 1.2 now supports changing the parameters in a hook chain. For example, say the GameDLL has a function called IGameDLL::PrintString(const char *str). You can hook this, let it continue, but change the &amp;quot;str&amp;quot; parameter passed in to the rest of the hooks and the GameDLL. To do this, use the following macros:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tt&amp;gt;RETURN_META_NEWPARAMS&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;RETURN_META_VALUE_NEWPARAMS&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;cpp&amp;gt;&lt;br /&gt;
class ISomething&lt;br /&gt;
{&lt;br /&gt;
   virtual void Function1(int num) =0;&lt;br /&gt;
   virtual bool Function2(bool what, int hi) =0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void MyHook1(int num)&lt;br /&gt;
{&lt;br /&gt;
   //if num is 0, &lt;br /&gt;
   // we will change the num parameter in the rest of the hooks, and the gamedll, to be 1.&lt;br /&gt;
   if (num == 0)&lt;br /&gt;
       RETURN_META_NEWPARAMS(MRES_IGNORED, &amp;amp;ISomething::Function1, (1))&lt;br /&gt;
   RETURN_META(MRES_SUPERCEDE);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
bool MyHook2(bool what, int hi)&lt;br /&gt;
{&lt;br /&gt;
   //change the &amp;quot;what&amp;quot; and &amp;quot;hi&amp;quot; parameters to be false and 3 respectively&lt;br /&gt;
   //also, return true, but specify that the value is ignored&lt;br /&gt;
   RETURN_META_VALUE_NEWPARAMS(MRES_IGNORED, true, &amp;amp;ISomething::Function2, (false, 3));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/cpp&amp;gt;&lt;br /&gt;
SourceHook also supports manual hooking of functions. This means you must know the virtual table index, the virtual table offset (for polymorphism), and the &amp;quot;this&amp;quot; pointer offset. Luckily, the polymorphic offsets are usually zero. This type of hook is ideal when supporting different ABI, for example, across different gamedlls. The API is almost identical:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tt&amp;gt;SH_DECL_MANUALHOOKn[_void|_vafamt]&amp;lt;/tt&amp;gt; -&lt;br /&gt;
**Declares the manual hook. A unique name must be given to each manual hook.&lt;br /&gt;
*&amp;lt;tt&amp;gt;SH_[ADD|REMOVE]_MANUALHOOK_[STATIC|MEM]FUNC&amp;lt;/tt&amp;gt; -&lt;br /&gt;
**Adds or removes a static or member function hook on a manually declared hook.&lt;br /&gt;
*&amp;lt;tt&amp;gt;SH_MANUALHOOK_RECONFIGURE&amp;lt;/tt&amp;gt; - &lt;br /&gt;
**Reconfigures the indexes and offsets of a manual hook.&lt;br /&gt;
&lt;br /&gt;
An example is below, using the ISomething class from above.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cpp&amp;gt;&lt;br /&gt;
SH_DECL_MANUALHOOK2(_M_Function1, 1, 0, 0, bool, bool, int);&lt;br /&gt;
&lt;br /&gt;
void OnLoad(ISomething *pSomething)&lt;br /&gt;
{&lt;br /&gt;
	//we reference the static function by its unique handle we gave it&lt;br /&gt;
	//the parameters are otherwise the same - this pointer, hook handler, and post/non-post&lt;br /&gt;
	SH_ADD_MANUALHOOK_STATICFUNC(_M_Function1, pSomething, MyHook1, false);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void OnUnload(ISomething *pSomething)&lt;br /&gt;
{&lt;br /&gt;
	SH_REMOVE_MANUALHOOK_STATICFUNC(_M_Function1, pSomething, MyHook1, false);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/cpp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For more examples of the above features, you can look in SourceHook CVS's [http://www.tcwonline.org/cgi-bin/viewcvs.cgi/sourcemm/sourcehook/test/ test suite], which demonstrates a variety of hooking scenarios.&lt;br /&gt;
&lt;br /&gt;
[[Category:SourceHook]]&lt;br /&gt;
[[Category:Documentation (SourceMM)]]&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Cross_Compiling_Plugins_(Metamod:Source)&amp;diff=2451</id>
		<title>Cross Compiling Plugins (Metamod:Source)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Cross_Compiling_Plugins_(Metamod:Source)&amp;diff=2451"/>
		<updated>2006-01-22T22:30:04Z</updated>

		<summary type="html">&lt;p&gt;Sslice: /* Credits */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
The aim of this tutorial is to allow Windows Half-Life 2 plugin coders to compile their plugins on the same machine as the windows binaries.&lt;br /&gt;
The binaries are compatible with 99% of all linux servers and do not suffer from bulky file sizes.&lt;br /&gt;
One of the main benefits to using this method of compiling is that your code can be left wherever you currently have it so that compile time reluctance is removed and coders can concentrate on coding the plugins instead of &amp;quot;How on earth am I to compile this for linux ???&amp;quot;.&lt;br /&gt;
All you need to get started are the base Cygwin installation, the CrossTool.tar.gz file and the makefile. Links to the latter two are included at the end of the tutorial.&lt;br /&gt;
&lt;br /&gt;
This tutorial assumes the following.&lt;br /&gt;
&amp;lt;OL&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;You currently have a plugin which you can compile on windows using MSVC.&lt;br /&gt;
&amp;lt;LI&amp;gt;You have a copy of the HL2SDK Source Code installed on your hard drive.&lt;br /&gt;
&amp;lt;LI&amp;gt;You have a copy of the [http://www.sourcemm.net Metamod:Source] source code on your hard drive.&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although the cross compiler will allow for compiling of Valves standard plugins, I do not include a Makefile or instructions on how to successfuly occomplish this.&lt;br /&gt;
&lt;br /&gt;
==Installing Cygwin==&lt;br /&gt;
First, download CygWin from [http://www.cygwin.com www.CygWin.com] by clicking on &amp;quot;Install Now&amp;quot; located in the middle of the page.&lt;br /&gt;
&lt;br /&gt;
Once the download finishes, run &amp;lt;i&amp;gt;setup.exe&amp;lt;/i&amp;gt;&lt;br /&gt;
Click 'Next' on the introduction screen.&lt;br /&gt;
&lt;br /&gt;
On the second page, select 'Install from Internet'.&lt;br /&gt;
The following page is all user preferances, except the 'Default Text File Type' which is recommended you use 'Unix / binary'.&lt;br /&gt;
After clicking next, you are prompted for a CygWin temporary folder, any folder will suffice, the default is usually the better option.&lt;br /&gt;
The next screen's options are firewall/proxy settings, these are specific to the Computer/Network you are currently using.&lt;br /&gt;
Once you click next on the previous screen, the installer will download a list of mirror sites containing the CygWin binaries. Select one which you think is closest to you for a faster installation time.&lt;br /&gt;
Finaly, you are presented with a 'Select Packages' screen.&lt;br /&gt;
I *think* it should work fine without all of the dev packages.&lt;br /&gt;
&lt;br /&gt;
If anyone has gotten this to work by selecting less packages, please let me know so I can remove them from this list.&lt;br /&gt;
Items marked in bold are extremely important.&lt;br /&gt;
&lt;br /&gt;
*binutils&lt;br /&gt;
*&amp;lt;b&amp;gt;bzip2&amp;lt;/b&amp;gt;&lt;br /&gt;
*cygutils&lt;br /&gt;
*gcc&lt;br /&gt;
*&amp;lt;b&amp;gt;glib&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;gzip&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*libiconv&lt;br /&gt;
*&amp;lt;b&amp;gt;make&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;zlib&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;grep&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Click next and it should install the packages to the target path you specified.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing CrossTool==&lt;br /&gt;
Download the CrossCompiler from one of the mirrors below to the root cygwin folder &amp;lt;i&amp;gt;(c:\cygwin)&amp;lt;/i&amp;gt;.&lt;br /&gt;
If it gets renamed to 'crosstool_gcc-3.4.1.tar.tar' please rename it to 'crosstool_gcc-3.4.1.tar.gz'.&lt;br /&gt;
Download Mirrors for 'crosstool_gcc.tar.gz'&lt;br /&gt;
*[http://files.filefront.com/crosstool_gcc_341targz/;4650645;;/fileinfo.html FileFront]&lt;br /&gt;
*[http://rapidshare.de/files/11588086/crosstool_gcc-3.4.1.tar.gz.html RapidShare.de]&lt;br /&gt;
*[http://downloads.punkassfraggers.com/redirect.php?dlid=1224 PunkAssFraggers.com]&lt;br /&gt;
&lt;br /&gt;
This is the most important part of the entire tutorial.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Do not try and extract 'crosstool_gcc-3.4.1.tar.gz' using any Windows Archiving utility !&amp;lt;/b&amp;gt;&lt;br /&gt;
They do not extract the files correctly and if you don't get errors during the extraction, you will while trying to compile !&lt;br /&gt;
Once the download is complete, run cygwin by navigating to the cygwin root folder, and double clicking on &amp;lt;i&amp;gt;'cygwin.bat'&amp;lt;/i&amp;gt;.&lt;br /&gt;
Type the following two commands in order into the cygwin bash shell followed by the enter key:&lt;br /&gt;
&lt;br /&gt;
  cd /&lt;br /&gt;
  tar -xzf crosstool_gcc-3.4.1.tar.gz&lt;br /&gt;
&lt;br /&gt;
This will start extracting the tar file to the '&amp;lt;cygroot&amp;gt;/opt' folder on your hard drive.&lt;br /&gt;
And thats it, now you have the pre-compiled GCC 3.4.1 [http://www.lduke.com (Thanks LDuke)] installed on your computer you can compile server plugins for both regular and SourceMM flavours with ease and compatibility with Valves GCC 3.4.1 requirements.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compiling Plugins==&lt;br /&gt;
Download the Makefile by clicking on [http://www.c0ld.net/Tutorials/CrossTool/Makefile this link.]&lt;br /&gt;
&lt;br /&gt;
Save it to your project's root source folder and open it with a text editor like notepad.&lt;br /&gt;
Inside the Makfile I have shown examples on how your paths are translated into unix/cygwin hybrid paths.&lt;br /&gt;
So, before trying any compling just yet, you need to insert the paths for the following.&lt;br /&gt;
&amp;lt;b&amp;gt;HL2SDK&amp;lt;/b&amp;gt;: The path to where your HL2SDK files are located.&lt;br /&gt;
&amp;lt;b&amp;gt;SMM_ROOT&amp;lt;/b&amp;gt;: The path to where you extracted the contents of the [http://www.sourcemm.net/ SourceMM package]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;SRCDS&amp;lt;/b&amp;gt;: The path to the linux SRCDS binaries.&lt;br /&gt;
&amp;lt;b&amp;gt;PLUGIN&amp;lt;/b&amp;gt;: The plugin filename.&lt;br /&gt;
For the convenience of those who dont have access to a linux srcds installation, you can grab the files required at one of the mirrors below.&lt;br /&gt;
Extract them to a new folder which will be your SRCDS path in the Makefile.&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt;The bin folder must be inside the srcds folder for maximum compatibility. For example, your files end up being something like this 'C:\MyFiles\srcds_l\bin\vstdlib_i486.so'.&lt;br /&gt;
&lt;br /&gt;
So, in your Makefile, SRCDS would be '/cygdrive/c/MyFiles/srcds_l'&lt;br /&gt;
&lt;br /&gt;
Download Mirrors for 'srcds_l_binaries.zip'&lt;br /&gt;
*[http://files.filefront.com/srcds_l_binarieszip/;4651213;;/fileinfo.html FileFront Mirror]&lt;br /&gt;
*[http://rapidshare.de/files/11597264/srcds_l_binaries.zip.html RapidShare.de Mirror]&lt;br /&gt;
Now you're ready to try compiling.&lt;br /&gt;
Back to the cygwin bash window, and we're now going to have to navigate to your code's location.&lt;br /&gt;
An exmaple path could be 'C:\MyCode\MyPlugin\' so in the bash shell we type the following:&lt;br /&gt;
&lt;br /&gt;
  cd /cygdrive/c/MyCode/MyPlugin/&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
If all your paths are set correctly, it should start compiling the plugin.&lt;br /&gt;
Ignore all the warnings in the HL2SDK, they are harmless.&lt;br /&gt;
What you should be looking out for are errors and warnings located inside your own code.&lt;br /&gt;
Unfortunately I cannot compile plugins for you, but there is a forum dedicated to helping you with hl2sdk coding problems.&lt;br /&gt;
&lt;br /&gt;
[http://www.sourcemod.net/forums/viewforum.php?f=24 Click here to visit the forum]&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
*Tutorial by: Jason &amp;quot;c0ldfyr3&amp;quot; Croghan&lt;br /&gt;
*Cross Compiler compiled by: L. Duke&lt;br /&gt;
*Makefile originally written by: David &amp;quot;BAILOPAN&amp;quot; Anderson&lt;br /&gt;
*Converted to Wiki by: James &amp;quot;sslice&amp;quot; Gray&lt;br /&gt;
&lt;br /&gt;
Original Location: http://www.c0ld.net/index.php?inc=CrossTool&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation (SourceMM)]]&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Cross_Compiling_Plugins_(Metamod:Source)&amp;diff=2450</id>
		<title>Cross Compiling Plugins (Metamod:Source)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Cross_Compiling_Plugins_(Metamod:Source)&amp;diff=2450"/>
		<updated>2006-01-22T22:29:57Z</updated>

		<summary type="html">&lt;p&gt;Sslice: /* Credits */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
The aim of this tutorial is to allow Windows Half-Life 2 plugin coders to compile their plugins on the same machine as the windows binaries.&lt;br /&gt;
The binaries are compatible with 99% of all linux servers and do not suffer from bulky file sizes.&lt;br /&gt;
One of the main benefits to using this method of compiling is that your code can be left wherever you currently have it so that compile time reluctance is removed and coders can concentrate on coding the plugins instead of &amp;quot;How on earth am I to compile this for linux ???&amp;quot;.&lt;br /&gt;
All you need to get started are the base Cygwin installation, the CrossTool.tar.gz file and the makefile. Links to the latter two are included at the end of the tutorial.&lt;br /&gt;
&lt;br /&gt;
This tutorial assumes the following.&lt;br /&gt;
&amp;lt;OL&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;You currently have a plugin which you can compile on windows using MSVC.&lt;br /&gt;
&amp;lt;LI&amp;gt;You have a copy of the HL2SDK Source Code installed on your hard drive.&lt;br /&gt;
&amp;lt;LI&amp;gt;You have a copy of the [http://www.sourcemm.net Metamod:Source] source code on your hard drive.&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although the cross compiler will allow for compiling of Valves standard plugins, I do not include a Makefile or instructions on how to successfuly occomplish this.&lt;br /&gt;
&lt;br /&gt;
==Installing Cygwin==&lt;br /&gt;
First, download CygWin from [http://www.cygwin.com www.CygWin.com] by clicking on &amp;quot;Install Now&amp;quot; located in the middle of the page.&lt;br /&gt;
&lt;br /&gt;
Once the download finishes, run &amp;lt;i&amp;gt;setup.exe&amp;lt;/i&amp;gt;&lt;br /&gt;
Click 'Next' on the introduction screen.&lt;br /&gt;
&lt;br /&gt;
On the second page, select 'Install from Internet'.&lt;br /&gt;
The following page is all user preferances, except the 'Default Text File Type' which is recommended you use 'Unix / binary'.&lt;br /&gt;
After clicking next, you are prompted for a CygWin temporary folder, any folder will suffice, the default is usually the better option.&lt;br /&gt;
The next screen's options are firewall/proxy settings, these are specific to the Computer/Network you are currently using.&lt;br /&gt;
Once you click next on the previous screen, the installer will download a list of mirror sites containing the CygWin binaries. Select one which you think is closest to you for a faster installation time.&lt;br /&gt;
Finaly, you are presented with a 'Select Packages' screen.&lt;br /&gt;
I *think* it should work fine without all of the dev packages.&lt;br /&gt;
&lt;br /&gt;
If anyone has gotten this to work by selecting less packages, please let me know so I can remove them from this list.&lt;br /&gt;
Items marked in bold are extremely important.&lt;br /&gt;
&lt;br /&gt;
*binutils&lt;br /&gt;
*&amp;lt;b&amp;gt;bzip2&amp;lt;/b&amp;gt;&lt;br /&gt;
*cygutils&lt;br /&gt;
*gcc&lt;br /&gt;
*&amp;lt;b&amp;gt;glib&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;gzip&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*libiconv&lt;br /&gt;
*&amp;lt;b&amp;gt;make&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;zlib&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;grep&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Click next and it should install the packages to the target path you specified.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing CrossTool==&lt;br /&gt;
Download the CrossCompiler from one of the mirrors below to the root cygwin folder &amp;lt;i&amp;gt;(c:\cygwin)&amp;lt;/i&amp;gt;.&lt;br /&gt;
If it gets renamed to 'crosstool_gcc-3.4.1.tar.tar' please rename it to 'crosstool_gcc-3.4.1.tar.gz'.&lt;br /&gt;
Download Mirrors for 'crosstool_gcc.tar.gz'&lt;br /&gt;
*[http://files.filefront.com/crosstool_gcc_341targz/;4650645;;/fileinfo.html FileFront]&lt;br /&gt;
*[http://rapidshare.de/files/11588086/crosstool_gcc-3.4.1.tar.gz.html RapidShare.de]&lt;br /&gt;
*[http://downloads.punkassfraggers.com/redirect.php?dlid=1224 PunkAssFraggers.com]&lt;br /&gt;
&lt;br /&gt;
This is the most important part of the entire tutorial.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Do not try and extract 'crosstool_gcc-3.4.1.tar.gz' using any Windows Archiving utility !&amp;lt;/b&amp;gt;&lt;br /&gt;
They do not extract the files correctly and if you don't get errors during the extraction, you will while trying to compile !&lt;br /&gt;
Once the download is complete, run cygwin by navigating to the cygwin root folder, and double clicking on &amp;lt;i&amp;gt;'cygwin.bat'&amp;lt;/i&amp;gt;.&lt;br /&gt;
Type the following two commands in order into the cygwin bash shell followed by the enter key:&lt;br /&gt;
&lt;br /&gt;
  cd /&lt;br /&gt;
  tar -xzf crosstool_gcc-3.4.1.tar.gz&lt;br /&gt;
&lt;br /&gt;
This will start extracting the tar file to the '&amp;lt;cygroot&amp;gt;/opt' folder on your hard drive.&lt;br /&gt;
And thats it, now you have the pre-compiled GCC 3.4.1 [http://www.lduke.com (Thanks LDuke)] installed on your computer you can compile server plugins for both regular and SourceMM flavours with ease and compatibility with Valves GCC 3.4.1 requirements.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compiling Plugins==&lt;br /&gt;
Download the Makefile by clicking on [http://www.c0ld.net/Tutorials/CrossTool/Makefile this link.]&lt;br /&gt;
&lt;br /&gt;
Save it to your project's root source folder and open it with a text editor like notepad.&lt;br /&gt;
Inside the Makfile I have shown examples on how your paths are translated into unix/cygwin hybrid paths.&lt;br /&gt;
So, before trying any compling just yet, you need to insert the paths for the following.&lt;br /&gt;
&amp;lt;b&amp;gt;HL2SDK&amp;lt;/b&amp;gt;: The path to where your HL2SDK files are located.&lt;br /&gt;
&amp;lt;b&amp;gt;SMM_ROOT&amp;lt;/b&amp;gt;: The path to where you extracted the contents of the [http://www.sourcemm.net/ SourceMM package]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;SRCDS&amp;lt;/b&amp;gt;: The path to the linux SRCDS binaries.&lt;br /&gt;
&amp;lt;b&amp;gt;PLUGIN&amp;lt;/b&amp;gt;: The plugin filename.&lt;br /&gt;
For the convenience of those who dont have access to a linux srcds installation, you can grab the files required at one of the mirrors below.&lt;br /&gt;
Extract them to a new folder which will be your SRCDS path in the Makefile.&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt;The bin folder must be inside the srcds folder for maximum compatibility. For example, your files end up being something like this 'C:\MyFiles\srcds_l\bin\vstdlib_i486.so'.&lt;br /&gt;
&lt;br /&gt;
So, in your Makefile, SRCDS would be '/cygdrive/c/MyFiles/srcds_l'&lt;br /&gt;
&lt;br /&gt;
Download Mirrors for 'srcds_l_binaries.zip'&lt;br /&gt;
*[http://files.filefront.com/srcds_l_binarieszip/;4651213;;/fileinfo.html FileFront Mirror]&lt;br /&gt;
*[http://rapidshare.de/files/11597264/srcds_l_binaries.zip.html RapidShare.de Mirror]&lt;br /&gt;
Now you're ready to try compiling.&lt;br /&gt;
Back to the cygwin bash window, and we're now going to have to navigate to your code's location.&lt;br /&gt;
An exmaple path could be 'C:\MyCode\MyPlugin\' so in the bash shell we type the following:&lt;br /&gt;
&lt;br /&gt;
  cd /cygdrive/c/MyCode/MyPlugin/&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
If all your paths are set correctly, it should start compiling the plugin.&lt;br /&gt;
Ignore all the warnings in the HL2SDK, they are harmless.&lt;br /&gt;
What you should be looking out for are errors and warnings located inside your own code.&lt;br /&gt;
Unfortunately I cannot compile plugins for you, but there is a forum dedicated to helping you with hl2sdk coding problems.&lt;br /&gt;
&lt;br /&gt;
[http://www.sourcemod.net/forums/viewforum.php?f=24 Click here to visit the forum]&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
*Tutorial by: Jason &amp;quot;c0ldfyr3&amp;quot; Croghan&lt;br /&gt;
*Cross Compiler compiled by: L. Duke&lt;br /&gt;
*MakeFile originally written by: David &amp;quot;BAILOPAN&amp;quot; Anderson&lt;br /&gt;
*Converted to Wiki by: James &amp;quot;sslice&amp;quot; Gray&lt;br /&gt;
&lt;br /&gt;
Original Location: http://www.c0ld.net/index.php?inc=CrossTool&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation (SourceMM)]]&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Cross_Compiling_Plugins_(Metamod:Source)&amp;diff=2449</id>
		<title>Cross Compiling Plugins (Metamod:Source)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Cross_Compiling_Plugins_(Metamod:Source)&amp;diff=2449"/>
		<updated>2006-01-22T22:29:40Z</updated>

		<summary type="html">&lt;p&gt;Sslice: /* Credits */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
The aim of this tutorial is to allow Windows Half-Life 2 plugin coders to compile their plugins on the same machine as the windows binaries.&lt;br /&gt;
The binaries are compatible with 99% of all linux servers and do not suffer from bulky file sizes.&lt;br /&gt;
One of the main benefits to using this method of compiling is that your code can be left wherever you currently have it so that compile time reluctance is removed and coders can concentrate on coding the plugins instead of &amp;quot;How on earth am I to compile this for linux ???&amp;quot;.&lt;br /&gt;
All you need to get started are the base Cygwin installation, the CrossTool.tar.gz file and the makefile. Links to the latter two are included at the end of the tutorial.&lt;br /&gt;
&lt;br /&gt;
This tutorial assumes the following.&lt;br /&gt;
&amp;lt;OL&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;You currently have a plugin which you can compile on windows using MSVC.&lt;br /&gt;
&amp;lt;LI&amp;gt;You have a copy of the HL2SDK Source Code installed on your hard drive.&lt;br /&gt;
&amp;lt;LI&amp;gt;You have a copy of the [http://www.sourcemm.net Metamod:Source] source code on your hard drive.&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although the cross compiler will allow for compiling of Valves standard plugins, I do not include a Makefile or instructions on how to successfuly occomplish this.&lt;br /&gt;
&lt;br /&gt;
==Installing Cygwin==&lt;br /&gt;
First, download CygWin from [http://www.cygwin.com www.CygWin.com] by clicking on &amp;quot;Install Now&amp;quot; located in the middle of the page.&lt;br /&gt;
&lt;br /&gt;
Once the download finishes, run &amp;lt;i&amp;gt;setup.exe&amp;lt;/i&amp;gt;&lt;br /&gt;
Click 'Next' on the introduction screen.&lt;br /&gt;
&lt;br /&gt;
On the second page, select 'Install from Internet'.&lt;br /&gt;
The following page is all user preferances, except the 'Default Text File Type' which is recommended you use 'Unix / binary'.&lt;br /&gt;
After clicking next, you are prompted for a CygWin temporary folder, any folder will suffice, the default is usually the better option.&lt;br /&gt;
The next screen's options are firewall/proxy settings, these are specific to the Computer/Network you are currently using.&lt;br /&gt;
Once you click next on the previous screen, the installer will download a list of mirror sites containing the CygWin binaries. Select one which you think is closest to you for a faster installation time.&lt;br /&gt;
Finaly, you are presented with a 'Select Packages' screen.&lt;br /&gt;
I *think* it should work fine without all of the dev packages.&lt;br /&gt;
&lt;br /&gt;
If anyone has gotten this to work by selecting less packages, please let me know so I can remove them from this list.&lt;br /&gt;
Items marked in bold are extremely important.&lt;br /&gt;
&lt;br /&gt;
*binutils&lt;br /&gt;
*&amp;lt;b&amp;gt;bzip2&amp;lt;/b&amp;gt;&lt;br /&gt;
*cygutils&lt;br /&gt;
*gcc&lt;br /&gt;
*&amp;lt;b&amp;gt;glib&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;gzip&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*libiconv&lt;br /&gt;
*&amp;lt;b&amp;gt;make&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;zlib&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;grep&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Click next and it should install the packages to the target path you specified.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing CrossTool==&lt;br /&gt;
Download the CrossCompiler from one of the mirrors below to the root cygwin folder &amp;lt;i&amp;gt;(c:\cygwin)&amp;lt;/i&amp;gt;.&lt;br /&gt;
If it gets renamed to 'crosstool_gcc-3.4.1.tar.tar' please rename it to 'crosstool_gcc-3.4.1.tar.gz'.&lt;br /&gt;
Download Mirrors for 'crosstool_gcc.tar.gz'&lt;br /&gt;
*[http://files.filefront.com/crosstool_gcc_341targz/;4650645;;/fileinfo.html FileFront]&lt;br /&gt;
*[http://rapidshare.de/files/11588086/crosstool_gcc-3.4.1.tar.gz.html RapidShare.de]&lt;br /&gt;
*[http://downloads.punkassfraggers.com/redirect.php?dlid=1224 PunkAssFraggers.com]&lt;br /&gt;
&lt;br /&gt;
This is the most important part of the entire tutorial.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Do not try and extract 'crosstool_gcc-3.4.1.tar.gz' using any Windows Archiving utility !&amp;lt;/b&amp;gt;&lt;br /&gt;
They do not extract the files correctly and if you don't get errors during the extraction, you will while trying to compile !&lt;br /&gt;
Once the download is complete, run cygwin by navigating to the cygwin root folder, and double clicking on &amp;lt;i&amp;gt;'cygwin.bat'&amp;lt;/i&amp;gt;.&lt;br /&gt;
Type the following two commands in order into the cygwin bash shell followed by the enter key:&lt;br /&gt;
&lt;br /&gt;
  cd /&lt;br /&gt;
  tar -xzf crosstool_gcc-3.4.1.tar.gz&lt;br /&gt;
&lt;br /&gt;
This will start extracting the tar file to the '&amp;lt;cygroot&amp;gt;/opt' folder on your hard drive.&lt;br /&gt;
And thats it, now you have the pre-compiled GCC 3.4.1 [http://www.lduke.com (Thanks LDuke)] installed on your computer you can compile server plugins for both regular and SourceMM flavours with ease and compatibility with Valves GCC 3.4.1 requirements.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compiling Plugins==&lt;br /&gt;
Download the Makefile by clicking on [http://www.c0ld.net/Tutorials/CrossTool/Makefile this link.]&lt;br /&gt;
&lt;br /&gt;
Save it to your project's root source folder and open it with a text editor like notepad.&lt;br /&gt;
Inside the Makfile I have shown examples on how your paths are translated into unix/cygwin hybrid paths.&lt;br /&gt;
So, before trying any compling just yet, you need to insert the paths for the following.&lt;br /&gt;
&amp;lt;b&amp;gt;HL2SDK&amp;lt;/b&amp;gt;: The path to where your HL2SDK files are located.&lt;br /&gt;
&amp;lt;b&amp;gt;SMM_ROOT&amp;lt;/b&amp;gt;: The path to where you extracted the contents of the [http://www.sourcemm.net/ SourceMM package]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;SRCDS&amp;lt;/b&amp;gt;: The path to the linux SRCDS binaries.&lt;br /&gt;
&amp;lt;b&amp;gt;PLUGIN&amp;lt;/b&amp;gt;: The plugin filename.&lt;br /&gt;
For the convenience of those who dont have access to a linux srcds installation, you can grab the files required at one of the mirrors below.&lt;br /&gt;
Extract them to a new folder which will be your SRCDS path in the Makefile.&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt;The bin folder must be inside the srcds folder for maximum compatibility. For example, your files end up being something like this 'C:\MyFiles\srcds_l\bin\vstdlib_i486.so'.&lt;br /&gt;
&lt;br /&gt;
So, in your Makefile, SRCDS would be '/cygdrive/c/MyFiles/srcds_l'&lt;br /&gt;
&lt;br /&gt;
Download Mirrors for 'srcds_l_binaries.zip'&lt;br /&gt;
*[http://files.filefront.com/srcds_l_binarieszip/;4651213;;/fileinfo.html FileFront Mirror]&lt;br /&gt;
*[http://rapidshare.de/files/11597264/srcds_l_binaries.zip.html RapidShare.de Mirror]&lt;br /&gt;
Now you're ready to try compiling.&lt;br /&gt;
Back to the cygwin bash window, and we're now going to have to navigate to your code's location.&lt;br /&gt;
An exmaple path could be 'C:\MyCode\MyPlugin\' so in the bash shell we type the following:&lt;br /&gt;
&lt;br /&gt;
  cd /cygdrive/c/MyCode/MyPlugin/&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
If all your paths are set correctly, it should start compiling the plugin.&lt;br /&gt;
Ignore all the warnings in the HL2SDK, they are harmless.&lt;br /&gt;
What you should be looking out for are errors and warnings located inside your own code.&lt;br /&gt;
Unfortunately I cannot compile plugins for you, but there is a forum dedicated to helping you with hl2sdk coding problems.&lt;br /&gt;
&lt;br /&gt;
[http://www.sourcemod.net/forums/viewforum.php?f=24 Click here to visit the forum]&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
*Tutorial by: Jason &amp;quot;c0ldfyr3&amp;quot; Croghan&lt;br /&gt;
*Converted to Wiki by: James &amp;quot;sslice&amp;quot; Gray&lt;br /&gt;
*Cross Compiler compiled by: L. Duke&lt;br /&gt;
*MakeFile originally written by: David &amp;quot;BAILOPAN&amp;quot; Anderson&lt;br /&gt;
&lt;br /&gt;
Original Location: http://www.c0ld.net/index.php?inc=CrossTool&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation (SourceMM)]]&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Cross_Compiling_Plugins_(Metamod:Source)&amp;diff=2448</id>
		<title>Cross Compiling Plugins (Metamod:Source)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Cross_Compiling_Plugins_(Metamod:Source)&amp;diff=2448"/>
		<updated>2006-01-22T22:28:10Z</updated>

		<summary type="html">&lt;p&gt;Sslice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
The aim of this tutorial is to allow Windows Half-Life 2 plugin coders to compile their plugins on the same machine as the windows binaries.&lt;br /&gt;
The binaries are compatible with 99% of all linux servers and do not suffer from bulky file sizes.&lt;br /&gt;
One of the main benefits to using this method of compiling is that your code can be left wherever you currently have it so that compile time reluctance is removed and coders can concentrate on coding the plugins instead of &amp;quot;How on earth am I to compile this for linux ???&amp;quot;.&lt;br /&gt;
All you need to get started are the base Cygwin installation, the CrossTool.tar.gz file and the makefile. Links to the latter two are included at the end of the tutorial.&lt;br /&gt;
&lt;br /&gt;
This tutorial assumes the following.&lt;br /&gt;
&amp;lt;OL&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;You currently have a plugin which you can compile on windows using MSVC.&lt;br /&gt;
&amp;lt;LI&amp;gt;You have a copy of the HL2SDK Source Code installed on your hard drive.&lt;br /&gt;
&amp;lt;LI&amp;gt;You have a copy of the [http://www.sourcemm.net Metamod:Source] source code on your hard drive.&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although the cross compiler will allow for compiling of Valves standard plugins, I do not include a Makefile or instructions on how to successfuly occomplish this.&lt;br /&gt;
&lt;br /&gt;
==Installing Cygwin==&lt;br /&gt;
First, download CygWin from [http://www.cygwin.com www.CygWin.com] by clicking on &amp;quot;Install Now&amp;quot; located in the middle of the page.&lt;br /&gt;
&lt;br /&gt;
Once the download finishes, run &amp;lt;i&amp;gt;setup.exe&amp;lt;/i&amp;gt;&lt;br /&gt;
Click 'Next' on the introduction screen.&lt;br /&gt;
&lt;br /&gt;
On the second page, select 'Install from Internet'.&lt;br /&gt;
The following page is all user preferances, except the 'Default Text File Type' which is recommended you use 'Unix / binary'.&lt;br /&gt;
After clicking next, you are prompted for a CygWin temporary folder, any folder will suffice, the default is usually the better option.&lt;br /&gt;
The next screen's options are firewall/proxy settings, these are specific to the Computer/Network you are currently using.&lt;br /&gt;
Once you click next on the previous screen, the installer will download a list of mirror sites containing the CygWin binaries. Select one which you think is closest to you for a faster installation time.&lt;br /&gt;
Finaly, you are presented with a 'Select Packages' screen.&lt;br /&gt;
I *think* it should work fine without all of the dev packages.&lt;br /&gt;
&lt;br /&gt;
If anyone has gotten this to work by selecting less packages, please let me know so I can remove them from this list.&lt;br /&gt;
Items marked in bold are extremely important.&lt;br /&gt;
&lt;br /&gt;
*binutils&lt;br /&gt;
*&amp;lt;b&amp;gt;bzip2&amp;lt;/b&amp;gt;&lt;br /&gt;
*cygutils&lt;br /&gt;
*gcc&lt;br /&gt;
*&amp;lt;b&amp;gt;glib&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;gzip&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*libiconv&lt;br /&gt;
*&amp;lt;b&amp;gt;make&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;zlib&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;grep&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Click next and it should install the packages to the target path you specified.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing CrossTool==&lt;br /&gt;
Download the CrossCompiler from one of the mirrors below to the root cygwin folder &amp;lt;i&amp;gt;(c:\cygwin)&amp;lt;/i&amp;gt;.&lt;br /&gt;
If it gets renamed to 'crosstool_gcc-3.4.1.tar.tar' please rename it to 'crosstool_gcc-3.4.1.tar.gz'.&lt;br /&gt;
Download Mirrors for 'crosstool_gcc.tar.gz'&lt;br /&gt;
*[http://files.filefront.com/crosstool_gcc_341targz/;4650645;;/fileinfo.html FileFront]&lt;br /&gt;
*[http://rapidshare.de/files/11588086/crosstool_gcc-3.4.1.tar.gz.html RapidShare.de]&lt;br /&gt;
*[http://downloads.punkassfraggers.com/redirect.php?dlid=1224 PunkAssFraggers.com]&lt;br /&gt;
&lt;br /&gt;
This is the most important part of the entire tutorial.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Do not try and extract 'crosstool_gcc-3.4.1.tar.gz' using any Windows Archiving utility !&amp;lt;/b&amp;gt;&lt;br /&gt;
They do not extract the files correctly and if you don't get errors during the extraction, you will while trying to compile !&lt;br /&gt;
Once the download is complete, run cygwin by navigating to the cygwin root folder, and double clicking on &amp;lt;i&amp;gt;'cygwin.bat'&amp;lt;/i&amp;gt;.&lt;br /&gt;
Type the following two commands in order into the cygwin bash shell followed by the enter key:&lt;br /&gt;
&lt;br /&gt;
  cd /&lt;br /&gt;
  tar -xzf crosstool_gcc-3.4.1.tar.gz&lt;br /&gt;
&lt;br /&gt;
This will start extracting the tar file to the '&amp;lt;cygroot&amp;gt;/opt' folder on your hard drive.&lt;br /&gt;
And thats it, now you have the pre-compiled GCC 3.4.1 [http://www.lduke.com (Thanks LDuke)] installed on your computer you can compile server plugins for both regular and SourceMM flavours with ease and compatibility with Valves GCC 3.4.1 requirements.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compiling Plugins==&lt;br /&gt;
Download the Makefile by clicking on [http://www.c0ld.net/Tutorials/CrossTool/Makefile this link.]&lt;br /&gt;
&lt;br /&gt;
Save it to your project's root source folder and open it with a text editor like notepad.&lt;br /&gt;
Inside the Makfile I have shown examples on how your paths are translated into unix/cygwin hybrid paths.&lt;br /&gt;
So, before trying any compling just yet, you need to insert the paths for the following.&lt;br /&gt;
&amp;lt;b&amp;gt;HL2SDK&amp;lt;/b&amp;gt;: The path to where your HL2SDK files are located.&lt;br /&gt;
&amp;lt;b&amp;gt;SMM_ROOT&amp;lt;/b&amp;gt;: The path to where you extracted the contents of the [http://www.sourcemm.net/ SourceMM package]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;SRCDS&amp;lt;/b&amp;gt;: The path to the linux SRCDS binaries.&lt;br /&gt;
&amp;lt;b&amp;gt;PLUGIN&amp;lt;/b&amp;gt;: The plugin filename.&lt;br /&gt;
For the convenience of those who dont have access to a linux srcds installation, you can grab the files required at one of the mirrors below.&lt;br /&gt;
Extract them to a new folder which will be your SRCDS path in the Makefile.&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt;The bin folder must be inside the srcds folder for maximum compatibility. For example, your files end up being something like this 'C:\MyFiles\srcds_l\bin\vstdlib_i486.so'.&lt;br /&gt;
&lt;br /&gt;
So, in your Makefile, SRCDS would be '/cygdrive/c/MyFiles/srcds_l'&lt;br /&gt;
&lt;br /&gt;
Download Mirrors for 'srcds_l_binaries.zip'&lt;br /&gt;
*[http://files.filefront.com/srcds_l_binarieszip/;4651213;;/fileinfo.html FileFront Mirror]&lt;br /&gt;
*[http://rapidshare.de/files/11597264/srcds_l_binaries.zip.html RapidShare.de Mirror]&lt;br /&gt;
Now you're ready to try compiling.&lt;br /&gt;
Back to the cygwin bash window, and we're now going to have to navigate to your code's location.&lt;br /&gt;
An exmaple path could be 'C:\MyCode\MyPlugin\' so in the bash shell we type the following:&lt;br /&gt;
&lt;br /&gt;
  cd /cygdrive/c/MyCode/MyPlugin/&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
If all your paths are set correctly, it should start compiling the plugin.&lt;br /&gt;
Ignore all the warnings in the HL2SDK, they are harmless.&lt;br /&gt;
What you should be looking out for are errors and warnings located inside your own code.&lt;br /&gt;
Unfortunately I cannot compile plugins for you, but there is a forum dedicated to helping you with hl2sdk coding problems.&lt;br /&gt;
&lt;br /&gt;
[http://www.sourcemod.net/forums/viewforum.php?f=24 Click here to visit the forum]&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
*Tutorial by: Jason &amp;quot;c0ldfyr3&amp;quot; Croghan&lt;br /&gt;
*Conerted to Wiki by: James &amp;quot;sslice&amp;quot; Gray&lt;br /&gt;
*Cross Compiler compiled by: L. Duke&lt;br /&gt;
*MakeFile originally written by: David &amp;quot;BAILOPAN&amp;quot; Anderson&lt;br /&gt;
&lt;br /&gt;
Original Location: http://www.c0ld.net/index.php?inc=CrossTool&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation (SourceMM)]]&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Cross_Compiling_Plugins_(Metamod:Source)&amp;diff=2447</id>
		<title>Cross Compiling Plugins (Metamod:Source)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Cross_Compiling_Plugins_(Metamod:Source)&amp;diff=2447"/>
		<updated>2006-01-22T22:27:33Z</updated>

		<summary type="html">&lt;p&gt;Sslice: /* Installing CrossTool */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
The aim of this tutorial is to allow Windows Half-Life 2 plugin coders to compile their plugins on the same machine as the windows binaries.&lt;br /&gt;
The binaries are compatible with 99% of all linux servers and do not suffer from bulky file sizes.&lt;br /&gt;
One of the main benefits to using this method of compiling is that your code can be left wherever you currently have it so that compile time reluctance is removed and coders can concentrate on coding the plugins instead of &amp;quot;How on earth am I to compile this for linux ???&amp;quot;.&lt;br /&gt;
All you need to get started are the base Cygwin installation, the CrossTool.tar.gz file and the makefile. Links to the latter two are included at the end of the tutorial.&lt;br /&gt;
&lt;br /&gt;
This tutorial assumes the following.&lt;br /&gt;
&amp;lt;OL&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;You currently have a plugin which you can compile on windows using MSVC.&lt;br /&gt;
&amp;lt;LI&amp;gt;You have a copy of the HL2SDK Source Code installed on your hard drive.&lt;br /&gt;
&amp;lt;LI&amp;gt;You have a copy of the [http://www.sourcemm.net Metamod:Source] source code on your hard drive.&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although the cross compiler will allow for compiling of Valves standard plugins, I do not include a Makefile or instructions on how to successfuly occomplish this.&lt;br /&gt;
&lt;br /&gt;
==Installing Cygwin==&lt;br /&gt;
First, download CygWin from [http://www.cygwin.com www.CygWin.com] by clicking on &amp;quot;Install Now&amp;quot; located in the middle of the page.&lt;br /&gt;
&lt;br /&gt;
Once the download finishes, run &amp;lt;i&amp;gt;setup.exe&amp;lt;/i&amp;gt;&lt;br /&gt;
Click 'Next' on the introduction screen.&lt;br /&gt;
&lt;br /&gt;
On the second page, select 'Install from Internet'.&lt;br /&gt;
The following page is all user preferances, except the 'Default Text File Type' which is recommended you use 'Unix / binary'.&lt;br /&gt;
After clicking next, you are prompted for a CygWin temporary folder, any folder will suffice, the default is usually the better option.&lt;br /&gt;
The next screen's options are firewall/proxy settings, these are specific to the Computer/Network you are currently using.&lt;br /&gt;
Once you click next on the previous screen, the installer will download a list of mirror sites containing the CygWin binaries. Select one which you think is closest to you for a faster installation time.&lt;br /&gt;
Finaly, you are presented with a 'Select Packages' screen.&lt;br /&gt;
I *think* it should work fine without all of the dev packages.&lt;br /&gt;
&lt;br /&gt;
If anyone has gotten this to work by selecting less packages, please let me know so I can remove them from this list.&lt;br /&gt;
Items marked in bold are extremely important.&lt;br /&gt;
&lt;br /&gt;
*binutils&lt;br /&gt;
*&amp;lt;b&amp;gt;bzip2&amp;lt;/b&amp;gt;&lt;br /&gt;
*cygutils&lt;br /&gt;
*gcc&lt;br /&gt;
*&amp;lt;b&amp;gt;glib&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;gzip&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*libiconv&lt;br /&gt;
*&amp;lt;b&amp;gt;make&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;zlib&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;grep&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Click next and it should install the packages to the target path you specified.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing CrossTool==&lt;br /&gt;
Download the CrossCompiler from one of the mirrors below to the root cygwin folder &amp;lt;i&amp;gt;(c:\cygwin)&amp;lt;/i&amp;gt;.&lt;br /&gt;
If it gets renamed to 'crosstool_gcc-3.4.1.tar.tar' please rename it to 'crosstool_gcc-3.4.1.tar.gz'.&lt;br /&gt;
Download Mirrors for 'crosstool_gcc.tar.gz'&lt;br /&gt;
*[http://files.filefront.com/crosstool_gcc_341targz/;4650645;;/fileinfo.html FileFront]&lt;br /&gt;
*[http://rapidshare.de/files/11588086/crosstool_gcc-3.4.1.tar.gz.html RapidShare.de]&lt;br /&gt;
*[http://downloads.punkassfraggers.com/redirect.php?dlid=1224 PunkAssFraggers.com]&lt;br /&gt;
&lt;br /&gt;
This is the most important part of the entire tutorial.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Do not try and extract 'crosstool_gcc-3.4.1.tar.gz' using any Windows Archiving utility !&amp;lt;/b&amp;gt;&lt;br /&gt;
They do not extract the files correctly and if you don't get errors during the extraction, you will while trying to compile !&lt;br /&gt;
Once the download is complete, run cygwin by navigating to the cygwin root folder, and double clicking on &amp;lt;i&amp;gt;'cygwin.bat'&amp;lt;/i&amp;gt;.&lt;br /&gt;
Type the following two commands in order into the cygwin bash shell followed by the enter key:&lt;br /&gt;
&lt;br /&gt;
  cd /&lt;br /&gt;
  tar -xzf crosstool_gcc-3.4.1.tar.gz&lt;br /&gt;
&lt;br /&gt;
This will start extracting the tar file to the '&amp;lt;cygroot&amp;gt;/opt' folder on your hard drive.&lt;br /&gt;
And thats it, now you have the pre-compiled GCC 3.4.1 [http://www.lduke.com (Thanks LDuke)] installed on your computer you can compile server plugins for both regular and SourceMM flavours with ease and compatibility with Valves GCC 3.4.1 requirements.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compiling Plugins==&lt;br /&gt;
Download the Makefile by clicking on [http://www.c0ld.net/Tutorials/CrossTool/Makefile this link.]&lt;br /&gt;
&lt;br /&gt;
Save it to your project's root source folder and open it with a text editor like notepad.&lt;br /&gt;
Inside the Makfile I have shown examples on how your paths are translated into unix/cygwin hybrid paths.&lt;br /&gt;
So, before trying any compling just yet, you need to insert the paths for the following.&lt;br /&gt;
&amp;lt;b&amp;gt;HL2SDK&amp;lt;/b&amp;gt;: The path to where your HL2SDK files are located.&lt;br /&gt;
&amp;lt;b&amp;gt;SMM_ROOT&amp;lt;/b&amp;gt;: The path to where you extracted the contents of the [http://www.sourcemm.net/ SourceMM package]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;SRCDS&amp;lt;/b&amp;gt;: The path to the linux SRCDS binaries.&lt;br /&gt;
&amp;lt;b&amp;gt;PLUGIN&amp;lt;/b&amp;gt;: The plugin filename.&lt;br /&gt;
For the convenience of those who dont have access to a linux srcds installation, you can grab the files required at one of the mirrors below.&lt;br /&gt;
Extract them to a new folder which will be your SRCDS path in the Makefile.&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt;The bin folder must be inside the srcds folder for maximum compatibility. For example, your files end up being something like this 'C:\MyFiles\srcds_l\bin\vstdlib_i486.so'.&lt;br /&gt;
&lt;br /&gt;
So, in your Makefile, SRCDS would be '/cygdrive/c/MyFiles/srcds_l'&lt;br /&gt;
&lt;br /&gt;
Download Mirrors for 'srcds_l_binaries.zip'&lt;br /&gt;
*[http://files.filefront.com/srcds_l_binarieszip/;4651213;;/fileinfo.html FileFront Mirror]&lt;br /&gt;
*[http://rapidshare.de/files/11597264/srcds_l_binaries.zip.html RapidShare.de Mirror]&lt;br /&gt;
Now you're ready to try compiling.&lt;br /&gt;
Back to the cygwin bash window, and we're now going to have to navigate to your code's location.&lt;br /&gt;
An exmaple path could be 'C:\MyCode\MyPlugin\' so in the bash shell we type the following:&lt;br /&gt;
&lt;br /&gt;
  cd /cygdrive/c/MyCode/MyPlugin/&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
If all your paths are set correctly, it should start compiling the plugin.&lt;br /&gt;
Ignore all the warnings in the HL2SDK, they are harmless.&lt;br /&gt;
What you should be looking out for are errors and warnings located inside your own code.&lt;br /&gt;
Unfortunately I cannot compile plugins for you, but there is a forum dedicated to helping you with hl2sdk coding problems.&lt;br /&gt;
&lt;br /&gt;
[http://www.sourcemod.net/forums/viewforum.php?f=24 Click here to visit the forum]&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
*Tutorial by: Jason &amp;quot;c0ldfyr3&amp;quot; Croghan&lt;br /&gt;
*Conerted to Wiki by: James &amp;quot;sslice&amp;quot; Gray&lt;br /&gt;
*Cross Compiler compiled by: L. Duke&lt;br /&gt;
*MakeFile originally written by: David &amp;quot;BAILOPAN&amp;quot; Anderson&lt;br /&gt;
&lt;br /&gt;
Original Location: http://www.c0ld.net/index.php?inc=CrossTool&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Cross_Compiling_Plugins_(Metamod:Source)&amp;diff=2446</id>
		<title>Cross Compiling Plugins (Metamod:Source)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Cross_Compiling_Plugins_(Metamod:Source)&amp;diff=2446"/>
		<updated>2006-01-22T22:27:14Z</updated>

		<summary type="html">&lt;p&gt;Sslice: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
The aim of this tutorial is to allow Windows Half-Life 2 plugin coders to compile their plugins on the same machine as the windows binaries.&lt;br /&gt;
The binaries are compatible with 99% of all linux servers and do not suffer from bulky file sizes.&lt;br /&gt;
One of the main benefits to using this method of compiling is that your code can be left wherever you currently have it so that compile time reluctance is removed and coders can concentrate on coding the plugins instead of &amp;quot;How on earth am I to compile this for linux ???&amp;quot;.&lt;br /&gt;
All you need to get started are the base Cygwin installation, the CrossTool.tar.gz file and the makefile. Links to the latter two are included at the end of the tutorial.&lt;br /&gt;
&lt;br /&gt;
This tutorial assumes the following.&lt;br /&gt;
&amp;lt;OL&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;You currently have a plugin which you can compile on windows using MSVC.&lt;br /&gt;
&amp;lt;LI&amp;gt;You have a copy of the HL2SDK Source Code installed on your hard drive.&lt;br /&gt;
&amp;lt;LI&amp;gt;You have a copy of the [http://www.sourcemm.net Metamod:Source] source code on your hard drive.&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although the cross compiler will allow for compiling of Valves standard plugins, I do not include a Makefile or instructions on how to successfuly occomplish this.&lt;br /&gt;
&lt;br /&gt;
==Installing Cygwin==&lt;br /&gt;
First, download CygWin from [http://www.cygwin.com www.CygWin.com] by clicking on &amp;quot;Install Now&amp;quot; located in the middle of the page.&lt;br /&gt;
&lt;br /&gt;
Once the download finishes, run &amp;lt;i&amp;gt;setup.exe&amp;lt;/i&amp;gt;&lt;br /&gt;
Click 'Next' on the introduction screen.&lt;br /&gt;
&lt;br /&gt;
On the second page, select 'Install from Internet'.&lt;br /&gt;
The following page is all user preferances, except the 'Default Text File Type' which is recommended you use 'Unix / binary'.&lt;br /&gt;
After clicking next, you are prompted for a CygWin temporary folder, any folder will suffice, the default is usually the better option.&lt;br /&gt;
The next screen's options are firewall/proxy settings, these are specific to the Computer/Network you are currently using.&lt;br /&gt;
Once you click next on the previous screen, the installer will download a list of mirror sites containing the CygWin binaries. Select one which you think is closest to you for a faster installation time.&lt;br /&gt;
Finaly, you are presented with a 'Select Packages' screen.&lt;br /&gt;
I *think* it should work fine without all of the dev packages.&lt;br /&gt;
&lt;br /&gt;
If anyone has gotten this to work by selecting less packages, please let me know so I can remove them from this list.&lt;br /&gt;
Items marked in bold are extremely important.&lt;br /&gt;
&lt;br /&gt;
*binutils&lt;br /&gt;
*&amp;lt;b&amp;gt;bzip2&amp;lt;/b&amp;gt;&lt;br /&gt;
*cygutils&lt;br /&gt;
*gcc&lt;br /&gt;
*&amp;lt;b&amp;gt;glib&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;gzip&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*libiconv&lt;br /&gt;
*&amp;lt;b&amp;gt;make&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;zlib&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;grep&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Click next and it should install the packages to the target path you specified.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing CrossTool==&lt;br /&gt;
Download the CrossCompiler from one of the mirrors below to the root cygwin folder &amp;lt;i&amp;gt;(c:\cygwin)&amp;lt;/i&amp;gt;.&lt;br /&gt;
If it gets renamed to 'crosstool_gcc-3.4.1.tar.tar' please rename it to 'crosstool_gcc-3.4.1.tar.gz'.&lt;br /&gt;
&amp;lt;UL&amp;gt;Download Mirrors for 'crosstool_gcc.tar.gz'&lt;br /&gt;
&amp;lt;LI&amp;gt;[http://files.filefront.com/crosstool_gcc_341targz/;4650645;;/fileinfo.html FileFront]&lt;br /&gt;
&amp;lt;LI&amp;gt;[http://rapidshare.de/files/11588086/crosstool_gcc-3.4.1.tar.gz.html RapidShare.de]&lt;br /&gt;
&amp;lt;LI&amp;gt;[http://downloads.punkassfraggers.com/redirect.php?dlid=1224 PunkAssFraggers.com]&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
This is the most important part of the entire tutorial.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Do not try and extract 'crosstool_gcc-3.4.1.tar.gz' using any Windows Archiving utility !&amp;lt;/b&amp;gt;&lt;br /&gt;
They do not extract the files correctly and if you don't get errors during the extraction, you will while trying to compile !&lt;br /&gt;
Once the download is complete, run cygwin by navigating to the cygwin root folder, and double clicking on &amp;lt;i&amp;gt;'cygwin.bat'&amp;lt;/i&amp;gt;.&lt;br /&gt;
Type the following two commands in order into the cygwin bash shell followed by the enter key:&lt;br /&gt;
&lt;br /&gt;
  cd /&lt;br /&gt;
  tar -xzf crosstool_gcc-3.4.1.tar.gz&lt;br /&gt;
&lt;br /&gt;
This will start extracting the tar file to the '&amp;lt;cygroot&amp;gt;/opt' folder on your hard drive.&lt;br /&gt;
And thats it, now you have the pre-compiled GCC 3.4.1 [http://www.lduke.com (Thanks LDuke)] installed on your computer you can compile server plugins for both regular and SourceMM flavours with ease and compatibility with Valves GCC 3.4.1 requirements.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compiling Plugins==&lt;br /&gt;
Download the Makefile by clicking on [http://www.c0ld.net/Tutorials/CrossTool/Makefile this link.]&lt;br /&gt;
&lt;br /&gt;
Save it to your project's root source folder and open it with a text editor like notepad.&lt;br /&gt;
Inside the Makfile I have shown examples on how your paths are translated into unix/cygwin hybrid paths.&lt;br /&gt;
So, before trying any compling just yet, you need to insert the paths for the following.&lt;br /&gt;
&amp;lt;b&amp;gt;HL2SDK&amp;lt;/b&amp;gt;: The path to where your HL2SDK files are located.&lt;br /&gt;
&amp;lt;b&amp;gt;SMM_ROOT&amp;lt;/b&amp;gt;: The path to where you extracted the contents of the [http://www.sourcemm.net/ SourceMM package]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;SRCDS&amp;lt;/b&amp;gt;: The path to the linux SRCDS binaries.&lt;br /&gt;
&amp;lt;b&amp;gt;PLUGIN&amp;lt;/b&amp;gt;: The plugin filename.&lt;br /&gt;
For the convenience of those who dont have access to a linux srcds installation, you can grab the files required at one of the mirrors below.&lt;br /&gt;
Extract them to a new folder which will be your SRCDS path in the Makefile.&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt;The bin folder must be inside the srcds folder for maximum compatibility. For example, your files end up being something like this 'C:\MyFiles\srcds_l\bin\vstdlib_i486.so'.&lt;br /&gt;
&lt;br /&gt;
So, in your Makefile, SRCDS would be '/cygdrive/c/MyFiles/srcds_l'&lt;br /&gt;
&lt;br /&gt;
Download Mirrors for 'srcds_l_binaries.zip'&lt;br /&gt;
*[http://files.filefront.com/srcds_l_binarieszip/;4651213;;/fileinfo.html FileFront Mirror]&lt;br /&gt;
*[http://rapidshare.de/files/11597264/srcds_l_binaries.zip.html RapidShare.de Mirror]&lt;br /&gt;
Now you're ready to try compiling.&lt;br /&gt;
Back to the cygwin bash window, and we're now going to have to navigate to your code's location.&lt;br /&gt;
An exmaple path could be 'C:\MyCode\MyPlugin\' so in the bash shell we type the following:&lt;br /&gt;
&lt;br /&gt;
  cd /cygdrive/c/MyCode/MyPlugin/&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
If all your paths are set correctly, it should start compiling the plugin.&lt;br /&gt;
Ignore all the warnings in the HL2SDK, they are harmless.&lt;br /&gt;
What you should be looking out for are errors and warnings located inside your own code.&lt;br /&gt;
Unfortunately I cannot compile plugins for you, but there is a forum dedicated to helping you with hl2sdk coding problems.&lt;br /&gt;
&lt;br /&gt;
[http://www.sourcemod.net/forums/viewforum.php?f=24 Click here to visit the forum]&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
*Tutorial by: Jason &amp;quot;c0ldfyr3&amp;quot; Croghan&lt;br /&gt;
*Conerted to Wiki by: James &amp;quot;sslice&amp;quot; Gray&lt;br /&gt;
*Cross Compiler compiled by: L. Duke&lt;br /&gt;
*MakeFile originally written by: David &amp;quot;BAILOPAN&amp;quot; Anderson&lt;br /&gt;
&lt;br /&gt;
Original Location: http://www.c0ld.net/index.php?inc=CrossTool&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Cross_Compiling_Plugins_(Metamod:Source)&amp;diff=2445</id>
		<title>Cross Compiling Plugins (Metamod:Source)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Cross_Compiling_Plugins_(Metamod:Source)&amp;diff=2445"/>
		<updated>2006-01-22T22:26:47Z</updated>

		<summary type="html">&lt;p&gt;Sslice: /* Installing The CrossCompiler */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
The aim of this tutorial is to allow Windows Half-Life 2 plugin coders to compile their plugins on the same machine as the windows binaries.&lt;br /&gt;
The binaries are compatible with 99% of all linux servers and do not suffer from bulky file sizes.&lt;br /&gt;
One of the main benefits to using this method of compiling is that your code can be left wherever you currently have it so that compile time reluctance is removed and coders can concentrate on coding the plugins instead of &amp;quot;How on earth am I to compile this for linux ???&amp;quot;.&lt;br /&gt;
All you need to get started are the base Cygwin installation, the CrossTool.tar.gz file and the makefile. Links to the latter two are included at the end of the tutorial.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;This tutorial assumes the following.&lt;br /&gt;
&amp;lt;LI&amp;gt;You currently have a plugin which you can compile on windows using MSVC.&lt;br /&gt;
&amp;lt;LI&amp;gt;You have a copy of the HL2SDK Source Code installed on your hard drive.&lt;br /&gt;
&amp;lt;LI&amp;gt;You have a copy of the [http://www.sourcemm.net Metamod:Source] source code on your hard drive.&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although the cross compiler will allow for compiling of Valves standard plugins, I do not include a Makefile or instructions on how to successfuly occomplish this.&lt;br /&gt;
&lt;br /&gt;
==Installing Cygwin==&lt;br /&gt;
First, download CygWin from [http://www.cygwin.com www.CygWin.com] by clicking on &amp;quot;Install Now&amp;quot; located in the middle of the page.&lt;br /&gt;
&lt;br /&gt;
Once the download finishes, run &amp;lt;i&amp;gt;setup.exe&amp;lt;/i&amp;gt;&lt;br /&gt;
Click 'Next' on the introduction screen.&lt;br /&gt;
&lt;br /&gt;
On the second page, select 'Install from Internet'.&lt;br /&gt;
The following page is all user preferances, except the 'Default Text File Type' which is recommended you use 'Unix / binary'.&lt;br /&gt;
After clicking next, you are prompted for a CygWin temporary folder, any folder will suffice, the default is usually the better option.&lt;br /&gt;
The next screen's options are firewall/proxy settings, these are specific to the Computer/Network you are currently using.&lt;br /&gt;
Once you click next on the previous screen, the installer will download a list of mirror sites containing the CygWin binaries. Select one which you think is closest to you for a faster installation time.&lt;br /&gt;
Finaly, you are presented with a 'Select Packages' screen.&lt;br /&gt;
I *think* it should work fine without all of the dev packages.&lt;br /&gt;
&lt;br /&gt;
If anyone has gotten this to work by selecting less packages, please let me know so I can remove them from this list.&lt;br /&gt;
Items marked in bold are extremely important.&lt;br /&gt;
&lt;br /&gt;
*binutils&lt;br /&gt;
*&amp;lt;b&amp;gt;bzip2&amp;lt;/b&amp;gt;&lt;br /&gt;
*cygutils&lt;br /&gt;
*gcc&lt;br /&gt;
*&amp;lt;b&amp;gt;glib&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;gzip&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*libiconv&lt;br /&gt;
*&amp;lt;b&amp;gt;make&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;zlib&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;grep&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Click next and it should install the packages to the target path you specified.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing CrossTool==&lt;br /&gt;
Download the CrossCompiler from one of the mirrors below to the root cygwin folder &amp;lt;i&amp;gt;(c:\cygwin)&amp;lt;/i&amp;gt;.&lt;br /&gt;
If it gets renamed to 'crosstool_gcc-3.4.1.tar.tar' please rename it to 'crosstool_gcc-3.4.1.tar.gz'.&lt;br /&gt;
&amp;lt;UL&amp;gt;Download Mirrors for 'crosstool_gcc.tar.gz'&lt;br /&gt;
&amp;lt;LI&amp;gt;[http://files.filefront.com/crosstool_gcc_341targz/;4650645;;/fileinfo.html FileFront]&lt;br /&gt;
&amp;lt;LI&amp;gt;[http://rapidshare.de/files/11588086/crosstool_gcc-3.4.1.tar.gz.html RapidShare.de]&lt;br /&gt;
&amp;lt;LI&amp;gt;[http://downloads.punkassfraggers.com/redirect.php?dlid=1224 PunkAssFraggers.com]&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
This is the most important part of the entire tutorial.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Do not try and extract 'crosstool_gcc-3.4.1.tar.gz' using any Windows Archiving utility !&amp;lt;/b&amp;gt;&lt;br /&gt;
They do not extract the files correctly and if you don't get errors during the extraction, you will while trying to compile !&lt;br /&gt;
Once the download is complete, run cygwin by navigating to the cygwin root folder, and double clicking on &amp;lt;i&amp;gt;'cygwin.bat'&amp;lt;/i&amp;gt;.&lt;br /&gt;
Type the following two commands in order into the cygwin bash shell followed by the enter key:&lt;br /&gt;
&lt;br /&gt;
  cd /&lt;br /&gt;
  tar -xzf crosstool_gcc-3.4.1.tar.gz&lt;br /&gt;
&lt;br /&gt;
This will start extracting the tar file to the '&amp;lt;cygroot&amp;gt;/opt' folder on your hard drive.&lt;br /&gt;
And thats it, now you have the pre-compiled GCC 3.4.1 [http://www.lduke.com (Thanks LDuke)] installed on your computer you can compile server plugins for both regular and SourceMM flavours with ease and compatibility with Valves GCC 3.4.1 requirements.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compiling Plugins==&lt;br /&gt;
Download the Makefile by clicking on [http://www.c0ld.net/Tutorials/CrossTool/Makefile this link.]&lt;br /&gt;
&lt;br /&gt;
Save it to your project's root source folder and open it with a text editor like notepad.&lt;br /&gt;
Inside the Makfile I have shown examples on how your paths are translated into unix/cygwin hybrid paths.&lt;br /&gt;
So, before trying any compling just yet, you need to insert the paths for the following.&lt;br /&gt;
&amp;lt;b&amp;gt;HL2SDK&amp;lt;/b&amp;gt;: The path to where your HL2SDK files are located.&lt;br /&gt;
&amp;lt;b&amp;gt;SMM_ROOT&amp;lt;/b&amp;gt;: The path to where you extracted the contents of the [http://www.sourcemm.net/ SourceMM package]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;SRCDS&amp;lt;/b&amp;gt;: The path to the linux SRCDS binaries.&lt;br /&gt;
&amp;lt;b&amp;gt;PLUGIN&amp;lt;/b&amp;gt;: The plugin filename.&lt;br /&gt;
For the convenience of those who dont have access to a linux srcds installation, you can grab the files required at one of the mirrors below.&lt;br /&gt;
Extract them to a new folder which will be your SRCDS path in the Makefile.&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt;The bin folder must be inside the srcds folder for maximum compatibility. For example, your files end up being something like this 'C:\MyFiles\srcds_l\bin\vstdlib_i486.so'.&lt;br /&gt;
&lt;br /&gt;
So, in your Makefile, SRCDS would be '/cygdrive/c/MyFiles/srcds_l'&lt;br /&gt;
&lt;br /&gt;
Download Mirrors for 'srcds_l_binaries.zip'&lt;br /&gt;
*[http://files.filefront.com/srcds_l_binarieszip/;4651213;;/fileinfo.html FileFront Mirror]&lt;br /&gt;
*[http://rapidshare.de/files/11597264/srcds_l_binaries.zip.html RapidShare.de Mirror]&lt;br /&gt;
Now you're ready to try compiling.&lt;br /&gt;
Back to the cygwin bash window, and we're now going to have to navigate to your code's location.&lt;br /&gt;
An exmaple path could be 'C:\MyCode\MyPlugin\' so in the bash shell we type the following:&lt;br /&gt;
&lt;br /&gt;
  cd /cygdrive/c/MyCode/MyPlugin/&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
If all your paths are set correctly, it should start compiling the plugin.&lt;br /&gt;
Ignore all the warnings in the HL2SDK, they are harmless.&lt;br /&gt;
What you should be looking out for are errors and warnings located inside your own code.&lt;br /&gt;
Unfortunately I cannot compile plugins for you, but there is a forum dedicated to helping you with hl2sdk coding problems.&lt;br /&gt;
&lt;br /&gt;
[http://www.sourcemod.net/forums/viewforum.php?f=24 Click here to visit the forum]&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
*Tutorial by: Jason &amp;quot;c0ldfyr3&amp;quot; Croghan&lt;br /&gt;
*Conerted to Wiki by: James &amp;quot;sslice&amp;quot; Gray&lt;br /&gt;
*Cross Compiler compiled by: L. Duke&lt;br /&gt;
*MakeFile originally written by: David &amp;quot;BAILOPAN&amp;quot; Anderson&lt;br /&gt;
&lt;br /&gt;
Original Location: http://www.c0ld.net/index.php?inc=CrossTool&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Cross_Compiling_Plugins_(Metamod:Source)&amp;diff=2444</id>
		<title>Cross Compiling Plugins (Metamod:Source)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Cross_Compiling_Plugins_(Metamod:Source)&amp;diff=2444"/>
		<updated>2006-01-22T22:26:33Z</updated>

		<summary type="html">&lt;p&gt;Sslice: /* Installing The CrossCompiler */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
The aim of this tutorial is to allow Windows Half-Life 2 plugin coders to compile their plugins on the same machine as the windows binaries.&lt;br /&gt;
The binaries are compatible with 99% of all linux servers and do not suffer from bulky file sizes.&lt;br /&gt;
One of the main benefits to using this method of compiling is that your code can be left wherever you currently have it so that compile time reluctance is removed and coders can concentrate on coding the plugins instead of &amp;quot;How on earth am I to compile this for linux ???&amp;quot;.&lt;br /&gt;
All you need to get started are the base Cygwin installation, the CrossTool.tar.gz file and the makefile. Links to the latter two are included at the end of the tutorial.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;This tutorial assumes the following.&lt;br /&gt;
&amp;lt;LI&amp;gt;You currently have a plugin which you can compile on windows using MSVC.&lt;br /&gt;
&amp;lt;LI&amp;gt;You have a copy of the HL2SDK Source Code installed on your hard drive.&lt;br /&gt;
&amp;lt;LI&amp;gt;You have a copy of the [http://www.sourcemm.net Metamod:Source] source code on your hard drive.&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although the cross compiler will allow for compiling of Valves standard plugins, I do not include a Makefile or instructions on how to successfuly occomplish this.&lt;br /&gt;
&lt;br /&gt;
==Installing Cygwin==&lt;br /&gt;
First, download CygWin from [http://www.cygwin.com www.CygWin.com] by clicking on &amp;quot;Install Now&amp;quot; located in the middle of the page.&lt;br /&gt;
&lt;br /&gt;
Once the download finishes, run &amp;lt;i&amp;gt;setup.exe&amp;lt;/i&amp;gt;&lt;br /&gt;
Click 'Next' on the introduction screen.&lt;br /&gt;
&lt;br /&gt;
On the second page, select 'Install from Internet'.&lt;br /&gt;
The following page is all user preferances, except the 'Default Text File Type' which is recommended you use 'Unix / binary'.&lt;br /&gt;
After clicking next, you are prompted for a CygWin temporary folder, any folder will suffice, the default is usually the better option.&lt;br /&gt;
The next screen's options are firewall/proxy settings, these are specific to the Computer/Network you are currently using.&lt;br /&gt;
Once you click next on the previous screen, the installer will download a list of mirror sites containing the CygWin binaries. Select one which you think is closest to you for a faster installation time.&lt;br /&gt;
Finaly, you are presented with a 'Select Packages' screen.&lt;br /&gt;
I *think* it should work fine without all of the dev packages.&lt;br /&gt;
&lt;br /&gt;
If anyone has gotten this to work by selecting less packages, please let me know so I can remove them from this list.&lt;br /&gt;
Items marked in bold are extremely important.&lt;br /&gt;
&lt;br /&gt;
*binutils&lt;br /&gt;
*&amp;lt;b&amp;gt;bzip2&amp;lt;/b&amp;gt;&lt;br /&gt;
*cygutils&lt;br /&gt;
*gcc&lt;br /&gt;
*&amp;lt;b&amp;gt;glib&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;gzip&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*libiconv&lt;br /&gt;
*&amp;lt;b&amp;gt;make&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;zlib&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;grep&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Click next and it should install the packages to the target path you specified.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing The CrossCompiler==&lt;br /&gt;
Download the CrossCompiler from one of the mirrors below to the root cygwin folder &amp;lt;i&amp;gt;(c:\cygwin)&amp;lt;/i&amp;gt;.&lt;br /&gt;
If it gets renamed to 'crosstool_gcc-3.4.1.tar.tar' please rename it to 'crosstool_gcc-3.4.1.tar.gz'.&lt;br /&gt;
&amp;lt;UL&amp;gt;Download Mirrors for 'crosstool_gcc.tar.gz'&lt;br /&gt;
&amp;lt;LI&amp;gt;[http://files.filefront.com/crosstool_gcc_341targz/;4650645;;/fileinfo.html FileFront]&lt;br /&gt;
&amp;lt;LI&amp;gt;[http://rapidshare.de/files/11588086/crosstool_gcc-3.4.1.tar.gz.html RapidShare.de]&lt;br /&gt;
&amp;lt;LI&amp;gt;[http://downloads.punkassfraggers.com/redirect.php?dlid=1224 PunkAssFraggers.com]&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
This is the most important part of the entire tutorial.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Do not try and extract 'crosstool_gcc-3.4.1.tar.gz' using any Windows Archiving utility !&amp;lt;/b&amp;gt;&lt;br /&gt;
They do not extract the files correctly and if you don't get errors during the extraction, you will while trying to compile !&lt;br /&gt;
Once the download is complete, run cygwin by navigating to the cygwin root folder, and double clicking on &amp;lt;i&amp;gt;'cygwin.bat'&amp;lt;/i&amp;gt;.&lt;br /&gt;
Type the following two commands in order into the cygwin bash shell followed by the enter key:&lt;br /&gt;
&lt;br /&gt;
  cd /&lt;br /&gt;
  tar -xzf crosstool_gcc-3.4.1.tar.gz&lt;br /&gt;
&lt;br /&gt;
This will start extracting the tar file to the '&amp;lt;cygroot&amp;gt;/opt' folder on your hard drive.&lt;br /&gt;
And thats it, now you have the pre-compiled GCC 3.4.1 [http://www.lduke.com (Thanks LDuke)] installed on your computer you can compile server plugins for both regular and SourceMM flavours with ease and compatibility with Valves GCC 3.4.1 requirements.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compiling Plugins==&lt;br /&gt;
Download the Makefile by clicking on [http://www.c0ld.net/Tutorials/CrossTool/Makefile this link.]&lt;br /&gt;
&lt;br /&gt;
Save it to your project's root source folder and open it with a text editor like notepad.&lt;br /&gt;
Inside the Makfile I have shown examples on how your paths are translated into unix/cygwin hybrid paths.&lt;br /&gt;
So, before trying any compling just yet, you need to insert the paths for the following.&lt;br /&gt;
&amp;lt;b&amp;gt;HL2SDK&amp;lt;/b&amp;gt;: The path to where your HL2SDK files are located.&lt;br /&gt;
&amp;lt;b&amp;gt;SMM_ROOT&amp;lt;/b&amp;gt;: The path to where you extracted the contents of the [http://www.sourcemm.net/ SourceMM package]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;SRCDS&amp;lt;/b&amp;gt;: The path to the linux SRCDS binaries.&lt;br /&gt;
&amp;lt;b&amp;gt;PLUGIN&amp;lt;/b&amp;gt;: The plugin filename.&lt;br /&gt;
For the convenience of those who dont have access to a linux srcds installation, you can grab the files required at one of the mirrors below.&lt;br /&gt;
Extract them to a new folder which will be your SRCDS path in the Makefile.&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt;The bin folder must be inside the srcds folder for maximum compatibility. For example, your files end up being something like this 'C:\MyFiles\srcds_l\bin\vstdlib_i486.so'.&lt;br /&gt;
&lt;br /&gt;
So, in your Makefile, SRCDS would be '/cygdrive/c/MyFiles/srcds_l'&lt;br /&gt;
&lt;br /&gt;
Download Mirrors for 'srcds_l_binaries.zip'&lt;br /&gt;
*[http://files.filefront.com/srcds_l_binarieszip/;4651213;;/fileinfo.html FileFront Mirror]&lt;br /&gt;
*[http://rapidshare.de/files/11597264/srcds_l_binaries.zip.html RapidShare.de Mirror]&lt;br /&gt;
Now you're ready to try compiling.&lt;br /&gt;
Back to the cygwin bash window, and we're now going to have to navigate to your code's location.&lt;br /&gt;
An exmaple path could be 'C:\MyCode\MyPlugin\' so in the bash shell we type the following:&lt;br /&gt;
&lt;br /&gt;
  cd /cygdrive/c/MyCode/MyPlugin/&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
If all your paths are set correctly, it should start compiling the plugin.&lt;br /&gt;
Ignore all the warnings in the HL2SDK, they are harmless.&lt;br /&gt;
What you should be looking out for are errors and warnings located inside your own code.&lt;br /&gt;
Unfortunately I cannot compile plugins for you, but there is a forum dedicated to helping you with hl2sdk coding problems.&lt;br /&gt;
&lt;br /&gt;
[http://www.sourcemod.net/forums/viewforum.php?f=24 Click here to visit the forum]&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
*Tutorial by: Jason &amp;quot;c0ldfyr3&amp;quot; Croghan&lt;br /&gt;
*Conerted to Wiki by: James &amp;quot;sslice&amp;quot; Gray&lt;br /&gt;
*Cross Compiler compiled by: L. Duke&lt;br /&gt;
*MakeFile originally written by: David &amp;quot;BAILOPAN&amp;quot; Anderson&lt;br /&gt;
&lt;br /&gt;
Original Location: http://www.c0ld.net/index.php?inc=CrossTool&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Cross_Compiling_Plugins_(Metamod:Source)&amp;diff=2443</id>
		<title>Cross Compiling Plugins (Metamod:Source)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Cross_Compiling_Plugins_(Metamod:Source)&amp;diff=2443"/>
		<updated>2006-01-22T22:25:57Z</updated>

		<summary type="html">&lt;p&gt;Sslice: /* Compiling Plugins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
The aim of this tutorial is to allow Windows Half-Life 2 plugin coders to compile their plugins on the same machine as the windows binaries.&lt;br /&gt;
The binaries are compatible with 99% of all linux servers and do not suffer from bulky file sizes.&lt;br /&gt;
One of the main benefits to using this method of compiling is that your code can be left wherever you currently have it so that compile time reluctance is removed and coders can concentrate on coding the plugins instead of &amp;quot;How on earth am I to compile this for linux ???&amp;quot;.&lt;br /&gt;
All you need to get started are the base Cygwin installation, the CrossTool.tar.gz file and the makefile. Links to the latter two are included at the end of the tutorial.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;This tutorial assumes the following.&lt;br /&gt;
&amp;lt;LI&amp;gt;You currently have a plugin which you can compile on windows using MSVC.&lt;br /&gt;
&amp;lt;LI&amp;gt;You have a copy of the HL2SDK Source Code installed on your hard drive.&lt;br /&gt;
&amp;lt;LI&amp;gt;You have a copy of the [http://www.sourcemm.net Metamod:Source] source code on your hard drive.&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although the cross compiler will allow for compiling of Valves standard plugins, I do not include a Makefile or instructions on how to successfuly occomplish this.&lt;br /&gt;
&lt;br /&gt;
==Installing Cygwin==&lt;br /&gt;
First, download CygWin from [http://www.cygwin.com www.CygWin.com] by clicking on &amp;quot;Install Now&amp;quot; located in the middle of the page.&lt;br /&gt;
&lt;br /&gt;
Once the download finishes, run &amp;lt;i&amp;gt;setup.exe&amp;lt;/i&amp;gt;&lt;br /&gt;
Click 'Next' on the introduction screen.&lt;br /&gt;
&lt;br /&gt;
On the second page, select 'Install from Internet'.&lt;br /&gt;
The following page is all user preferances, except the 'Default Text File Type' which is recommended you use 'Unix / binary'.&lt;br /&gt;
After clicking next, you are prompted for a CygWin temporary folder, any folder will suffice, the default is usually the better option.&lt;br /&gt;
The next screen's options are firewall/proxy settings, these are specific to the Computer/Network you are currently using.&lt;br /&gt;
Once you click next on the previous screen, the installer will download a list of mirror sites containing the CygWin binaries. Select one which you think is closest to you for a faster installation time.&lt;br /&gt;
Finaly, you are presented with a 'Select Packages' screen.&lt;br /&gt;
I *think* it should work fine without all of the dev packages.&lt;br /&gt;
&lt;br /&gt;
If anyone has gotten this to work by selecting less packages, please let me know so I can remove them from this list.&lt;br /&gt;
Items marked in bold are extremely important.&lt;br /&gt;
&lt;br /&gt;
*binutils&lt;br /&gt;
*&amp;lt;b&amp;gt;bzip2&amp;lt;/b&amp;gt;&lt;br /&gt;
*cygutils&lt;br /&gt;
*gcc&lt;br /&gt;
*&amp;lt;b&amp;gt;glib&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;gzip&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*libiconv&lt;br /&gt;
*&amp;lt;b&amp;gt;make&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;zlib&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;grep&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Click next and it should install the packages to the target path you specified.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing The CrossCompiler==&lt;br /&gt;
Download the CrossCompiler from one of the mirrors below to the root cygwin folder &amp;lt;i&amp;gt;(c:\cygwin)&amp;lt;/i&amp;gt;.&lt;br /&gt;
If it gets renamed to 'crosstool_gcc-3.4.1.tar.tar' please rename it to 'crosstool_gcc-3.4.1.tar.gz'.&lt;br /&gt;
&amp;lt;UL&amp;gt;Download Mirrors for 'crosstool_gcc.tar.gz'&lt;br /&gt;
&amp;lt;LI&amp;gt;[http://files.filefront.com/crosstool_gcc_341targz/;4650645;;/fileinfo.html FileFront]&lt;br /&gt;
&amp;lt;LI&amp;gt;[http://rapidshare.de/files/11588086/crosstool_gcc-3.4.1.tar.gz.html RapidShare.de]&lt;br /&gt;
&amp;lt;LI&amp;gt;[http://downloads.punkassfraggers.com/redirect.php?dlid=1224 PunkAssFraggers.com]&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
This is the most important part of the entire tutorial.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Do not try and extract 'crosstool_gcc-3.4.1.tar.gz' using any Windows Archiving utility !&amp;lt;/b&amp;gt;&lt;br /&gt;
They do not extract the files correctly and if you don't get errors during the extraction, you will while trying to compile !&lt;br /&gt;
Once the download is complete, run cygwin by navigating to the cygwin root folder, and double clicking on &amp;lt;i&amp;gt;'cygwin.bat'&amp;lt;/i&amp;gt;.&lt;br /&gt;
Type the following two commands in order into the cygwin bash shell followed by the enter key:&lt;br /&gt;
&amp;lt;i&amp;gt;cd /&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;tar -xzf crosstool_gcc-3.4.1.tar.gz&amp;lt;/i&amp;gt;&lt;br /&gt;
This will start extracting the tar file to the '&amp;lt;cygroot&amp;gt;/opt' folder on your hard drive.&lt;br /&gt;
And thats it, now you have the pre-compiled GCC 3.4.1 [http://www.lduke.com (Thanks LDuke)] installed on your computer you can compile server plugins for both regular and SourceMM flavours with ease and compatibility with Valves GCC 3.4.1 requirements.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
==Compiling Plugins==&lt;br /&gt;
Download the Makefile by clicking on [http://www.c0ld.net/Tutorials/CrossTool/Makefile this link.]&lt;br /&gt;
&lt;br /&gt;
Save it to your project's root source folder and open it with a text editor like notepad.&lt;br /&gt;
Inside the Makfile I have shown examples on how your paths are translated into unix/cygwin hybrid paths.&lt;br /&gt;
So, before trying any compling just yet, you need to insert the paths for the following.&lt;br /&gt;
&amp;lt;b&amp;gt;HL2SDK&amp;lt;/b&amp;gt;: The path to where your HL2SDK files are located.&lt;br /&gt;
&amp;lt;b&amp;gt;SMM_ROOT&amp;lt;/b&amp;gt;: The path to where you extracted the contents of the [http://www.sourcemm.net/ SourceMM package]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;SRCDS&amp;lt;/b&amp;gt;: The path to the linux SRCDS binaries.&lt;br /&gt;
&amp;lt;b&amp;gt;PLUGIN&amp;lt;/b&amp;gt;: The plugin filename.&lt;br /&gt;
For the convenience of those who dont have access to a linux srcds installation, you can grab the files required at one of the mirrors below.&lt;br /&gt;
Extract them to a new folder which will be your SRCDS path in the Makefile.&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt;The bin folder must be inside the srcds folder for maximum compatibility. For example, your files end up being something like this 'C:\MyFiles\srcds_l\bin\vstdlib_i486.so'.&lt;br /&gt;
&lt;br /&gt;
So, in your Makefile, SRCDS would be '/cygdrive/c/MyFiles/srcds_l'&lt;br /&gt;
&lt;br /&gt;
Download Mirrors for 'srcds_l_binaries.zip'&lt;br /&gt;
*[http://files.filefront.com/srcds_l_binarieszip/;4651213;;/fileinfo.html FileFront Mirror]&lt;br /&gt;
*[http://rapidshare.de/files/11597264/srcds_l_binaries.zip.html RapidShare.de Mirror]&lt;br /&gt;
Now you're ready to try compiling.&lt;br /&gt;
Back to the cygwin bash window, and we're now going to have to navigate to your code's location.&lt;br /&gt;
An exmaple path could be 'C:\MyCode\MyPlugin\' so in the bash shell we type the following:&lt;br /&gt;
&lt;br /&gt;
  cd /cygdrive/c/MyCode/MyPlugin/&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
If all your paths are set correctly, it should start compiling the plugin.&lt;br /&gt;
Ignore all the warnings in the HL2SDK, they are harmless.&lt;br /&gt;
What you should be looking out for are errors and warnings located inside your own code.&lt;br /&gt;
Unfortunately I cannot compile plugins for you, but there is a forum dedicated to helping you with hl2sdk coding problems.&lt;br /&gt;
&lt;br /&gt;
[http://www.sourcemod.net/forums/viewforum.php?f=24 Click here to visit the forum]&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
*Tutorial by: Jason &amp;quot;c0ldfyr3&amp;quot; Croghan&lt;br /&gt;
*Conerted to Wiki by: James &amp;quot;sslice&amp;quot; Gray&lt;br /&gt;
*Cross Compiler compiled by: L. Duke&lt;br /&gt;
*MakeFile originally written by: David &amp;quot;BAILOPAN&amp;quot; Anderson&lt;br /&gt;
&lt;br /&gt;
Original Location: http://www.c0ld.net/index.php?inc=CrossTool&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Cross_Compiling_Plugins_(Metamod:Source)&amp;diff=2442</id>
		<title>Cross Compiling Plugins (Metamod:Source)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Cross_Compiling_Plugins_(Metamod:Source)&amp;diff=2442"/>
		<updated>2006-01-22T22:25:44Z</updated>

		<summary type="html">&lt;p&gt;Sslice: /* Compiling Plugins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
The aim of this tutorial is to allow Windows Half-Life 2 plugin coders to compile their plugins on the same machine as the windows binaries.&lt;br /&gt;
The binaries are compatible with 99% of all linux servers and do not suffer from bulky file sizes.&lt;br /&gt;
One of the main benefits to using this method of compiling is that your code can be left wherever you currently have it so that compile time reluctance is removed and coders can concentrate on coding the plugins instead of &amp;quot;How on earth am I to compile this for linux ???&amp;quot;.&lt;br /&gt;
All you need to get started are the base Cygwin installation, the CrossTool.tar.gz file and the makefile. Links to the latter two are included at the end of the tutorial.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;This tutorial assumes the following.&lt;br /&gt;
&amp;lt;LI&amp;gt;You currently have a plugin which you can compile on windows using MSVC.&lt;br /&gt;
&amp;lt;LI&amp;gt;You have a copy of the HL2SDK Source Code installed on your hard drive.&lt;br /&gt;
&amp;lt;LI&amp;gt;You have a copy of the [http://www.sourcemm.net Metamod:Source] source code on your hard drive.&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although the cross compiler will allow for compiling of Valves standard plugins, I do not include a Makefile or instructions on how to successfuly occomplish this.&lt;br /&gt;
&lt;br /&gt;
==Installing Cygwin==&lt;br /&gt;
First, download CygWin from [http://www.cygwin.com www.CygWin.com] by clicking on &amp;quot;Install Now&amp;quot; located in the middle of the page.&lt;br /&gt;
&lt;br /&gt;
Once the download finishes, run &amp;lt;i&amp;gt;setup.exe&amp;lt;/i&amp;gt;&lt;br /&gt;
Click 'Next' on the introduction screen.&lt;br /&gt;
&lt;br /&gt;
On the second page, select 'Install from Internet'.&lt;br /&gt;
The following page is all user preferances, except the 'Default Text File Type' which is recommended you use 'Unix / binary'.&lt;br /&gt;
After clicking next, you are prompted for a CygWin temporary folder, any folder will suffice, the default is usually the better option.&lt;br /&gt;
The next screen's options are firewall/proxy settings, these are specific to the Computer/Network you are currently using.&lt;br /&gt;
Once you click next on the previous screen, the installer will download a list of mirror sites containing the CygWin binaries. Select one which you think is closest to you for a faster installation time.&lt;br /&gt;
Finaly, you are presented with a 'Select Packages' screen.&lt;br /&gt;
I *think* it should work fine without all of the dev packages.&lt;br /&gt;
&lt;br /&gt;
If anyone has gotten this to work by selecting less packages, please let me know so I can remove them from this list.&lt;br /&gt;
Items marked in bold are extremely important.&lt;br /&gt;
&lt;br /&gt;
*binutils&lt;br /&gt;
*&amp;lt;b&amp;gt;bzip2&amp;lt;/b&amp;gt;&lt;br /&gt;
*cygutils&lt;br /&gt;
*gcc&lt;br /&gt;
*&amp;lt;b&amp;gt;glib&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;gzip&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*libiconv&lt;br /&gt;
*&amp;lt;b&amp;gt;make&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;zlib&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;grep&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Click next and it should install the packages to the target path you specified.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing The CrossCompiler==&lt;br /&gt;
Download the CrossCompiler from one of the mirrors below to the root cygwin folder &amp;lt;i&amp;gt;(c:\cygwin)&amp;lt;/i&amp;gt;.&lt;br /&gt;
If it gets renamed to 'crosstool_gcc-3.4.1.tar.tar' please rename it to 'crosstool_gcc-3.4.1.tar.gz'.&lt;br /&gt;
&amp;lt;UL&amp;gt;Download Mirrors for 'crosstool_gcc.tar.gz'&lt;br /&gt;
&amp;lt;LI&amp;gt;[http://files.filefront.com/crosstool_gcc_341targz/;4650645;;/fileinfo.html FileFront]&lt;br /&gt;
&amp;lt;LI&amp;gt;[http://rapidshare.de/files/11588086/crosstool_gcc-3.4.1.tar.gz.html RapidShare.de]&lt;br /&gt;
&amp;lt;LI&amp;gt;[http://downloads.punkassfraggers.com/redirect.php?dlid=1224 PunkAssFraggers.com]&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
This is the most important part of the entire tutorial.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Do not try and extract 'crosstool_gcc-3.4.1.tar.gz' using any Windows Archiving utility !&amp;lt;/b&amp;gt;&lt;br /&gt;
They do not extract the files correctly and if you don't get errors during the extraction, you will while trying to compile !&lt;br /&gt;
Once the download is complete, run cygwin by navigating to the cygwin root folder, and double clicking on &amp;lt;i&amp;gt;'cygwin.bat'&amp;lt;/i&amp;gt;.&lt;br /&gt;
Type the following two commands in order into the cygwin bash shell followed by the enter key:&lt;br /&gt;
&amp;lt;i&amp;gt;cd /&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;tar -xzf crosstool_gcc-3.4.1.tar.gz&amp;lt;/i&amp;gt;&lt;br /&gt;
This will start extracting the tar file to the '&amp;lt;cygroot&amp;gt;/opt' folder on your hard drive.&lt;br /&gt;
And thats it, now you have the pre-compiled GCC 3.4.1 [http://www.lduke.com (Thanks LDuke)] installed on your computer you can compile server plugins for both regular and SourceMM flavours with ease and compatibility with Valves GCC 3.4.1 requirements.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
==Compiling Plugins==&lt;br /&gt;
Download the Makefile by clicking on [http://www.c0ld.net/Tutorials/CrossTool/Makefile this link.]&lt;br /&gt;
&lt;br /&gt;
Save it to your project's root source folder and open it with a text editor like notepad.&lt;br /&gt;
Inside the Makfile I have shown examples on how your paths are translated into unix/cygwin hybrid paths.&lt;br /&gt;
So, before trying any compling just yet, you need to insert the paths for the following.&lt;br /&gt;
&amp;lt;b&amp;gt;HL2SDK&amp;lt;/b&amp;gt;: The path to where your HL2SDK files are located.&lt;br /&gt;
&amp;lt;b&amp;gt;SMM_ROOT&amp;lt;/b&amp;gt;: The path to where you extracted the contents of the [http://www.sourcemm.net/ SourceMM package]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;SRCDS&amp;lt;/b&amp;gt;: The path to the linux SRCDS binaries.&lt;br /&gt;
&amp;lt;b&amp;gt;PLUGIN&amp;lt;/b&amp;gt;: The plugin filename.&lt;br /&gt;
For the convenience of those who dont have access to a linux srcds installation, you can grab the files required at one of the mirrors below.&lt;br /&gt;
Extract them to a new folder which will be your SRCDS path in the Makefile.&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt;The bin folder must be inside the srcds folder for maximum compatibility. For example, your files end up being something like this 'C:\MyFiles\srcds_l\bin\vstdlib_i486.so'.&lt;br /&gt;
&lt;br /&gt;
So, in your Makefile, SRCDS would be '/cygdrive/c/MyFiles/srcds_l'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download Mirrors for 'srcds_l_binaries.zip'&lt;br /&gt;
*[http://files.filefront.com/srcds_l_binarieszip/;4651213;;/fileinfo.html FileFront Mirror]&lt;br /&gt;
*[http://rapidshare.de/files/11597264/srcds_l_binaries.zip.html RapidShare.de Mirror]&lt;br /&gt;
Now you're ready to try compiling.&lt;br /&gt;
Back to the cygwin bash window, and we're now going to have to navigate to your code's location.&lt;br /&gt;
An exmaple path could be 'C:\MyCode\MyPlugin\' so in the bash shell we type the following:&lt;br /&gt;
&lt;br /&gt;
  cd /cygdrive/c/MyCode/MyPlugin/&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
If all your paths are set correctly, it should start compiling the plugin.&lt;br /&gt;
Ignore all the warnings in the HL2SDK, they are harmless.&lt;br /&gt;
What you should be looking out for are errors and warnings located inside your own code.&lt;br /&gt;
Unfortunately I cannot compile plugins for you, but there is a forum dedicated to helping you with hl2sdk coding problems.&lt;br /&gt;
&lt;br /&gt;
[http://www.sourcemod.net/forums/viewforum.php?f=24 Click here to visit the forum]&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
*Tutorial by: Jason &amp;quot;c0ldfyr3&amp;quot; Croghan&lt;br /&gt;
*Conerted to Wiki by: James &amp;quot;sslice&amp;quot; Gray&lt;br /&gt;
*Cross Compiler compiled by: L. Duke&lt;br /&gt;
*MakeFile originally written by: David &amp;quot;BAILOPAN&amp;quot; Anderson&lt;br /&gt;
&lt;br /&gt;
Original Location: http://www.c0ld.net/index.php?inc=CrossTool&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Cross_Compiling_Plugins_(Metamod:Source)&amp;diff=2441</id>
		<title>Cross Compiling Plugins (Metamod:Source)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Cross_Compiling_Plugins_(Metamod:Source)&amp;diff=2441"/>
		<updated>2006-01-22T22:24:56Z</updated>

		<summary type="html">&lt;p&gt;Sslice: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
The aim of this tutorial is to allow Windows Half-Life 2 plugin coders to compile their plugins on the same machine as the windows binaries.&lt;br /&gt;
The binaries are compatible with 99% of all linux servers and do not suffer from bulky file sizes.&lt;br /&gt;
One of the main benefits to using this method of compiling is that your code can be left wherever you currently have it so that compile time reluctance is removed and coders can concentrate on coding the plugins instead of &amp;quot;How on earth am I to compile this for linux ???&amp;quot;.&lt;br /&gt;
All you need to get started are the base Cygwin installation, the CrossTool.tar.gz file and the makefile. Links to the latter two are included at the end of the tutorial.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;This tutorial assumes the following.&lt;br /&gt;
&amp;lt;LI&amp;gt;You currently have a plugin which you can compile on windows using MSVC.&lt;br /&gt;
&amp;lt;LI&amp;gt;You have a copy of the HL2SDK Source Code installed on your hard drive.&lt;br /&gt;
&amp;lt;LI&amp;gt;You have a copy of the [http://www.sourcemm.net Metamod:Source] source code on your hard drive.&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Although the cross compiler will allow for compiling of Valves standard plugins, I do not include a Makefile or instructions on how to successfuly occomplish this.&lt;br /&gt;
&lt;br /&gt;
==Installing Cygwin==&lt;br /&gt;
First, download CygWin from [http://www.cygwin.com www.CygWin.com] by clicking on &amp;quot;Install Now&amp;quot; located in the middle of the page.&lt;br /&gt;
&lt;br /&gt;
Once the download finishes, run &amp;lt;i&amp;gt;setup.exe&amp;lt;/i&amp;gt;&lt;br /&gt;
Click 'Next' on the introduction screen.&lt;br /&gt;
&lt;br /&gt;
On the second page, select 'Install from Internet'.&lt;br /&gt;
The following page is all user preferances, except the 'Default Text File Type' which is recommended you use 'Unix / binary'.&lt;br /&gt;
After clicking next, you are prompted for a CygWin temporary folder, any folder will suffice, the default is usually the better option.&lt;br /&gt;
The next screen's options are firewall/proxy settings, these are specific to the Computer/Network you are currently using.&lt;br /&gt;
Once you click next on the previous screen, the installer will download a list of mirror sites containing the CygWin binaries. Select one which you think is closest to you for a faster installation time.&lt;br /&gt;
Finaly, you are presented with a 'Select Packages' screen.&lt;br /&gt;
I *think* it should work fine without all of the dev packages.&lt;br /&gt;
&lt;br /&gt;
If anyone has gotten this to work by selecting less packages, please let me know so I can remove them from this list.&lt;br /&gt;
Items marked in bold are extremely important.&lt;br /&gt;
&lt;br /&gt;
*binutils&lt;br /&gt;
*&amp;lt;b&amp;gt;bzip2&amp;lt;/b&amp;gt;&lt;br /&gt;
*cygutils&lt;br /&gt;
*gcc&lt;br /&gt;
*&amp;lt;b&amp;gt;glib&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;gzip&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*libiconv&lt;br /&gt;
*&amp;lt;b&amp;gt;make&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;zlib&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;grep&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Click next and it should install the packages to the target path you specified.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing The CrossCompiler==&lt;br /&gt;
Download the CrossCompiler from one of the mirrors below to the root cygwin folder &amp;lt;i&amp;gt;(c:\cygwin)&amp;lt;/i&amp;gt;.&lt;br /&gt;
If it gets renamed to 'crosstool_gcc-3.4.1.tar.tar' please rename it to 'crosstool_gcc-3.4.1.tar.gz'.&lt;br /&gt;
&amp;lt;UL&amp;gt;Download Mirrors for 'crosstool_gcc.tar.gz'&lt;br /&gt;
&amp;lt;LI&amp;gt;[http://files.filefront.com/crosstool_gcc_341targz/;4650645;;/fileinfo.html FileFront]&lt;br /&gt;
&amp;lt;LI&amp;gt;[http://rapidshare.de/files/11588086/crosstool_gcc-3.4.1.tar.gz.html RapidShare.de]&lt;br /&gt;
&amp;lt;LI&amp;gt;[http://downloads.punkassfraggers.com/redirect.php?dlid=1224 PunkAssFraggers.com]&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
This is the most important part of the entire tutorial.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Do not try and extract 'crosstool_gcc-3.4.1.tar.gz' using any Windows Archiving utility !&amp;lt;/b&amp;gt;&lt;br /&gt;
They do not extract the files correctly and if you don't get errors during the extraction, you will while trying to compile !&lt;br /&gt;
Once the download is complete, run cygwin by navigating to the cygwin root folder, and double clicking on &amp;lt;i&amp;gt;'cygwin.bat'&amp;lt;/i&amp;gt;.&lt;br /&gt;
Type the following two commands in order into the cygwin bash shell followed by the enter key:&lt;br /&gt;
&amp;lt;i&amp;gt;cd /&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;tar -xzf crosstool_gcc-3.4.1.tar.gz&amp;lt;/i&amp;gt;&lt;br /&gt;
This will start extracting the tar file to the '&amp;lt;cygroot&amp;gt;/opt' folder on your hard drive.&lt;br /&gt;
And thats it, now you have the pre-compiled GCC 3.4.1 [http://www.lduke.com (Thanks LDuke)] installed on your computer you can compile server plugins for both regular and SourceMM flavours with ease and compatibility with Valves GCC 3.4.1 requirements.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
==Compiling Plugins==&lt;br /&gt;
Download the Makefile by clicking on [http://www.c0ld.net/Tutorials/CrossTool/Makefile this link.]&lt;br /&gt;
&lt;br /&gt;
Save it to your project's root source folder and open it with a text editor like notepad.&lt;br /&gt;
Inside the Makfile I have shown examples on how your paths are translated into unix/cygwin hybrid paths.&lt;br /&gt;
So, before trying any compling just yet, you need to insert the paths for the following.&lt;br /&gt;
&amp;lt;b&amp;gt;HL2SDK&amp;lt;/b&amp;gt;: The path to where your HL2SDK files are located.&lt;br /&gt;
&amp;lt;b&amp;gt;SMM_ROOT&amp;lt;/b&amp;gt;: The path to where you extracted the contents of the [http://www.sourcemm.net/ SourceMM package]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;SRCDS&amp;lt;/b&amp;gt;: The path to the linux SRCDS binaries.&lt;br /&gt;
&amp;lt;b&amp;gt;PLUGIN&amp;lt;/b&amp;gt;: The plugin filename.&lt;br /&gt;
For the convenience of those who dont have access to a linux srcds installation, you can grab the files required at one of the mirrors below.&lt;br /&gt;
Extract them to a new folder which will be your SRCDS path in the Makefile.&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt;The bin folder must be inside the srcds folder for maximum compatibility. For example, your files end up being something like this 'C:\MyFiles\srcds_l\bin\vstdlib_i486.so'.&lt;br /&gt;
&lt;br /&gt;
So, in your Makefile, SRCDS would be '/cygdrive/c/MyFiles/srcds_l'&lt;br /&gt;
&amp;lt;UL&amp;gt;Download Mirrors for 'srcds_l_binaries.zip'&lt;br /&gt;
&amp;lt;LI&amp;gt;[http://files.filefront.com/srcds_l_binarieszip/;4651213;;/fileinfo.html FileFront Mirror]&lt;br /&gt;
&amp;lt;LI&amp;gt;[http://rapidshare.de/files/11597264/srcds_l_binaries.zip.html RapidShare.de Mirror]&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
Now you're ready to try compiling.&lt;br /&gt;
Back to the cygwin bash window, and we're now going to have to navigate to your code's location.&lt;br /&gt;
An exmaple path could be 'C:\MyCode\MyPlugin\' so in the bash shell we type the following:&lt;br /&gt;
&lt;br /&gt;
  cd /cygdrive/c/MyCode/MyPlugin/&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
If all your paths are set correctly, it should start compiling the plugin.&lt;br /&gt;
Ignore all the warnings in the HL2SDK, they are harmless.&lt;br /&gt;
What you should be looking out for are errors and warnings located inside your own code.&lt;br /&gt;
Unfortunately I cannot compile plugins for you, but there is a forum dedicated to helping you with hl2sdk coding problems.&lt;br /&gt;
&lt;br /&gt;
[http://www.sourcemod.net/forums/viewforum.php?f=24 Click here to visit the forum]&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
*Tutorial by: Jason &amp;quot;c0ldfyr3&amp;quot; Croghan&lt;br /&gt;
*Conerted to Wiki by: James &amp;quot;sslice&amp;quot; Gray&lt;br /&gt;
*Cross Compiler compiled by: L. Duke&lt;br /&gt;
*MakeFile originally written by: David &amp;quot;BAILOPAN&amp;quot; Anderson&lt;br /&gt;
&lt;br /&gt;
Original Location: http://www.c0ld.net/index.php?inc=CrossTool&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Cross_Compiling_Plugins_(Metamod:Source)&amp;diff=2440</id>
		<title>Cross Compiling Plugins (Metamod:Source)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Cross_Compiling_Plugins_(Metamod:Source)&amp;diff=2440"/>
		<updated>2006-01-22T22:24:31Z</updated>

		<summary type="html">&lt;p&gt;Sslice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
The aim of this tutorial is to allow Windows Half-Life 2 plugin coders to compile their plugins on the same machine as the windows binaries.&lt;br /&gt;
The binaries are compatible with 99% of all linux servers and do not suffer from bulky file sizes.&lt;br /&gt;
One of the main benefits to using this method of compiling is that your code can be left wherever you currently have it so that compile time reluctance is removed and coders can concentrate on coding the plugins instead of &amp;quot;How on earth am I to compile this for linux ???&amp;quot;.&lt;br /&gt;
All you need to get started are the base Cygwin installation, the CrossTool.tar.gz file and the makefile. Links to the latter two are included at the end of the tutorial.&lt;br /&gt;
&amp;lt;OL&amp;gt;This tutorial assumes the following.&lt;br /&gt;
&amp;lt;LI&amp;gt;You currently have a plugin which you can compile on windows using MSVC.&lt;br /&gt;
&amp;lt;LI&amp;gt;You have a copy of the HL2SDK Source Code installed on your hard drive.&lt;br /&gt;
&amp;lt;LI&amp;gt;You have a copy of the [http://www.sourcemm.net Metamod:Source] source code on your hard drive.&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although the cross compiler will allow for compiling of Valves standard plugins, I do not include a Makefile or instructions on how to successfuly occomplish this.&lt;br /&gt;
&lt;br /&gt;
==Installing Cygwin==&lt;br /&gt;
First, download CygWin from [http://www.cygwin.com www.CygWin.com] by clicking on &amp;quot;Install Now&amp;quot; located in the middle of the page.&lt;br /&gt;
&lt;br /&gt;
Once the download finishes, run &amp;lt;i&amp;gt;setup.exe&amp;lt;/i&amp;gt;&lt;br /&gt;
Click 'Next' on the introduction screen.&lt;br /&gt;
&lt;br /&gt;
On the second page, select 'Install from Internet'.&lt;br /&gt;
The following page is all user preferances, except the 'Default Text File Type' which is recommended you use 'Unix / binary'.&lt;br /&gt;
After clicking next, you are prompted for a CygWin temporary folder, any folder will suffice, the default is usually the better option.&lt;br /&gt;
The next screen's options are firewall/proxy settings, these are specific to the Computer/Network you are currently using.&lt;br /&gt;
Once you click next on the previous screen, the installer will download a list of mirror sites containing the CygWin binaries. Select one which you think is closest to you for a faster installation time.&lt;br /&gt;
Finaly, you are presented with a 'Select Packages' screen.&lt;br /&gt;
I *think* it should work fine without all of the dev packages.&lt;br /&gt;
&lt;br /&gt;
If anyone has gotten this to work by selecting less packages, please let me know so I can remove them from this list.&lt;br /&gt;
Items marked in bold are extremely important.&lt;br /&gt;
&lt;br /&gt;
*binutils&lt;br /&gt;
*&amp;lt;b&amp;gt;bzip2&amp;lt;/b&amp;gt;&lt;br /&gt;
*cygutils&lt;br /&gt;
*gcc&lt;br /&gt;
*&amp;lt;b&amp;gt;glib&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;gzip&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*libiconv&lt;br /&gt;
*&amp;lt;b&amp;gt;make&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;zlib&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;grep&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Click next and it should install the packages to the target path you specified.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing The CrossCompiler==&lt;br /&gt;
Download the CrossCompiler from one of the mirrors below to the root cygwin folder &amp;lt;i&amp;gt;(c:\cygwin)&amp;lt;/i&amp;gt;.&lt;br /&gt;
If it gets renamed to 'crosstool_gcc-3.4.1.tar.tar' please rename it to 'crosstool_gcc-3.4.1.tar.gz'.&lt;br /&gt;
&amp;lt;UL&amp;gt;Download Mirrors for 'crosstool_gcc.tar.gz'&lt;br /&gt;
&amp;lt;LI&amp;gt;[http://files.filefront.com/crosstool_gcc_341targz/;4650645;;/fileinfo.html FileFront]&lt;br /&gt;
&amp;lt;LI&amp;gt;[http://rapidshare.de/files/11588086/crosstool_gcc-3.4.1.tar.gz.html RapidShare.de]&lt;br /&gt;
&amp;lt;LI&amp;gt;[http://downloads.punkassfraggers.com/redirect.php?dlid=1224 PunkAssFraggers.com]&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
This is the most important part of the entire tutorial.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Do not try and extract 'crosstool_gcc-3.4.1.tar.gz' using any Windows Archiving utility !&amp;lt;/b&amp;gt;&lt;br /&gt;
They do not extract the files correctly and if you don't get errors during the extraction, you will while trying to compile !&lt;br /&gt;
Once the download is complete, run cygwin by navigating to the cygwin root folder, and double clicking on &amp;lt;i&amp;gt;'cygwin.bat'&amp;lt;/i&amp;gt;.&lt;br /&gt;
Type the following two commands in order into the cygwin bash shell followed by the enter key:&lt;br /&gt;
&amp;lt;i&amp;gt;cd /&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;tar -xzf crosstool_gcc-3.4.1.tar.gz&amp;lt;/i&amp;gt;&lt;br /&gt;
This will start extracting the tar file to the '&amp;lt;cygroot&amp;gt;/opt' folder on your hard drive.&lt;br /&gt;
And thats it, now you have the pre-compiled GCC 3.4.1 [http://www.lduke.com (Thanks LDuke)] installed on your computer you can compile server plugins for both regular and SourceMM flavours with ease and compatibility with Valves GCC 3.4.1 requirements.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
==Compiling Plugins==&lt;br /&gt;
Download the Makefile by clicking on [http://www.c0ld.net/Tutorials/CrossTool/Makefile this link.]&lt;br /&gt;
&lt;br /&gt;
Save it to your project's root source folder and open it with a text editor like notepad.&lt;br /&gt;
Inside the Makfile I have shown examples on how your paths are translated into unix/cygwin hybrid paths.&lt;br /&gt;
So, before trying any compling just yet, you need to insert the paths for the following.&lt;br /&gt;
&amp;lt;b&amp;gt;HL2SDK&amp;lt;/b&amp;gt;: The path to where your HL2SDK files are located.&lt;br /&gt;
&amp;lt;b&amp;gt;SMM_ROOT&amp;lt;/b&amp;gt;: The path to where you extracted the contents of the [http://www.sourcemm.net/ SourceMM package]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;SRCDS&amp;lt;/b&amp;gt;: The path to the linux SRCDS binaries.&lt;br /&gt;
&amp;lt;b&amp;gt;PLUGIN&amp;lt;/b&amp;gt;: The plugin filename.&lt;br /&gt;
For the convenience of those who dont have access to a linux srcds installation, you can grab the files required at one of the mirrors below.&lt;br /&gt;
Extract them to a new folder which will be your SRCDS path in the Makefile.&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt;The bin folder must be inside the srcds folder for maximum compatibility. For example, your files end up being something like this 'C:\MyFiles\srcds_l\bin\vstdlib_i486.so'.&lt;br /&gt;
&lt;br /&gt;
So, in your Makefile, SRCDS would be '/cygdrive/c/MyFiles/srcds_l'&lt;br /&gt;
&amp;lt;UL&amp;gt;Download Mirrors for 'srcds_l_binaries.zip'&lt;br /&gt;
&amp;lt;LI&amp;gt;[http://files.filefront.com/srcds_l_binarieszip/;4651213;;/fileinfo.html FileFront Mirror]&lt;br /&gt;
&amp;lt;LI&amp;gt;[http://rapidshare.de/files/11597264/srcds_l_binaries.zip.html RapidShare.de Mirror]&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
Now you're ready to try compiling.&lt;br /&gt;
Back to the cygwin bash window, and we're now going to have to navigate to your code's location.&lt;br /&gt;
An exmaple path could be 'C:\MyCode\MyPlugin\' so in the bash shell we type the following:&lt;br /&gt;
&lt;br /&gt;
  cd /cygdrive/c/MyCode/MyPlugin/&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
If all your paths are set correctly, it should start compiling the plugin.&lt;br /&gt;
Ignore all the warnings in the HL2SDK, they are harmless.&lt;br /&gt;
What you should be looking out for are errors and warnings located inside your own code.&lt;br /&gt;
Unfortunately I cannot compile plugins for you, but there is a forum dedicated to helping you with hl2sdk coding problems.&lt;br /&gt;
&lt;br /&gt;
[http://www.sourcemod.net/forums/viewforum.php?f=24 Click here to visit the forum]&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
*Tutorial by: Jason &amp;quot;c0ldfyr3&amp;quot; Croghan&lt;br /&gt;
*Conerted to Wiki by: James &amp;quot;sslice&amp;quot; Gray&lt;br /&gt;
*Cross Compiler compiled by: L. Duke&lt;br /&gt;
*MakeFile originally written by: David &amp;quot;BAILOPAN&amp;quot; Anderson&lt;br /&gt;
&lt;br /&gt;
Original Location: http://www.c0ld.net/index.php?inc=CrossTool&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Cross_Compiling_Plugins_(Metamod:Source)&amp;diff=2439</id>
		<title>Cross Compiling Plugins (Metamod:Source)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Cross_Compiling_Plugins_(Metamod:Source)&amp;diff=2439"/>
		<updated>2006-01-22T22:20:26Z</updated>

		<summary type="html">&lt;p&gt;Sslice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
The aim of this tutorial is to allow Windows Half-Life 2 plugin coders to compile their plugins on the same machine as the windows binaries.&lt;br /&gt;
The binaries are compatible with 99% of all linux servers and do not suffer from bulky file sizes.&lt;br /&gt;
One of the main benefits to using this method of compiling is that your code can be left wherever you currently have it so that compile time reluctance is removed and coders can concentrate on coding the plugins instead of &amp;quot;How on earth am I to compile this for linux ???&amp;quot;.&lt;br /&gt;
All you need to get started are the base Cygwin installation, the CrossTool.tar.gz file and the makefile. Links to the latter two are included at the end of the tutorial.&lt;br /&gt;
&amp;lt;OL&amp;gt;This tutorial assumes the following.&lt;br /&gt;
&amp;lt;LI&amp;gt;You currently have a plugin which you can compile on windows using MSVC.&lt;br /&gt;
&amp;lt;LI&amp;gt;You have a copy of the HL2SDK Source Code installed on your hard drive.&lt;br /&gt;
&amp;lt;LI&amp;gt;You have a copy of the [http://www.sourcemm.net Metamod:Source] source code on your hard drive.&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although the cross compiler will allow for compiling of Valves standard plugins, I do not include a Makefile or instructions on how to successfuly occomplish this.&lt;br /&gt;
&lt;br /&gt;
==Installing Cygwin==&lt;br /&gt;
First, download CygWin from [http://www.cygwin.com www.CygWin.com] by clicking on &amp;quot;Install Now&amp;quot; located in the middle of the page.&lt;br /&gt;
&lt;br /&gt;
Once the download finishes, run &amp;lt;i&amp;gt;setup.exe&amp;lt;/i&amp;gt;&lt;br /&gt;
Click 'Next' on the introduction screen.&lt;br /&gt;
&lt;br /&gt;
On the second page, select 'Install from Internet'.&lt;br /&gt;
The following page is all user preferances, except the 'Default Text File Type' which is recommended you use 'Unix / binary'.&lt;br /&gt;
After clicking next, you are prompted for a CygWin temporary folder, any folder will suffice, the default is usually the better option.&lt;br /&gt;
The next screen's options are firewall/proxy settings, these are specific to the Computer/Network you are currently using.&lt;br /&gt;
Once you click next on the previous screen, the installer will download a list of mirror sites containing the CygWin binaries. Select one which you think is closest to you for a faster installation time.&lt;br /&gt;
Finaly, you are presented with a 'Select Packages' screen.&lt;br /&gt;
I *think* it should work fine without all of the dev packages.&lt;br /&gt;
&lt;br /&gt;
If anyone has gotten this to work by selecting less packages, please let me know so I can remove them from this list.&lt;br /&gt;
Items marked in bold are extreemly important.&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;binutils&lt;br /&gt;
&amp;lt;LI&amp;gt;&amp;lt;b&amp;gt;bzip2&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;cygutils&lt;br /&gt;
&amp;lt;LI&amp;gt;gcc&lt;br /&gt;
&amp;lt;LI&amp;gt;&amp;lt;b&amp;gt;glib&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;&amp;lt;b&amp;gt;gzip&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;LI&amp;gt;libiconv&lt;br /&gt;
&amp;lt;LI&amp;gt;&amp;lt;b&amp;gt;make&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;&amp;lt;b&amp;gt;zlib&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;&amp;lt;b&amp;gt;grep&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
Click next and it should install the packages to the target path you specified.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing The CrossCompiler==&lt;br /&gt;
Download the CrossCompiler from one of the mirrors below to the root cygwin folder &amp;lt;i&amp;gt;(c:\cygwin)&amp;lt;/i&amp;gt;.&lt;br /&gt;
If it gets renamed to 'crosstool_gcc-3.4.1.tar.tar' please rename it to 'crosstool_gcc-3.4.1.tar.gz'.&lt;br /&gt;
&amp;lt;UL&amp;gt;Download Mirrors for 'crosstool_gcc.tar.gz'&lt;br /&gt;
&amp;lt;LI&amp;gt;&amp;lt;a href=&amp;quot;http://files.filefront.com/crosstool_gcc_341targz/;4650645;;/fileinfo.html&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;postlink&amp;quot;&amp;gt;&amp;lt;img height=&amp;quot;15&amp;quot; width=&amp;quot;15&amp;quot; border=&amp;quot;0&amp;quot; src=&amp;quot;http://c0ld.net/dls/styles/c0ld.net/images/download.gif&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/a&amp;gt;&amp;lt;a href=&amp;quot;http://www.FileFront.com&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;postlink&amp;quot;&amp;gt;FileFront Mirror&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;&amp;lt;a href=&amp;quot;http://rapidshare.de/files/11588086/crosstool_gcc-3.4.1.tar.gz.html&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;postlink&amp;quot;&amp;gt;&amp;lt;img height=&amp;quot;15&amp;quot; width=&amp;quot;15&amp;quot; border=&amp;quot;0&amp;quot; src=&amp;quot;http://c0ld.net/dls/styles/c0ld.net/images/download.gif&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/a&amp;gt;&amp;lt;a href=&amp;quot;http://www.RapidShare.de&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;postlink&amp;quot;&amp;gt;RapidShare.de Mirror&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;&amp;lt;a href=&amp;quot;http://downloads.punkassfraggers.com/redirect.php?dlid=1224&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;postlink&amp;quot;&amp;gt;&amp;lt;img height=&amp;quot;15&amp;quot; width=&amp;quot;15&amp;quot; border=&amp;quot;0&amp;quot; src=&amp;quot;http://c0ld.net/dls/styles/c0ld.net/images/download.gif&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/a&amp;gt;&amp;lt;a href=&amp;quot;http://www.punkassfraggers.com&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;postlink&amp;quot;&amp;gt;PunkAssFraggers.com Mirror&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
This is the most important part of the entire tutorial.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Do not try and extract 'crosstool_gcc-3.4.1.tar.gz' using any Windows Archiving utility !&amp;lt;/b&amp;gt;&lt;br /&gt;
They do not extract the files correctly and if you don't get errors during the extraction, you will while trying to compile !&lt;br /&gt;
Once the download is complete, run cygwin by navigating to the cygwin root folder, and double clicking on &amp;lt;i&amp;gt;'cygwin.bat'&amp;lt;/i&amp;gt;.&lt;br /&gt;
Type the following two commands in order into the cygwin bash shell followed by the enter key:&lt;br /&gt;
&amp;lt;i&amp;gt;cd /&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;tar -xzf crosstool_gcc-3.4.1.tar.gz&amp;lt;/i&amp;gt;&lt;br /&gt;
This will start extracting the tar file to the '&amp;lt;cygroot&amp;gt;/opt' folder on your hard drive.&lt;br /&gt;
And thats it, now you have the pre-compiled GCC 3.4.1 &amp;lt;a href=&amp;quot;http://www.lduke.com&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;postlink&amp;quot;&amp;gt;(Thanks LDuke)&amp;lt;/a&amp;gt; installed on your computer you can compile server plugins for both regular and SourceMM flavours with ease and compatibility with Valves GCC 3.4.1 requirements.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Compiling Plugins.&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
Download the Makefile by clicking on &amp;lt;a href=&amp;quot;./Tutorials/CrossTool/Makefile&amp;quot; class=&amp;quot;postlink&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;this link.&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save it to your project's root source folder and open it with a text editor like notepad.&lt;br /&gt;
Inside the Makfile I have shown examples on how your paths are translated into unix/cygwin hybrid paths.&lt;br /&gt;
So, before trying any compling just yet, you need to insert the paths for the following.&lt;br /&gt;
&amp;lt;b&amp;gt;HL2SDK&amp;lt;/b&amp;gt;: The path to where your HL2SDK files are located.&lt;br /&gt;
&amp;lt;b&amp;gt;SMM_ROOT&amp;lt;/b&amp;gt;: The path to where you extracted the contents of the &amp;lt;a href=&amp;quot;http://www.sourcemm.net/&amp;quot;&amp;gt;SourceMM package&amp;lt;/a&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;SRCDS&amp;lt;/b&amp;gt;: The path to the linux SRCDS binaries.&lt;br /&gt;
&amp;lt;b&amp;gt;PLUGIN&amp;lt;/b&amp;gt;: The plugin filename.&lt;br /&gt;
For the convenience of those who dont have access to a linux srcds installation, you can grab the files required at one of the mirrors below.&lt;br /&gt;
Extract them to a new folder which will be your SRCDS path in the Makefile.&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt;The bin folder must be inside the srcds folder for maximum compatibility. For example, your files end up being something like this 'C:\MyFiles\srcds_l\bin\vstdlib_i486.so'.&lt;br /&gt;
&lt;br /&gt;
So, in your Makefile, SRCDS would be '/cygdrive/c/MyFiles/srcds_l'&lt;br /&gt;
&amp;lt;UL&amp;gt;Download Mirrors for 'srcds_l_binaries.zip'&lt;br /&gt;
&amp;lt;LI&amp;gt;&amp;lt;a href=&amp;quot;http://files.filefront.com/srcds_l_binarieszip/;4651213;;/fileinfo.html&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;postlink&amp;quot;&amp;gt;&amp;lt;img height=&amp;quot;15&amp;quot; width=&amp;quot;15&amp;quot; border=&amp;quot;0&amp;quot; src=&amp;quot;http://c0ld.net/dls/styles/c0ld.net/images/download.gif&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/a&amp;gt;&amp;lt;a href=&amp;quot;http://www.FileFront.com&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;postlink&amp;quot;&amp;gt;FileFront Mirror&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;&amp;lt;a href=&amp;quot;http://rapidshare.de/files/11597264/srcds_l_binaries.zip.html&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;postlink&amp;quot;&amp;gt;&amp;lt;img height=&amp;quot;15&amp;quot; width=&amp;quot;15&amp;quot; border=&amp;quot;0&amp;quot; src=&amp;quot;http://c0ld.net/dls/styles/c0ld.net/images/download.gif&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/a&amp;gt;&amp;lt;a href=&amp;quot;http://www.RapidShare.de&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;postlink&amp;quot;&amp;gt;RapidShare.de Mirror&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
Now you're ready to try compiling.&lt;br /&gt;
Back to the cygwin bash window, and we're now going to have to navigate to your code's location.&lt;br /&gt;
An exmaple path could be 'C:\MyCode\MyPlugin\' so in the bash shell we type the following:&lt;br /&gt;
&lt;br /&gt;
  cd /cygdrive/c/MyCode/MyPlugin/&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
If all your paths are set correctly, it should start compiling the plugin.&lt;br /&gt;
Ignore all the warnings in the HL2SDK, they are harmless.&lt;br /&gt;
What you should be looking out for are errors and warnings located inside your own code.&lt;br /&gt;
Unfortunately I cannot compile plugins for you, but there is a forum dedicated to helping you with hl2sdk coding problems.&lt;br /&gt;
&lt;br /&gt;
[http://www.sourcemod.net/forums/viewforum.php?f=24 Click here to visit the forum]&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
*Tutorial by: Jason &amp;quot;c0ldfyr3&amp;quot; Croghan&lt;br /&gt;
*Conerted to Wiki by: James &amp;quot;sslice&amp;quot; Gray&lt;br /&gt;
*Cross Compiler compiled by: L. Duke&lt;br /&gt;
*MakeFile originally written by: David &amp;quot;BAILOPAN&amp;quot; Anderson&lt;br /&gt;
&lt;br /&gt;
Original Location: http://www.c0ld.net/index.php?inc=CrossTool&lt;/div&gt;</summary>
		<author><name>Sslice</name></author>
		
	</entry>
</feed>