<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wolfwiki.anime.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=WeblionX</id>
	<title>WolfWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wolfwiki.anime.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=WeblionX"/>
	<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php/Special:Contributions/WeblionX"/>
	<updated>2026-11-08T12:37:03Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=MullET&amp;diff=3058</id>
		<title>MullET</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=MullET&amp;diff=3058"/>
		<updated>2013-04-30T21:47:31Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;display:block;text-align:center;&amp;quot;&amp;gt;http://f.weblionx.com/misc/mullet_first_sm.png&amp;lt;/span&amp;gt;&lt;br /&gt;
== Description ==&lt;br /&gt;
[[MullET]] is a parody modification being created by Rain from the [[ETPro]] team and various members of the community.  It has a planned release date of around April or May, 2014.  (Vote for |Rain| for president!)&lt;br /&gt;
&lt;br /&gt;
== Planned Features ==&lt;br /&gt;
===New ===&lt;br /&gt;
* Mantle system for realistic fence-jumping action!&lt;br /&gt;
* Maps with realistic hurricane damage&lt;br /&gt;
* Weaponslot for a variety of new map-spawned weapons&lt;br /&gt;
** Duct tape&lt;br /&gt;
** 2x4&lt;br /&gt;
** Slingshot&lt;br /&gt;
** Poltergeist Grenades - A very rare weapon that can go through walls.  Looks like a white egg.&lt;br /&gt;
** Rotten Eggs - Does 1HP damage per second to anyone in a close proximity.&lt;br /&gt;
** Guillotine Arrow - Slices heads off small animals&lt;br /&gt;
* Shotguns&lt;br /&gt;
* Drivable Camaro for vehicle-based gameplay&lt;br /&gt;
* Great new vsays featuring the voice of Ben Winslow&lt;br /&gt;
* Rabbits (and maybe dogs and birds)&lt;br /&gt;
* Additional Gametypes&lt;br /&gt;
* MulletCam \ő/&lt;br /&gt;
* Radios (Both in-car and others) can be set to stream OGG audio from an Internet radio station.&lt;br /&gt;
===Changed ===&lt;br /&gt;
* Allied and Axis teams are now Mullets and Rednecks&lt;br /&gt;
* Camaro turbo-charger unit instead of command posts (Engineers required to assemble)&lt;br /&gt;
* Cinderblocks for disabling enemy Camaro units&lt;br /&gt;
* Artillery is replaced by tornados&lt;br /&gt;
===More ===&lt;br /&gt;
*http://f.weblionx.com/misc/cowbell.png&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=MullET&amp;diff=3057</id>
		<title>MullET</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=MullET&amp;diff=3057"/>
		<updated>2013-04-30T21:47:06Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: Image address changes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;display:block;text-align:center;&amp;quot;&amp;gt;http://f.weblionx.com/misc/mullet_first_sm.png&amp;lt;/span&amp;gt;&lt;br /&gt;
== Description ==&lt;br /&gt;
[[MullET]] is a parody modification being created by Rain from the [[ETPro]] team and various members of the community.  It has a planned release date of around April or May, 2012.  (Vote for |Rain| for president!)&lt;br /&gt;
&lt;br /&gt;
== Planned Features ==&lt;br /&gt;
===New ===&lt;br /&gt;
* Mantle system for realistic fence-jumping action!&lt;br /&gt;
* Maps with realistic hurricane damage&lt;br /&gt;
* Weaponslot for a variety of new map-spawned weapons&lt;br /&gt;
** Duct tape&lt;br /&gt;
** 2x4&lt;br /&gt;
** Slingshot&lt;br /&gt;
** Poltergeist Grenades - A very rare weapon that can go through walls.  Looks like a white egg.&lt;br /&gt;
** Rotten Eggs - Does 1HP damage per second to anyone in a close proximity.&lt;br /&gt;
** Guillotine Arrow - Slices heads off small animals&lt;br /&gt;
* Shotguns&lt;br /&gt;
* Drivable Camaro for vehicle-based gameplay&lt;br /&gt;
* Great new vsays featuring the voice of Ben Winslow&lt;br /&gt;
* Rabbits (and maybe dogs and birds)&lt;br /&gt;
* Additional Gametypes&lt;br /&gt;
* MulletCam \ő/&lt;br /&gt;
* Radios (Both in-car and others) can be set to stream OGG audio from an Internet radio station.&lt;br /&gt;
===Changed ===&lt;br /&gt;
* Allied and Axis teams are now Mullets and Rednecks&lt;br /&gt;
* Camaro turbo-charger unit instead of command posts (Engineers required to assemble)&lt;br /&gt;
* Cinderblocks for disabling enemy Camaro units&lt;br /&gt;
* Artillery is replaced by tornados&lt;br /&gt;
===More ===&lt;br /&gt;
*http://f.weblionx.com/misc/cowbell.png&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=User:WeblionX&amp;diff=3052</id>
		<title>User:WeblionX</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=User:WeblionX&amp;diff=3052"/>
		<updated>2011-10-12T18:53:31Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: Removed old links, updated wording, prettified.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;overflow:hidden;width:100%&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;div style=&amp;quot;width:50%;float:left;font-size:1.5em;text-align:right;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div style=&amp;quot;padding-right:1em;&amp;quot;&amp;gt;&lt;br /&gt;
[[http://www.weblionx.com/ WeblionX]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.cafepress.com/surfacems ETPro Merchandise]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.surfacegroup.org/ Surface Group - Mapping Help]]&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div style=&amp;quot;width:50%;float:right;border-left:2px dotted #555;margin-left:-2px;font-size:1.5em;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div style=&amp;quot;padding-left:1em;&amp;quot;&amp;gt;&lt;br /&gt;
[[irc://irc.freenode.net:6667/etpro]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.homestarrunner.com/500cheats.html 500 Cheats]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.inkscape.org/ Vector Graphics Editor]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.gimp.org Raster Graphics Editor]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.quotationspage.com/quotes/Douglas_Adams Wisdom]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://shareaza.sourceforge.net OpenSource P2P]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.opennicproject.org OpenNIC DNS System]]&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;padding-right:20px;&amp;quot;&amp;gt;http://f.weblionx.com/misc/wilfi.png&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=User:WeblionX&amp;diff=3043</id>
		<title>User:WeblionX</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=User:WeblionX&amp;diff=3043"/>
		<updated>2010-06-27T13:42:50Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: Update image location&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;overflow:hidden;width:100%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:20em;float:left;border-right:1px dotted #555;margin:1em;font-size:1.5em&amp;quot;&amp;gt;&lt;br /&gt;
[[http://www.weblionx.com/ WeblionX]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.cafepress.com/surfacems ETPro Merchandise]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.surfacegroup.org/ Surface: The Sequel]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.tseaby.com/ Tseaby]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.cafepress.com/websters Merchandise]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.cafepress.com/cybertiger Geeky Merchandise]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div title=&amp;quot;-- Server Currently Unavailable --&amp;quot; style=&amp;quot;border:1px dashed #229;margin-left:.5em;margin-right:.5em;padding-left:.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[WLXAM]&amp;lt;br&amp;gt;&lt;br /&gt;
[WLXTV]&amp;lt;br&amp;gt;&lt;br /&gt;
[TCOTSE]&amp;lt;br&amp;gt;&lt;br /&gt;
[WAE]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:20em;float:left;border-left:1px dotted #555;margin:1em;padding-left:.5em;font-size:1.5em&amp;quot;&amp;gt;&lt;br /&gt;
[[irc://irc.freenode.net:6667/etpro]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.homestarrunner.com/500cheats.html 500 Cheats]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.inkscape.org/ Vector Graphics Editor]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.gimp.org Raster Graphics Editor]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.quotationspage.com/quotes/Douglas_Adams Wisdom]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://shareaza.sourceforge.net OpenSource P2P]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.opennicproject.org OpenNIC DNS System]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
http://f.weblionx.com/misc/wilfi.png&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=MullET&amp;diff=3016</id>
		<title>MullET</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=MullET&amp;diff=3016"/>
		<updated>2009-07-27T01:48:52Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;display:block;text-align:center;&amp;quot;&amp;gt;http://f.weblionx.com/index/mullet_first_sm.png&amp;lt;/span&amp;gt;&lt;br /&gt;
== Description ==&lt;br /&gt;
[[MullET]] is a parody modification being created by Rain from the [[ETPro]] team and various members of the community.  It has a planned release date of around April or May, 2012.  (Vote for |Rain| for president!)&lt;br /&gt;
&lt;br /&gt;
== Planned Features ==&lt;br /&gt;
===New ===&lt;br /&gt;
* Mantle system for realistic fence-jumping action!&lt;br /&gt;
* Maps with realistic hurricane damage&lt;br /&gt;
* Weaponslot for a variety of new map-spawned weapons&lt;br /&gt;
** Duct tape&lt;br /&gt;
** 2x4&lt;br /&gt;
** Slingshot&lt;br /&gt;
** Poltergeist Grenades - A very rare weapon that can go through walls.  Looks like a white egg.&lt;br /&gt;
** Rotten Eggs - Does 1HP damage per second to anyone in a close proximity.&lt;br /&gt;
** Guillotine Arrow - Slices heads off small animals&lt;br /&gt;
* Shotguns&lt;br /&gt;
* Drivable Camaro for vehicle-based gameplay&lt;br /&gt;
* Great new vsays featuring the voice of Ben Winslow&lt;br /&gt;
* Rabbits (and maybe dogs and birds)&lt;br /&gt;
* Additional Gametypes&lt;br /&gt;
* MulletCam \ő/&lt;br /&gt;
* Radios (Both in-car and others) can be set to stream OGG audio from an Internet radio station.&lt;br /&gt;
===Changed ===&lt;br /&gt;
* Allied and Axis teams are now Mullets and Rednecks&lt;br /&gt;
* Camaro turbo-charger unit instead of command posts (Engineers required to assemble)&lt;br /&gt;
* Cinderblocks for disabling enemy Camaro units&lt;br /&gt;
* Artillery is replaced by tornados&lt;br /&gt;
===More ===&lt;br /&gt;
*http://f.weblionx.com/index/cowbell.png&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=User:WeblionX&amp;diff=2958</id>
		<title>User:WeblionX</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=User:WeblionX&amp;diff=2958"/>
		<updated>2008-10-18T18:26:08Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: Links!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;overflow:hidden;width:100%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:20em;float:left;border-right:1px dotted #555;margin:1em;font-size:1.5em&amp;quot;&amp;gt;&lt;br /&gt;
[[http://www.weblionx.com/ WeblionX]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.cafepress.com/surfacems ETPro Merchandise]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.surfacegroup.org/ Surface: The Sequel]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.tseaby.com/ Tseaby]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.cafepress.com/websters Merchandise]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.cafepress.com/cybertiger Geeky Merchandise]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div title=&amp;quot;-- Server Currently Unavailable --&amp;quot; style=&amp;quot;border:1px dashed #229;margin-left:.5em;margin-right:.5em;padding-left:.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[WLXAM]&amp;lt;br&amp;gt;&lt;br /&gt;
[WLXTV]&amp;lt;br&amp;gt;&lt;br /&gt;
[TCOTSE]&amp;lt;br&amp;gt;&lt;br /&gt;
[WAE]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:20em;float:left;border-left:1px dotted #555;margin:1em;padding-left:.5em;font-size:1.5em&amp;quot;&amp;gt;&lt;br /&gt;
[[irc://irc.freenode.net:6667/etpro]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.homestarrunner.com/500cheats.html 500 Cheats]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.inkscape.org/ Vector Graphics Editor]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.gimp.org Raster Graphics Editor]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.quotationspage.com/quotes/Douglas_Adams Wisdom]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://shareaza.sourceforge.net OpenSource P2P]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.opennicproject.org OpenNIC DNS System]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
http://ettw.net/index/wilfi.png&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=User:WeblionX&amp;diff=2956</id>
		<title>User:WeblionX</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=User:WeblionX&amp;diff=2956"/>
		<updated>2008-09-28T01:49:33Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;overflow:hidden;width:100%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:20em;float:left;border-right:1px dotted #555;margin:1em;font-size:1.5em&amp;quot;&amp;gt;&lt;br /&gt;
[[http://www.weblionx.com/ WeblionX]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.cafepress.com/websters Merchandise]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.surfacegroup.org/ Surface: The Sequel]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.cafepress.com/surfacems ETPro Merchandise]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.tseaby.com/ Tseaby]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div title=&amp;quot;-- Server Currently Unavailable --&amp;quot; style=&amp;quot;border:1px dashed #229;margin-left:.5em;margin-right:.5em;padding-left:.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[WLXAM]&amp;lt;br&amp;gt;&lt;br /&gt;
[WLXTV]&amp;lt;br&amp;gt;&lt;br /&gt;
[TCOTSE]&amp;lt;br&amp;gt;&lt;br /&gt;
[WAE]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:20em;float:left;border-left:1px dotted #555;margin:1em;padding-left:.5em;font-size:1.5em&amp;quot;&amp;gt;&lt;br /&gt;
[[irc://irc.freenode.net:6667/etpro]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.homestarrunner.com/500cheats.html 500 Cheats]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.inkscape.org/ Vector Graphics Editor]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.gimp.org Raster Graphics Editor]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.quotationspage.com/quotes/Douglas_Adams Wisdom]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://shareaza.sourceforge.net OpenSource P2P]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.opennicproject.org OpenNIC DNS System]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
http://ettw.net/index/wilfi.png&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=User:WeblionX&amp;diff=2946</id>
		<title>User:WeblionX</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=User:WeblionX&amp;diff=2946"/>
		<updated>2008-07-15T21:47:46Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;overflow:hidden;width:100%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:20em;float:left;border-right:1px dotted #555;margin:1em;font-size:1.5em&amp;quot;&amp;gt;&lt;br /&gt;
[[http://www.weblionx.com/ WeblionX]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.cafepress.com/websters Merchandise]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.surfacegroup.org/ Surface: The Sequel]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.cafepress.com/surfacems ETPro Merchandise]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.tseaby.com/ Tseaby]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div title=&amp;quot;-- Server Currently Unavailable --&amp;quot; style=&amp;quot;border:1px dashed #229;margin-left:.5em;margin-right:.5em;padding-left:.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[WLXAM]&amp;lt;br&amp;gt;&lt;br /&gt;
[WLXTV]&amp;lt;br&amp;gt;&lt;br /&gt;
[TCOTSE]&amp;lt;br&amp;gt;&lt;br /&gt;
[WAE]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:20em;float:left;border-left:1px dotted #555;margin:1em;padding-left:.5em;font-size:1.5em&amp;quot;&amp;gt;&lt;br /&gt;
[[irc://irc.freenode.net:6667/etpro]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.homestarrunner.com/500cheats.html 500 Cheats]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.inkscape.org/ Vector Graphics Editing]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.gimp.org Raster Graphics Editing]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.quotationspage.com/quotes/Douglas_Adams Wisdom]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://shareaza.sourceforge.net OpenSource P2P]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.opennicproject.org OpenNIC DNS System]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
http://ettw.net/index/wilfi.png&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=User:WeblionX&amp;diff=2928</id>
		<title>User:WeblionX</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=User:WeblionX&amp;diff=2928"/>
		<updated>2008-04-08T23:26:03Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;overflow:hidden;width:100%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:20em;float:left;border-right:1px dotted #555;margin:1em;font-size:1.5em&amp;quot;&amp;gt;&lt;br /&gt;
[[http://www.weblionx.com/ WeblionX]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.cafepress.com/websters Merchandise]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.surfacegroup.org/ Surface: The Sequel]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.cafepress.com/surfacems ETPro Merchandise]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.tseaby.com/ Tseaby]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div title=&amp;quot;-- Server Currently Unavailable --&amp;quot; style=&amp;quot;border:1px dashed #229;margin-left:.5em;margin-right:.5em;padding-left:.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[WLXAM]&amp;lt;br&amp;gt;&lt;br /&gt;
[WLXTV]&amp;lt;br&amp;gt;&lt;br /&gt;
[TCOTSE]&amp;lt;br&amp;gt;&lt;br /&gt;
[WAE]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:20em;float:left;border-left:1px dotted #555;margin:1em;padding-left:.5em;font-size:1.5em&amp;quot;&amp;gt;&lt;br /&gt;
[[irc://irc.freenode.net:6667/etpro]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.homestarrunner.com/500cheats.html 500 Cheats]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.inkscape.org/download.php Vector Graphics Editing]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.gimp.org Raster Graphics Editing]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.quotationspage.com/quotes/Douglas_Adams Wisdom]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://shareaza.sourceforge.net OpenSource P2P]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://scoop.opennic.unrated.net/?op=special;page=faq#what OpenNIC DNS System]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
http://ettw.net/index/wilfi.png&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=User:WeblionX&amp;diff=2919</id>
		<title>User:WeblionX</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=User:WeblionX&amp;diff=2919"/>
		<updated>2008-03-19T01:34:41Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;overflow:hidden;width:100%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:20em;float:left;border-right:1px dotted #555;margin:1em;font-size:1.5em&amp;quot;&amp;gt;&lt;br /&gt;
[[http://www.weblionx.com/ WeblionX]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.cafepress.com/websters Merchandise]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.surfacegroup.org/ Surface: The Sequel]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.cafepress.com/surfacems ETPro Merchandise]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div title=&amp;quot;-- Server Currently Unavailable --&amp;quot; style=&amp;quot;border:1px dashed #229;margin-left:.5em;margin-right:.5em;padding-left:.5em;&amp;quot;&amp;gt;&lt;br /&gt;
[Tseaby]&amp;lt;br&amp;gt;&lt;br /&gt;
[WLXAM]&amp;lt;br&amp;gt;&lt;br /&gt;
[WLXTV]&amp;lt;br&amp;gt;&lt;br /&gt;
[TCOTSE]&amp;lt;br&amp;gt;&lt;br /&gt;
[WAE]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:20em;float:left;border-left:1px dotted #555;margin:1em;padding-left:.5em;font-size:1.5em&amp;quot;&amp;gt;&lt;br /&gt;
[[irc://irc.freenode.net:6667/etpro]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.homestarrunner.com/500cheats.html 500 Cheats]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.inkscape.org/download.php Vector Graphics Editing]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.gimp.org Raster Graphics Editing]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.quotationspage.com/quotes/Douglas_Adams Wisdom]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://shareaza.sourceforge.net OpenSource P2P]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://scoop.opennic.unrated.net/?op=special;page=faq#what OpenNIC DNS System]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
http://ettw.net/index/wilfi.png&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=User:WeblionX&amp;diff=2881</id>
		<title>User:WeblionX</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=User:WeblionX&amp;diff=2881"/>
		<updated>2008-01-10T17:28:23Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;overflow:hidden;width:100%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:20em;float:left;border-right:1px dotted #555;margin:1em;font-size:1.5em&amp;quot;&amp;gt;&lt;br /&gt;
[[http://www.weblionx.com/ WeblionX]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.surfacegroup.org/ Surface: The Sequel]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div title=&amp;quot;-- Server Currently Unavailable --&amp;quot; style=&amp;quot;border:1px dashed #229;margin-left:.5em;margin-right:.5em;padding-left:.5em;&amp;quot;&amp;gt;&lt;br /&gt;
[Tseaby]&amp;lt;br&amp;gt;&lt;br /&gt;
[WLXAM]&amp;lt;br&amp;gt;&lt;br /&gt;
[WLXTV]&amp;lt;br&amp;gt;&lt;br /&gt;
[TCOTSE]&amp;lt;br&amp;gt;&lt;br /&gt;
[WAE]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:20em;float:left;border-left:1px dotted #555;margin:1em;padding-left:.5em;font-size:1.5em&amp;quot;&amp;gt;&lt;br /&gt;
[[irc://irc.freenode.net:6667/etpro]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.homestarrunner.com/500cheats.html 500 Cheats]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.inkscape.org/download.php Vector Graphics Editing]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.gimp.org Raster Graphics Editing]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.quotationspage.com/quotes/Douglas_Adams Wisdom]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://shareaza.sourceforge.net OpenSource P2P]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://scoop.opennic.unrated.net/?op=special;page=faq#what OpenNIC DNS System]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
http://ettw.net/index/wilfi.png&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=User_talk:Eft-BoonDock&amp;diff=2787</id>
		<title>User talk:Eft-BoonDock</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=User_talk:Eft-BoonDock&amp;diff=2787"/>
		<updated>2007-08-16T21:44:30Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You might want to use preview a bit more. :X&lt;br /&gt;
::--[[User:WeblionX|WeblionX]] 14:44, 16 August 2007 (PDT)&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=User:WeblionX&amp;diff=2768</id>
		<title>User:WeblionX</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=User:WeblionX&amp;diff=2768"/>
		<updated>2007-08-10T02:33:36Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: While I&amp;#039;m at it...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;overflow:hidden;width:100%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:20em;float:left;border-right:1px dotted #555;margin:1em;font-size:1.5em&amp;quot;&amp;gt;&lt;br /&gt;
[[http://www.weblionx.com/ WeblionX]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.surfacegroup.org/ Surface: The Sequel]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div title=&amp;quot;-- Server Currently Unavailable --&amp;quot; style=&amp;quot;border:1px dashed #229;margin-left:.5em;margin-right:.5em;padding-left:.5em;&amp;quot;&amp;gt;&lt;br /&gt;
[Tseaby]&amp;lt;br&amp;gt;&lt;br /&gt;
[WLXAM]&amp;lt;br&amp;gt;&lt;br /&gt;
[WLXTV]&amp;lt;br&amp;gt;&lt;br /&gt;
[TCOTSE]&amp;lt;br&amp;gt;&lt;br /&gt;
[WAE]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:20em;float:left;border-left:1px dotted #555;margin:1em;padding-left:.5em;font-size:1.5em&amp;quot;&amp;gt;&lt;br /&gt;
[[irc://irc.freenode.net:6667/etpro]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.homestarrunner.com/500cheats.html 500 Cheats]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.inkscape.org/download.php Vector Graphics Editing]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.gimp.org Raster Graphics Editing]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.quotationspage.com/quotes/Douglas_Adams Wisdom]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.shareaza.com OpenSource P2P]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://scoop.opennic.unrated.net/?op=special;page=faq#what OpenNIC DNS System]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
http://ettw.net/index/wilfi.png&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=User:WeblionX&amp;diff=2767</id>
		<title>User:WeblionX</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=User:WeblionX&amp;diff=2767"/>
		<updated>2007-08-10T02:28:08Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: Changed image location&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;overflow:hidden;width:100%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:20em;float:left;border-right:1px dotted #555;margin:1em;font-size:1.5em&amp;quot;&amp;gt;&lt;br /&gt;
[[http://weblionx.ettw.net/ WeblionX]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.surfacegroup.org/ Surface: The Sequel]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://weblionx.deviantart.com/ DA]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.aetheraudio.info/ Æther Audio]]&lt;br /&gt;
&amp;lt;div title=&amp;quot;-- Server Currently Unavailable --&amp;quot; style=&amp;quot;border:1px dashed #229;margin-left:.5em;margin-right:.5em;padding-left:.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[http://www.weblionx.org]&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[Tseaby]&amp;lt;br&amp;gt;&lt;br /&gt;
[WLXAM]&amp;lt;br&amp;gt;&lt;br /&gt;
[WLXTV]&amp;lt;br&amp;gt;&lt;br /&gt;
[TCOTSE]&amp;lt;br&amp;gt;&lt;br /&gt;
[WAE]&amp;lt;br&amp;gt;&lt;br /&gt;
[weblionx.no-ip.org]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:20em;float:left;border-left:1px dotted #555;margin:1em;padding-left:.5em;font-size:1.5em&amp;quot;&amp;gt;&lt;br /&gt;
[[irc://irc.quakenet.org:6667/wwgn]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[irc://irc.freenode.net:6667/etpro]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.homestarrunner.com/500cheats.html 500 Cheats]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.inkscape.org/download.php Vector Graphics Editing]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.gimp.org Raster Graphics Editing]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.quotationspage.com/quotes/Douglas_Adams Wisdom]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.shareaza.com OpenSource P2P]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://scoop.opennic.unrated.net/?op=special;page=faq#what OpenNIC DNS System]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[irc://irc.freenode.net:6667/mullet]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.wolfensteinx.com/surface/ Surface]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
http://ettw.net/index/wilfi.png&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=MullET&amp;diff=2706</id>
		<title>MullET</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=MullET&amp;diff=2706"/>
		<updated>2007-03-07T02:37:43Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;display:block;text-align:center;&amp;quot;&amp;gt;http://ettw.net/mullet/mullet_first.jpg&amp;lt;/span&amp;gt;&lt;br /&gt;
== Description ==&lt;br /&gt;
[[MullET]] is a parody modification being created by Rain from the [[ETPro]] team and various members of the community.  It has a planned release date of around April or May, 2008.  (Vote for |Rain| for president!)&lt;br /&gt;
&lt;br /&gt;
== Planned Features ==&lt;br /&gt;
===New ===&lt;br /&gt;
* Mantle system for realistic fence-jumping action!&lt;br /&gt;
* Maps with realistic hurricane damage&lt;br /&gt;
* Weaponslot for a variety of new map-spawned weapons&lt;br /&gt;
** Duct tape&lt;br /&gt;
** 2x4&lt;br /&gt;
** Slingshot&lt;br /&gt;
** Poltergeist Grenades - A very rare weapon that can go through walls.  Looks like a white egg.&lt;br /&gt;
** Rotten Eggs - Does 1HP damage per second to anyone in a close proximity.&lt;br /&gt;
** Guillotine Arrow - Slices heads off small animals&lt;br /&gt;
* Shotguns&lt;br /&gt;
* Drivable Camaro for vehicle-based gameplay&lt;br /&gt;
* Great new vsays featuring the voice of Ben Winslow&lt;br /&gt;
* Rabbits (and maybe dogs and birds)&lt;br /&gt;
* Additional Gametypes&lt;br /&gt;
* MulletCam \ő/&lt;br /&gt;
* Radios (Both in-car and others) can be set to stream OGG audio from an Internet radio station.&lt;br /&gt;
===Changed ===&lt;br /&gt;
* Allied and Axis teams are now Mullets and Rednecks&lt;br /&gt;
* Camaro turbo-charger unit instead of command posts (Engineers required to assemble)&lt;br /&gt;
* Cinderblocks for disabling enemy Camaro units&lt;br /&gt;
* Artillery is replaced by tornados&lt;br /&gt;
===More ===&lt;br /&gt;
*http://ettw.net/index/cowbell.png&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=Talk:Lua_Mod_API&amp;diff=2684</id>
		<title>Talk:Lua Mod API</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=Talk:Lua_Mod_API&amp;diff=2684"/>
		<updated>2007-02-19T21:18:08Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: Wee bit of cleanup.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;please call &amp;lt;b&amp;gt;et_Obituary()&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;et_Print()&amp;lt;/b&amp;gt; at the end of the engine function because we can do better output then. example: the engine output (ETPlayer killed himself.) is after the lua output (Hahaha! ETPlayer seems to be a selfkill noob!). thx!! --[[User:Pdi|pdi]] 09:13, 26 December 2006 (PST)&lt;br /&gt;
:It is called at the beginning of the function so lua mods can override obituary and print entirely if they want. I can make a separate lua hook which is called at the end of the function, eg et_ObituaryPost and et_PrintPost. [[User:Bani|Bani]] 11:52, 3 January 2007 (PST)&lt;br /&gt;
::Ok, this sounds good to me! Big THX!! :) Please have also a look at field section of this page! ;) --[[User:Pdi|pdi]] 05:41, 4 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
Can we have a intercepted version of &#039;&#039;&#039;et_ClientUserinfoChanged()&#039;&#039;&#039; to return &#039;&#039;&#039;1&#039;&#039;&#039; to intercept it with a mod and return &#039;&#039;&#039;0&#039;&#039;&#039; to pass it through to the server? THX!! --[[User:Pdi|pdi]] 00:54, 7 February 2007 (PST)&lt;br /&gt;
:I don&#039;t understand what you want here. You should already be able to call trap_SetUserinfo from et_ClientUserinfoChanged if you want to modify the values. --[[User:ReyalP|ReyalP]] 19:00, 8 February 2007 (PST)&lt;br /&gt;
::I found another way to do that. Sorry, but didn&#039;t need that anymore. --[[User:Pdi|pdi]] 12:16, 9 February 2007 (PST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== IPC stuff ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
i would like a et_IPCReceive whit an return value so u can send info back on a request&lt;br /&gt;
&lt;br /&gt;
i would like a et_IPCSend that can send to all lua mods then them mods can decide if the wana use that message or not&lt;br /&gt;
[[User:=FF=im2good4u|=FF=Im2good4u]] 12:35, 8 January 2006 (PST)&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
  et_IPCReceive wouldn&#039;t send it to the other mod... afaik... so just use another send&lt;br /&gt;
  just et_IPCSend to all modules (afaik, you can even send to ones not there), simple loop function&lt;br /&gt;
[[User:gotenks|gotenks]] 20:04, 8 January 2006 (CST)&lt;br /&gt;
&lt;br /&gt;
yeh probely but its not verry handy its better to get the good vmnumber or to e able to send on mod filenames&lt;br /&gt;
&lt;br /&gt;
apart from that returning a value will be more handy since tnhe u cna contine in 1 funtion else u got to reacise it in the recieve funtion [[User:=FF=im2good4u|=FF=Im2good4u]] 10:45, 9 January 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
== Fields for the next release ==&lt;br /&gt;
I think Kotoko wants the &#039;&#039;&#039;ps.velocity&#039;&#039;&#039; field here. It would be a good idea, I think. --[[User:FARMICEUDICAL|FARMICEUDICAL]] 20:23, 5 December 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
bani: RW access to all &amp;quot;sess.*&amp;quot; fields (sess.skillpoints, sess.startskillpoints, sess.startxptotal, ...) would be great. thanx! --[[User:Pdi|pdi]] 05:55, 2 August 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
bani: please make all &amp;quot;pers.*&amp;quot; fields (pers.clientTimeNudge, pers.clientMaxPackets, ...) available. thanx! --[[User:Pdi|pdi]] 01:04, 17 August 2006 (PDT)&lt;br /&gt;
:you can get timenudge and maxpackets from the userinfo --[[User:ReyalP|ReyalP]] 20:19, 18 August 2006 (PDT)&lt;br /&gt;
::i know, but i ask for all pers.* fields. pers.clientTimeNudge and pers.clientMaxPackets are only examples. :) --[[User:Pdi|pdi]] 01:56, 21 August 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
bani: will we have rw access to those fields (all sess.* and all pers.*) with next update? please!! --[[User:Pdi|pdi]] 07:02, 19 October 2006 (PDT)&lt;br /&gt;
: we are not going to add all the fields. A lot of them don&#039;t make sense for lua mods. Explain which ones you need --[[User:ReyalP|ReyalP]] 20:57, 5 February 2007 (PST)&lt;br /&gt;
::Ok, didn&#039;t know why i&#039;m asking for (long time ago) but fields for xp/skill (sess.skillpoints array - if i remember) control would be great. THX!! --[[User:Pdi|pdi]] 00:54, 7 February 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ps.weapon&#039;&#039;&#039;, so arbitrary weapons can be added to or removed from arbitrary classes. For example, trickjump servers don&#039;t like Field Ops spamming airstrikes or artillery, but they do appreciate the ammo they give out. --[[User:FARMICEUDICAL|FARMICEUDICAL]] 21:09, 5 December 2006 (PST)&lt;br /&gt;
: ps.weapon won&#039;t do that for you. ps.weapon&#039;&#039;&#039;s&#039;&#039;&#039; might :) --[[User:ReyalP|ReyalP]] 17:14, 6 December 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
Okay then, &#039;&#039;&#039;ps.weapon&#039;&#039;&#039; so that medics can be set to spawn with the adrenaline needle out instead of the smg. --[[User:FARMICEUDICAL|FARMICEUDICAL]] 03:23, 11 December 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
Please give read access to &#039;&#039;&#039;g_campaignInfo_t&#039;&#039;&#039; in a field like &#039;&#039;&#039;campaignInfo&#039;&#039;&#039;. Thx!! --[[User:Pdi|pdi]] 08:57, 7 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
== LoadLib ==&lt;br /&gt;
&lt;br /&gt;
Add loadlib ppl it says u have lua basic included but not loadlib !!&lt;br /&gt;
&lt;br /&gt;
(on windows it gives an error attept to call global load lin a nil valua)[[User:=FF=im2good4u|=FF=Im2good4u]] 05:16, 15 February 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
== XP control not just skill ==&lt;br /&gt;
&lt;br /&gt;
I would like to request RW access to the &amp;quot;sess.skillpoints&amp;quot; array&lt;br /&gt;
&lt;br /&gt;
At least a callback on et.G_AddSkillPoints ( &#039;&#039;&#039;cno&#039;&#039;&#039;, &#039;&#039;&#039;skill&#039;&#039;&#039;, &#039;&#039;&#039;points&#039;&#039;&#039; ) [[User:=FF=im2good4u|=FF=Im2good4u]] 07:45, 8 March 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
== Locations == &lt;br /&gt;
 [22:08:57] &amp;lt;Vetinari&amp;gt; [NW]reyalP: if you&#039;re exposing map coords, it would &lt;br /&gt;
   be nice to have something like et.PostitionName( et.gentity_get(id, &amp;quot;r.currentOrigin&amp;quot;)) &lt;br /&gt;
   &amp;lt;-- location name or map coords &amp;quot;(B, 3)&amp;quot;, so I don&#039;t have to parse the _loc.dat ;-&amp;gt;&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=ETPro:Server_cvar_list&amp;diff=2678</id>
		<title>ETPro:Server cvar list</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=ETPro:Server_cvar_list&amp;diff=2678"/>
		<updated>2007-02-16T23:05:47Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: No need to go through birdman. :)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &#039;&#039;&#039;ETPro server-side cvars&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
This list contains all ETPro server cvars.&lt;br /&gt;
&lt;br /&gt;
We have tried to include as much information in each description as possible, but some might require a more in-depth explaination.  These have links to their seperate page.&lt;br /&gt;
&lt;br /&gt;
=== Cvars/Commands ===&lt;br /&gt;
&lt;br /&gt;
Most of these cvars are either 0 (disabled) or 1 (enabled).  Those that differ have the values included in the description.  For an explanation of how bitmask cvars work see the [[Bitmask-cvar]] article.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pitatable columns=2 headlines=&amp;quot;Cvar/Command;Description&amp;quot; headerbgcolor=&amp;quot;0b53b4&amp;quot; headerfontcolor=&amp;quot;#FFFFFF&amp;quot; border1=2 border2=1 aligns=&amp;quot;left;left&amp;quot;&amp;gt;&lt;br /&gt;
b_anticheat;Controls ETPro&#039;s anticheat: 0 = Disabled, 1 = Enabled (normal restriction, recommended, default), 2 = More restrictive, 3 = Only allow 100% clean players (&#039;&#039;&#039;not&#039;&#039;&#039; recommended)&lt;br /&gt;
b_antiwarp;Control that prevents players from abusing &#039;warping&#039;, 0 = Disabled, 1 = Enabled (default)&lt;br /&gt;
b_bannerlocation;Bitmask which determines the location of the banners print out area, valid values 0 – 248, you can still use the older values 0 – 4 this auto adds 64 and prints them to the console also.... 0 or 8 = Player chat area, 1 or 16 = Left popup area (not recommended), 2 or 32 = Centred (above the chat area), 3 or 64 = Console only, 4 or 128 = Banner area (top of screen, default, recommended).&lt;br /&gt;
b_banner&#039;&#039;n&#039;&#039;;Use for specifying the text of each banner, b_banner&#039;&#039;n&#039;&#039; defines the text to be displayed for banner number &#039;&#039;n&#039;&#039; in the banner rotation, where &#039;&#039;n&#039;&#039; is an integer between 1 &amp;amp; 999, (e.g. set banner1 &amp;quot;I’m a banner&amp;quot;, set banner2 &amp;quot;I’m another banner&amp;quot;, etc).&lt;br /&gt;
b_banners;Defines the number of rotating server banners, (using the example in b_banner, the banners (&amp;quot;I’m a banner&amp;quot;, &amp;quot;I’m another banner&amp;quot;) you would then set b_banners 2), default 0 disabled, valid values 0 - 999.&lt;br /&gt;
b_bannertime;Defines the duration between banners, default 0, valid values 0 – n, where n is the time in seconds between banners. Values below 30 (in our opinion) would be just spamming, especially if you are printing them in the centre print area, who what’s to play in a server that is bombarding them with banners.&lt;br /&gt;
b_brokenlogtimestamps;Controls whether timestamps are written in a fixed-width 7 character space. This should only be enabled if you are using a log file analyser that requires the broken timestamps in order to function properly, default 0, disabled.&lt;br /&gt;
b_campaignFile;Allows specifying a specific campaign file, so that clients aren&#039;t forced to download every referenced pk3 on the server, default &amp;quot;&amp;quot;, disabled. The syntax is &amp;quot;scripts/xxx.campaign&amp;quot;.&lt;br /&gt;
b_chargetransfer;Controls whether use of mines to transfer charge between players or &#039;store charge&#039; (exploit) is allowed, default 1, enabled (allowed).&lt;br /&gt;
b_cheatkicktime;Duration of auto-kick for cheater detections, (i.e. set b_cheatkicktime n, where n = how long in minutes a player is kicked for), default -1, disabled, if left disabled a report will still be logged in the b_cheatlog, if b_cheatlog is not set, it logs cheat messages to g_logfile.&lt;br /&gt;
b_cheatlog;Defines the name of the cheat log (ETPro anticheat), (i.e. set b_cheatlog &amp;quot;etpro_cheats.log&amp;quot;), default &amp;quot;&amp;quot;, disabled. If b_cheatlog is is not set, it will still log cheat messages to g_logfile.&lt;br /&gt;
b_crashlogpath;Set the cvar b_crashlogpath to the path you want to save crash dump files to, (e.g. on win32 set b_crashlogpath c:\ , on Linux set b_crashlogpath /home/etserver).&lt;br /&gt;
b_crashpopup;On win32 you can enable a gui crash popup window - !!warning!! server will be halted until the crash dialog box is closed –, default 0, disabled.&lt;br /&gt;
b_cursefilter;Determines which words you would like filtered out, but it’s not a good filter as players can spell swear words in many different ways using numbers, letter spacing etc and there are just to many variations to include in this filter. A good use for it, is to help protect your rcon, ref, semiadmin etc passwords, just in case a trusted member or even yourself forget to put the / (slash) before said passwords when signing in. Should you wish to use it, just list all the passwords/forbidden words leaving a space between each word (i.e. set b_cursefilter &amp;quot;pass1 pass2 swear1 swear2 etc&amp;quot;), default &amp;quot;&amp;quot;, disabled.&lt;br /&gt;
b_cursefilteraction;Controls what action to take with filtered words, default 3...... 0 = do nothing (not a wise choice if your wishing to filter certain words out lol), 1 = silently filter the messages (it will still appear to the player as though his/her message was sent), 2 = censor (e.g. &amp;quot;hey, you are a *******&amp;quot;), 3 = filter the message (it isn&#039;t displayed to anybody).&lt;br /&gt;
b_customVoiceChat;Controls whether to allow clients use custom voice chats, but not custom audio sound packs, default 1, enabled.&lt;br /&gt;
&lt;br /&gt;
b_damagexp;Controls whether certain types of XP will be rewarded based on the damage given to other players instead of the number of complete kills. This can help even game play on extremely offence-biased maps, it solves some problems with the original per-kill system (e.g. an air strike takes a player down to 1 health and blasts them into the air, but you receive no XP when they fall to their death.) The damage-based XP system rewards 1 XP per kill and 1 XP for each 50hp of damage inflicted on an enemy player, default 0, disabled.&lt;br /&gt;
b_defaultbantime;Defines the time in seconds for bans without explicitly defined ban time, default 300.&lt;br /&gt;
b_defaultskills;Defines the skill levels granted to new players when they connect, default &amp;quot;&amp;quot;, valid values 0 – 4 for each skill.This variable takes 7 space-separated integers to define each starting skill level in the following order: b_defaultskills &amp;quot;0 0 0 0 0 0 0&amp;quot;,  1st 0 = Battle Sense, 2nd 0 = Explosives and Construction (Engineering), 3rd 0 = First Aid (Medic), 4th 0 = Signals(Field Ops), 5th 0 = Light Weapons, 6th 0 = Heavy Weapons (Soldier), 7th 0 = Military Intelligence and Scoped Weapons (Covert Ops). Example: To give everyone default battle sense 2 and light weapons 3, you would set b_defaultskills &amp;quot;2 0 0 0 3 0 0&amp;quot;, To lock players permanently at those skill levels, you would additionally do b_noskillupgrades 1, See b_noskillupgrades for explanation.&lt;br /&gt;
b_distancefalloff;Controls whether bullets lose some of there hit point damage inflicted over long-range shots, default 1, enabled.&lt;br /&gt;
b_emptyscript;Assign the name of a script to execute when the last player leaves the server, default &amp;quot;&amp;quot;, disabled.&lt;br /&gt;
b_ettv_flags;Bitmask controlling special features for ETTV slave clients, default 3, valid values 0-3...... 0 = Disabled, 1 = Don&#039;t allow ETTV slaves to be kicked, 2 = Automatically give ETTV slaves shoutcaster status, 3 = 1 and 2.&lt;br /&gt;
b_extendedprone;Controls accurate hitbox for proning animations, and makes the prone animation transition through crouching, default 0, disabled.&lt;br /&gt;
b_fallingbugfix;Controls whether to enable/disable a fix in the physics code, which should prevent players from getting stuck on edges and subsequently falling to their death from a small height, default 1, enabled.&lt;br /&gt;
b_fixedphysics;Controls various physics fixes, default 0, valid values 0-2...... 0 = Standard ET physics, 1 = Don&#039;t snap positions (avoiding rounding error), jump velocity set to match etmain&#039;s at b_fixedphysicsfps fps, 2 = Standard ET physics with anti-333fps, doesn&#039;t snap positions above 166fps or change etmain jump velocity.&lt;br /&gt;
b_fixedphysicsfps;Controls jump velocity when using b_fixedphysics 1. Since jump height/velocity is so strongly tied to rounding error in etmain physics, the etmain velocity doesn&#039;t make sense when no longer rounding positions. To compensate, b_fixedphysics 1 will set the player&#039;s jump velocity to the etmain equivalent at whatever frame rate b_fixedphysicsfps is set to, default 125. See also b_fixedphysics.&lt;br /&gt;
b_floodMaxCommands;Controls the client only being able to send the specified number of rate-limited commands per 30 seconds, to protect the server from flooding, default 6.&lt;br /&gt;
b_flushItems;Controls whether dropped items like medic packs lay flush to the ground they land on (same angle), default 0, disabled.&lt;br /&gt;
b_headshot;Bitmask controlling ETPro headshot mode, default 0, valid values 0 – 15......... 0 = disabled, 1 = headshots only, 2 = instagib (see also b_instagibDamage), 4 = clients can only damage other clients, 8 = clients only receive damage from other clients.&lt;br /&gt;
b_helmetprotection;Controls whether damage is reduced for the first headshot received, default 1, enabled.&lt;br /&gt;
b_instagibDamage;Controls the damage done when b_headshot mode&#039;s instagib is enabled, (e.g. set this to 160 so that a player can still be revived after being shot.), default 400.&lt;br /&gt;
b_intermissiontime;Defines the duration of the end-round intermission between maps, in seconds, default 60.&lt;br /&gt;
b_intreadypercent;Determines the percentage of clients needed to press ready to skip intermission countdown and continue to the next map, default 75, valid values 0 – 100.&lt;br /&gt;
b_levels_battlesense;Defines the amount of XP required to reach each level upgrade, 1 - 4 space-separated integers. Omitting values will disable any of the levels higher than those specified. A value of -1 for any skill level also disables that particular level, although the associated skills will still be gained when reaching a higher level, if allowed. Leaving the value blank (&amp;quot;&amp;quot;) causes the default values to be used: &amp;quot;20 50 90 140&amp;quot;. Examples: Disable level 3 and 4 engineers: b_levels_engineer &amp;quot;20 50&amp;quot;, Don&#039;t give medics full revive until level 4: b_levels_medic &amp;quot;20 50 -1 140&amp;quot;, Give everyone binoculars almost immediately: b_levels_battlesense &amp;quot;5 50 90 140&amp;quot;.&lt;br /&gt;
b_levels_covertops;See b_levels_battlesense explanation, same rule applies.&lt;br /&gt;
b_levels_engineer;See b_levels_battlesense explanation, same rule applies.&lt;br /&gt;
b_levels_fieldops;See b_levels_battlesense explanation, same rule applies.&lt;br /&gt;
b_levels_lightweapons;See b_levels_battlesense explanation, same rule applies.&lt;br /&gt;
b_levels_medic;See b_levels_battlesense explanation, same rule applies.&lt;br /&gt;
b_levels_soldier;See b_levels_battlesense explanation, same rule applies.&lt;br /&gt;
b_logrealtimestamps;Controls whether to log the time of day (hh:mm:ss) or the amount of time the server has been on the current map, default 1 (hh:mm:ss).&lt;br /&gt;
b_mapconfigdirectory;Defines the folder name to look for map specific cfg/config files.&lt;br /&gt;
b_mapscriptdirectory;Defines the folder name to look for map scripts (i.e. set b_mapscriptdirectory &amp;quot;etpromapscripts&amp;quot;).&lt;br /&gt;
b_match_warmupjoin;Controls whether clients are able to join teams during warm-ups, default 0, disabled.&lt;br /&gt;
b_maxmortarpitch;Controls whether to limit effective range of ground slope angles for mortar deployment, (e.g. if set to 20, then a mortar deployed on a slope greater than 20 degrees (e.g. 30 or 40) would behave as if it were deployed on a slope of 20 degrees), default 0, disabled.&lt;br /&gt;
b_moverscale;Controls how fast most movers (i.e. vehicles) will move compared to their normal speed.  Extremely high values will cause erratic behaviour, default 1.0.&lt;br /&gt;
b_multiview;Controls enabling/disabling OSP&#039;s multiview. Multiview allows spectators to view multiple players at the same time, but clients who are using multiview consume slightly more bandwidth and CPU time than normal spectators, so not advisable unless you know your server can handle it, especially if a few specs are using it at the one time (lags server), default 1, enabled.&lt;br /&gt;
b_noskillupgrades;When set to 1, players may still score XP, but they will no longer gain skill or rank upgrades. This is especially useful in combination with b_defaultskills to even out game play when playing in non-campaign mode, default 0, disabled. See also b_defaultskills.&lt;br /&gt;
b_panzerlevelup;Determines the skill level at which the panzerfausts receive the &#039;Improved Projectile Resources&#039; upgrade. The mortar is unaffected. A value of 5 means that the panzerfaust will never be subject to this upgrade, default 1, valid values 1 – 5.&lt;br /&gt;
b_privatemessages;Determines the minimum number of allowable characters for name matching of private messages. A value of  &amp;quot;0&amp;quot; disables private messaging entirely, default 2, valid values 0 – 36.&lt;br /&gt;
b_pronedelay;Implements a delay in the client&#039;s proning action, default 0...... 0 = etmain normal behaviour, no spread change, players may not un-prone for 750ms, 1 = max spread for 1 second after proning, players may not un-prone for 1750ms.&lt;br /&gt;
b_realhead;Controls correcting the head hit box, when enabled, the head hit box is where the head is drawn on the client, instead of at the top-centre of the body-hit box, default 1, enabled. Settings other than 0/1 are for debugging.&lt;br /&gt;
b_riflegrenades;Controls whether to allow rifle grenades, default 1 enabled. See also team_maxriflegrenades.&lt;br /&gt;
b_semiAdminCmds;Defines what commands are available for each semiadmin level.&lt;br /&gt;
b_semiAdminLevels;Defines the number of semi admin levels. If undefined (&amp;quot;&amp;quot;) or 0, then the semi admin feature is disabled, default 0, disabled, valid values 0 – 99.&lt;br /&gt;
b_semiAdminPass;Defines the required password for clients to become a semi admin. A different password is required for each b_semiadminlevel.&lt;br /&gt;
b_shoutcastpassword;Defines the password required for special spectator class.&lt;br /&gt;
b_shove;Controls how strong shoves are, default 80, 0 to disable.&lt;br /&gt;
b_shove_noz;Controls vertical shoving, default 1, enabled. When enabled this prevents players shoving others over walls or up to unreachable places.&lt;br /&gt;
b_showClientCmds;Controls whether all commands clients send to the server are written to the log file, default 0, disabled.&lt;br /&gt;
b_shrug;Controls whether clients can use shrug, default 0, disabled.&lt;br /&gt;
b_spectatorNames;Controls whether spectators are allowed to see the player name popup when looking at another player, default 1. 0 = No names shown, disabled, 1 = Names shown to referees and semiadmins only, 2 = Names shown to all players.&lt;br /&gt;
b_statsaver;Controls whether client&#039;s xp and stats are restored if they exit, then return to the server. This is not XP save it’s only a stats saver, all stats will be reset whenever the game normally does a stats reset (e.g. when restarting a campaign or starting a new campaign), default 1, enabled.&lt;br /&gt;
b_stickycharge;When set to 1, per-class charge bars become &#039;sticky&#039;, players will only have their charge bar refilled on respawn if they were killed by an enemy player, default 1, valid values 0 – 2...... 0 = Full recharge, 1 = If killed by enemy, then full recharge, otherwise normal recharge, 2 = Normal recharge no matter how you died, Normal recharge = Gradually filling as if you weren’t killed.&lt;br /&gt;
b_sv_hitsounds;Controls whether clients are allowed use hit sounds, default 1, enabled.&lt;br /&gt;
b_watermark;Specifies the location of the watermark file, default &amp;quot;&amp;quot;, disabled. Automatically prepends &amp;quot;watermark/&amp;quot;. Links to more info at bottom of page.&lt;br /&gt;
b_watermarkFadeAfter;Determines how long the watermark will stay on the screen before fading away. A value of  -1 and the watermark will not fade off, default -1, valid values -1, 0, n, where n = the length of time in seconds before the watermark starts fading.&lt;br /&gt;
b_watermarkFadeTime;Determines the duration the watermark image takes to actually fade away, default 1.5, valid values: 0 - n, where n = the length of time in seconds before the watermark fades out.&lt;br /&gt;
b_wolfrof;Controls whether the SMG rate of fire is equal to that of RTCW&#039;s Thompson (much faster), default 0...... 0 = ET Standard SMG Rate of fire, 1 = RTCW Standard SMG Rate of fire.&lt;br /&gt;
b_xpstopwatch;Controls whether XP remains over stopwatch rounds, default 0, disabled. If set to 1 XP gained in the first round remains in the concluding round.&lt;br /&gt;
config;Used for loading an ETPro style config file (i.e. config clanwar, would load clanwar.config).&lt;br /&gt;
forcecvar;Used to force cvars to a specified value for all connected clients, (i.e. command &amp;quot;forcecvar r_drawfoliage 0&amp;quot;, commonly used for the map Radar). Link for more info at bottom of page.&lt;br /&gt;
lua_allowedmodules;If set, only lua modules with the matching sha1 signatures listed in this cvar will be allowed to load, default &amp;quot;&amp;quot;, disabled.&lt;br /&gt;
lua_modules;Space separated list of lua modules for ETPro to load, modules will be run in the order listed, default &amp;quot;&amp;quot;, disabled. Links for more info on Lua&#039;s at bottom of page.&lt;br /&gt;
p;Replaces Players_Allies and Players_axis. Goto link at bottom of page for better explanation.&lt;br /&gt;
sv_cvar;Used for ETPro cvar restrictions. Goto Link at bottom of page for an explanation on how to use them.&lt;br /&gt;
team_maxCovertops;Determines the max number of covert ops allowed on each team, default –1, unlimited&lt;br /&gt;
team_maxEngineers;Determines the max number of engineers allowed on each team, default –1, unlimited.&lt;br /&gt;
team_maxFieldops;Determines the max number of field ops allowed on each team, default –1, unlimited.&lt;br /&gt;
team_maxFlamers;Determines the max number of flamers allowed for each team, default –1, unlimited.&lt;br /&gt;
team_maxMedics;Determines the max number of medics allowed on each team, default –1, unlimited.&lt;br /&gt;
team_maxMg42s;Determines the max number of mobile MG&#039;s allowed for each team, default –1, unlimited.&lt;br /&gt;
team_maxMines;Determines the max number of mines available for each team, default 10, -1 unlimited&lt;br /&gt;
team_maxMortars;Determines the max number of mortars allowed for each team, default –1, unlimited.&lt;br /&gt;
team_maxPanzers;Determines the max number of panzerfausts allowed for each team, default –1, unlimited.&lt;br /&gt;
team_maxplayers;Determines the max number of players that can join each team.&lt;br /&gt;
team_maxriflegrenades;Determines the max number of riflegrenades allowed for each team, default –1, unlimited. See also b_riflegrenades.&lt;br /&gt;
team_maxSoldiers;Determines the max number of soldiers allowed on each team, default -1, unlimited.&lt;br /&gt;
vote_allow_cointoss;Controls the ability to vote for a cointoss.  0 = Disabled, 1 = Enabled (Default)&lt;br /&gt;
vote_allow_config;Specify config&#039;s that can be loaded by vote, default &amp;quot;&amp;quot;, disabled, &amp;quot;*&amp;quot; to allow all config&#039;s.&lt;br /&gt;
vote_allow_surrender;Controls whether teams can call a vote to surrender, default 1, enabled.&lt;br /&gt;
Commands;Action performed&lt;br /&gt;
b_cvarempty;Resets all ETPro cvars to their defaults. If using this in a cfg/config, make sure to place it at the start, anywhere else and all cvars adjusted before it will be reset to default.&lt;br /&gt;
&amp;lt;/pitatable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
&lt;br /&gt;
*[[IAC]]&lt;br /&gt;
*[[AntiWarp]]&lt;br /&gt;
*[[Cursefilter]]&lt;br /&gt;
*[[ETPro_CVARS | Fixedphysics]]&lt;br /&gt;
*[[SemiAdmin]]&lt;br /&gt;
*[[Shoutcasting]]&lt;br /&gt;
*[http://bani.anime.net/etpro/adminguide.html Watermark]&lt;br /&gt;
*[http://bani.anime.net/banimod/forums/viewtopic.php?t=2033 Watermark]&lt;br /&gt;
*[[Forced_Cvars]]&lt;br /&gt;
*[[Lua_Mod_API | Lua Mod]]&lt;br /&gt;
*[[ETPro:Lua_Sample_Code | Lua Sample Code]]&lt;br /&gt;
*[[Cvar_Restrictions | sv_cvar Restrictions]]&lt;br /&gt;
*[[ETPro:Server_Configuration]]&lt;br /&gt;
*[[Extended_ASCII]]&lt;br /&gt;
&lt;br /&gt;
[[Category:ETPro:Server_Cvars]]&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=MullET&amp;diff=2674</id>
		<title>MullET</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=MullET&amp;diff=2674"/>
		<updated>2007-02-15T21:45:59Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;display:block;text-align:center;&amp;quot;&amp;gt;http://ettw.net/mullet/mullet_first.jpg&amp;lt;/span&amp;gt;&lt;br /&gt;
== Description ==&lt;br /&gt;
[[MullET]] is a parody modification being created by Rain from the [[ETPro]] team and various members of the community.  It has a planned release date of around April or May, 2008.  (Vote for |Rain| for president!)&lt;br /&gt;
&lt;br /&gt;
== Planned Features ==&lt;br /&gt;
===New ===&lt;br /&gt;
* Mantle system for realistic fence-jumping action!&lt;br /&gt;
* Maps with realistic hurricane damage&lt;br /&gt;
* Weaponslot for a variety of new map-spawned weapons&lt;br /&gt;
** Duct tape&lt;br /&gt;
** 2x4&lt;br /&gt;
** Slingshot&lt;br /&gt;
** Poltergeist Grenades - A very rare weapon that can go through walls.  Looks like a white egg.&lt;br /&gt;
** Rotten Eggs - Does 1HP damage per second to anyone in a close proximity.&lt;br /&gt;
** Guillotine Arrow - Slices heads off small animals&lt;br /&gt;
* Shotguns&lt;br /&gt;
* Drivable Camaro for vehicle-based gameplay&lt;br /&gt;
* Great new vsays featuring the voice of Ben Winslow&lt;br /&gt;
* Rabbits (and maybe dogs and birds)&lt;br /&gt;
* Additional Gametypes&lt;br /&gt;
* Farm animals poop spawn points&lt;br /&gt;
* MulletCam \ő/&lt;br /&gt;
* Radios (Both in-car and others) can be set to stream OGG audio from an Internet radio station.&lt;br /&gt;
===Changed ===&lt;br /&gt;
* Allied and Axis teams are now Mullets and Rednecks&lt;br /&gt;
* Camaro turbo-charger unit instead of command posts (Engineers required to assemble)&lt;br /&gt;
* Cinderblocks for disabling enemy Camaro units&lt;br /&gt;
* Artillery is replaced by tornados&lt;br /&gt;
===More ===&lt;br /&gt;
*http://ettw.net/index/cowbell.png&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=Map_scripting&amp;diff=2670</id>
		<title>Map scripting</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=Map_scripting&amp;diff=2670"/>
		<updated>2007-02-14T21:35:17Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: Added b_mapscriptdirecty link to server cvar list, added possible solutions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==General information==&lt;br /&gt;
In [[ETPro]] version 3 the [[ETPro]] team has improved and changed the scripting system to a quite big extent. This article presents some of the new [[ETPro]] map scripting features.&lt;br /&gt;
&lt;br /&gt;
Some things cannot be done by scripting. These include:&lt;br /&gt;
* making a part of terrain mineable/unmineable.&lt;br /&gt;
&lt;br /&gt;
==mapscript related cvars==&lt;br /&gt;
* [[ETPro:Server_cvar_list|b_mapscriptdirectory]] is an etpro cvar which specifies what directory too look for the map script. As always, the game looks under fs_game first, so you should not include etpro or etmain in the value of b_mapscriptdirectory. If not specified, the default is &amp;lt;tt&amp;gt;maps/&amp;lt;/tt&amp;gt;. ETPro includes bug fix only scripts in &amp;lt;tt&amp;gt;etpro/maps&amp;lt;/tt&amp;gt; and modified scripts in &amp;lt;tt&amp;gt;etpro/etpromapscripts&amp;lt;/tt&amp;gt;&lt;br /&gt;
* [[g_scriptname]] is an etmain cvar which specifies the filename of the script to be used. It is reset every time a map is loaded. The default is to use &amp;lt;tt&amp;gt;&amp;lt;i&amp;gt;mapname&amp;lt;/i&amp;gt;.script&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;&amp;lt;i&amp;gt;mapname&amp;lt;/i&amp;gt;_lms.script&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* [[g_scriptdebug]] 1 outputs verbose information about the script in the server console.&lt;br /&gt;
&lt;br /&gt;
==Scripting Examples by [http://bani.anime.net/banimod/forums/profile.php?mode=viewprofile&amp;amp;u=226 duke&#039;ku]==&lt;br /&gt;
Here I&#039;ll show a few examples of the new scripting allowed in ETPro, and attempt to explain what exactly it&#039;s doing. First off, I&#039;ll start with a simple example, where a model (in this case, a dinghy) is inserted into the map.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;create&lt;br /&gt;
{&lt;br /&gt;
   scriptname &amp;quot;dinghy1&amp;quot;&lt;br /&gt;
   origin &amp;quot;2650 600 100&amp;quot;&lt;br /&gt;
   classname &amp;quot;misc_gamemodel&amp;quot;&lt;br /&gt;
   modelscale 1&lt;br /&gt;
   contents 1&lt;br /&gt;
   mins &amp;quot;-90 -90 -25&amp;quot;&lt;br /&gt;
   maxs &amp;quot;90 90 25&amp;quot;&lt;br /&gt;
   clipmask 1&lt;br /&gt;
      model &amp;quot;models/mapobjects/dinghy_sd/dinghy.md3&amp;quot;   &lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This isn&#039;t exactly the cleanest example of scripting (mainly due to my lackluster job of clipping the model off,) but what it produces is this:&lt;br /&gt;
http://games.theteamkillers.net/rtcw/dinghy/2004-01-14-234844-battery.jpg&lt;br /&gt;
&lt;br /&gt;
Now, to break down how it works. The create{ } command will place an entity into the map, at the spot specified by the &amp;quot;origin&amp;quot; key. The scriptname specifies the name that the entity will have in the map, and it is what seperates it from other entities in the map (which can cause quite a few problems).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;create&lt;br /&gt;
{&lt;br /&gt;
   scriptname &amp;quot;dinghy1&amp;quot;&lt;br /&gt;
   origin &amp;quot;2650 600 100&amp;quot;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The code above will do nothing, it creates an entity (not even of a specified type, it will do nothing) and places into the map at 2650,600,100. To find your position on a map to place an entity (you&#039;ll need to find an origin for almost every entity), use the command &amp;quot;/viewpos&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;create&lt;br /&gt;
{&lt;br /&gt;
   scriptname &amp;quot;dinghy1&amp;quot;&lt;br /&gt;
   origin &amp;quot;2650 600 100&amp;quot;&lt;br /&gt;
   classname &amp;quot;misc_gamemodel&amp;quot;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, the code has advanced a bit further and the entity now has a specified type, misc_gamemodel. A misc_gamemodel is a model placed into the map during load (compared to a misc_model, which are permanently static objects that get compiled into the map at compile). Misc_gamemodels can be used for almost anything, from walls (although this would be a terrible way of making a map) to moving tanks (all of the vehicles, construction boxes, command posts, etc. in game are all misc_gamemodels), but in this script it&#039;s just used for placing a model (provided with the ET mapping tools, available at http://www.qeradiant.com).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;create&lt;br /&gt;
{&lt;br /&gt;
   scriptname &amp;quot;dinghy1&amp;quot;&lt;br /&gt;
   origin &amp;quot;2650 600 100&amp;quot;&lt;br /&gt;
   classname &amp;quot;misc_gamemodel&amp;quot;&lt;br /&gt;
   modelscale 1&lt;br /&gt;
   contents 1&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, the model has a defined scale, 1. A scale of .5 would cause it to be half of the size of the model in the file that will be referenced, and a scale of 2 would cause it to be twice the size. Most flags that are used on an entity can be found in the entities.def file that is provided with the mapping tools.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;create&lt;br /&gt;
{&lt;br /&gt;
   scriptname &amp;quot;dinghy1&amp;quot;&lt;br /&gt;
   origin &amp;quot;2650 600 100&amp;quot;&lt;br /&gt;
   classname &amp;quot;misc_gamemodel&amp;quot;&lt;br /&gt;
   modelscale 1&lt;br /&gt;
   contents 1&lt;br /&gt;
   mins &amp;quot;-90 -90 -25&amp;quot;&lt;br /&gt;
   maxs &amp;quot;90 90 25&amp;quot;&lt;br /&gt;
   clipmask 1&lt;br /&gt;
   model &amp;quot;models/mapobjects/dinghy_sd/dinghy.md3&amp;quot;   &lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, for the clipping. The contents flag specifies the type of surfaceflag that the entity will be. Surfaceflags that are defined in the ET source (found in src/game/surfaceflags.h, if you&#039;re interested) are listed [http://bani.anime.net/banimod/forums/viewtopic.php?t=3328&amp;amp;start=0#surfaceflags here]. The mins and maxs specify how far out from the origin of the model (in each direction) the clipping will extend to. The coordinates on this model aren&#039;t accurate, but they get the job done.&lt;br /&gt;
&lt;br /&gt;
This was a very basic example of scripting, and now I&#039;ll be listing some more advanced examples of scripting.&lt;br /&gt;
&lt;br /&gt;
===Example 1: Battery&#039;s Back Door and Dynamite===&lt;br /&gt;
&amp;lt;pre&amp;gt;//bani&lt;br /&gt;
create&lt;br /&gt;
{&lt;br /&gt;
   scriptName &amp;quot;backdoor&amp;quot;&lt;br /&gt;
   classname &amp;quot;func_explosive&amp;quot;&lt;br /&gt;
   targetname &amp;quot;backdoor&amp;quot;&lt;br /&gt;
   origin &amp;quot;4608 -4594 1024&amp;quot;&lt;br /&gt;
   mins &amp;quot;-63 -10 0&amp;quot;&lt;br /&gt;
   maxs &amp;quot;63 10 128&amp;quot;&lt;br /&gt;
   spawnflags 1   // AXIS_OBJECTIVE(1)&lt;br /&gt;
   eflags 65536   // EF_FAKEBMODEL&lt;br /&gt;
   svflags 1   // SVF_NOCLIENT&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//bani&lt;br /&gt;
create&lt;br /&gt;
{&lt;br /&gt;
   scriptName &amp;quot;backdoor_obj&amp;quot;&lt;br /&gt;
   classname &amp;quot;trigger_objective_info&amp;quot;&lt;br /&gt;
   targetname &amp;quot;backdoor_obj&amp;quot;&lt;br /&gt;
   target &amp;quot;backdoor&amp;quot;&lt;br /&gt;
   origin &amp;quot;4608 -4601 1024&amp;quot;&lt;br /&gt;
   mins &amp;quot;-95 -85 0&amp;quot;&lt;br /&gt;
   maxs &amp;quot;95 85 128&amp;quot;&lt;br /&gt;
   spawnflags 17   // AXIS_OBJECTIVE(1) | CUSTOMIMAGE&lt;br /&gt;
   track &amp;quot;the Back Door&amp;quot;&lt;br /&gt;
   shortname &amp;quot;Back Door&amp;quot;&lt;br /&gt;
   customaxisimage &amp;quot;gfx/limbo/cm_radar_maindoor&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//bani - bug fixes&lt;br /&gt;
create&lt;br /&gt;
{&lt;br /&gt;
   scriptName &amp;quot;bugfix1&amp;quot;&lt;br /&gt;
   classname &amp;quot;func_fakebrush&amp;quot;&lt;br /&gt;
   origin &amp;quot;3632 -4313 881&amp;quot;&lt;br /&gt;
   contents 65536  // CONTENTS_PLAYERCLIP&lt;br /&gt;
   mins &amp;quot;-40 -1 -20&amp;quot;&lt;br /&gt;
   maxs &amp;quot;40 1 10&amp;quot;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Example 2: Fueldump and Spawning at the Command Post===&lt;br /&gt;
&amp;lt;pre&amp;gt;create&lt;br /&gt;
{&lt;br /&gt;
   scriptName &amp;quot;fueldumphq_obj&amp;quot;&lt;br /&gt;
   classname &amp;quot;team_WOLF_objective&amp;quot;&lt;br /&gt;
   targetname &amp;quot;fueldumphq_obj&amp;quot;&lt;br /&gt;
   origin &amp;quot;-10853 -2036 6&amp;quot;   // z = CC_FILTER_ALLIES(2) | CC_FILTER_SPAWNS(4)&lt;br /&gt;
   spawnflags 2   // TEAM_ALLIES(2)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
create&lt;br /&gt;
{&lt;br /&gt;
   scriptName &amp;quot;fueldumphq_spawn1&amp;quot;&lt;br /&gt;
   classname &amp;quot;team_CTF_bluespawn&amp;quot;&lt;br /&gt;
   targetname &amp;quot;fueldumphq_spawn&amp;quot;&lt;br /&gt;
   origin &amp;quot;11072 -2448 512&amp;quot;&lt;br /&gt;
   spawnflags 2   // TEAM_ALLIES&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
create&lt;br /&gt;
{&lt;br /&gt;
   scriptName &amp;quot;fueldumphq_spawn2&amp;quot;&lt;br /&gt;
   classname &amp;quot;team_CTF_bluespawn&amp;quot;&lt;br /&gt;
   targetname &amp;quot;fueldumphq_spawn&amp;quot;&lt;br /&gt;
   origin &amp;quot;-10995 -2448 512&amp;quot;&lt;br /&gt;
   spawnflags 2   // TEAM_ALLIES&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
create&lt;br /&gt;
{&lt;br /&gt;
   scriptName &amp;quot;fueldumphq_spawn3&amp;quot;&lt;br /&gt;
   classname &amp;quot;team_CTF_bluespawn&amp;quot;&lt;br /&gt;
   targetname &amp;quot;fueldumphq_spawn&amp;quot;&lt;br /&gt;
   origin &amp;quot;-10918 -2448 512&amp;quot;&lt;br /&gt;
   spawnflags 2   // TEAM_ALLIES&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
create&lt;br /&gt;
{&lt;br /&gt;
   scriptName &amp;quot;fueldumphq_spawn4&amp;quot;&lt;br /&gt;
   classname &amp;quot;team_CTF_bluespawn&amp;quot;&lt;br /&gt;
   targetname &amp;quot;fueldumphq_spawn&amp;quot;&lt;br /&gt;
   origin &amp;quot;-10841 -2448 512&amp;quot;&lt;br /&gt;
   spawnflags 2   // TEAM_ALLIES&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
create&lt;br /&gt;
{&lt;br /&gt;
   scriptName &amp;quot;fueldumphq_spawn5&amp;quot;&lt;br /&gt;
   classname &amp;quot;team_CTF_bluespawn&amp;quot;&lt;br /&gt;
   targetname &amp;quot;fueldumphq_spawn&amp;quot;&lt;br /&gt;
   origin &amp;quot;11072 -2288 512&amp;quot;&lt;br /&gt;
   spawnflags 2   // TEAM_ALLIES&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
create&lt;br /&gt;
{&lt;br /&gt;
   scriptName &amp;quot;fueldumphq_spawn6&amp;quot;&lt;br /&gt;
   classname &amp;quot;team_CTF_bluespawn&amp;quot;&lt;br /&gt;
   targetname &amp;quot;fueldumphq_spawn&amp;quot;&lt;br /&gt;
   origin &amp;quot;-10995 -2288 512&amp;quot;&lt;br /&gt;
   spawnflags 2   // TEAM_ALLIES&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
create&lt;br /&gt;
{      &lt;br /&gt;
   scriptName &amp;quot;fueldumphq_spawn7&amp;quot;      &lt;br /&gt;
   classname &amp;quot;team_CTF_bluespawn&amp;quot;&lt;br /&gt;
   targetname &amp;quot;fueldumphq_spawn&amp;quot;&lt;br /&gt;
   origin &amp;quot;-10918 -2288 512&amp;quot;&lt;br /&gt;
   spawnflags 2   // TEAM_ALLIES&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
create&lt;br /&gt;
{&lt;br /&gt;
   scriptName &amp;quot;fueldumphq_spawn8&amp;quot;&lt;br /&gt;
   classname &amp;quot;team_CTF_bluespawn&amp;quot;&lt;br /&gt;
   targetname &amp;quot;fueldumphq_spawn&amp;quot;&lt;br /&gt;
   origin &amp;quot;-10841 -2288 512&amp;quot;&lt;br /&gt;
   spawnflags 2   // TEAM_ALLIES&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hopefully you&#039;ll be able to understand what each of those flags are doing. If you can&#039;t figure it out, see if you can figure it out from the [http://games.theteamkillers.net/rtcw/ent/ entities.def] file (from [http://user.tninet.se/~fzo823r/], this is not the original ET entities.def file but everything in it should work - it contains new things that weren&#039;t included with the stock def), or come and bug the [[ETPro]] team (|Rain|, [av]bani, zinx, fretn, s2ikkyo) on [irc://irc.freenode.net/etpro irc.freenode.net, #etpro].&lt;br /&gt;
&lt;br /&gt;
===Contents Flags===&lt;br /&gt;
* SOLID 1&amp;lt;br&amp;gt;&lt;br /&gt;
* LIGHTGRID 4&amp;amp;bull;&amp;lt;br&amp;gt;&lt;br /&gt;
* LAVA 8&amp;lt;br&amp;gt;&lt;br /&gt;
* SLIME 16&amp;lt;br&amp;gt;&lt;br /&gt;
* WATER 32&amp;lt;br&amp;gt;&lt;br /&gt;
* FOG 64&amp;lt;br&amp;gt;&lt;br /&gt;
* MISSILECLIP 128&amp;lt;br&amp;gt;&lt;br /&gt;
* ITEM 256&amp;lt;br&amp;gt;&lt;br /&gt;
* MOVER 16384&amp;lt;br&amp;gt;&lt;br /&gt;
* AREAPORTAL 32768&amp;amp;bull;&amp;lt;br&amp;gt;&lt;br /&gt;
* PLAYERCLIP 65536&amp;lt;br&amp;gt;&lt;br /&gt;
* MONSTERCLIP 131072&amp;amp;deg;&amp;lt;br&amp;gt;&lt;br /&gt;
* TELEPORTER 262144&amp;lt;br&amp;gt;&lt;br /&gt;
* JUMPPAD 524288&amp;lt;br&amp;gt;&lt;br /&gt;
* CLUSTERPORTAL 1048576&amp;amp;bull;&amp;lt;br&amp;gt;&lt;br /&gt;
* DONOTENTER 2097152&amp;amp;deg;&amp;lt;br&amp;gt;&lt;br /&gt;
* DONOTENTER_LARGE 4194304&amp;amp;deg;&amp;lt;br&amp;gt;&lt;br /&gt;
* ORIGIN 16777216&amp;lt;br&amp;gt;&lt;br /&gt;
* BODY 33554432&amp;amp;bull;&amp;lt;br&amp;gt;&lt;br /&gt;
* CORPSE 67108864&amp;amp;bull;&amp;lt;br&amp;gt;&lt;br /&gt;
* DETAIL 134217728&amp;amp;bull;&amp;lt;br&amp;gt;&lt;br /&gt;
* STRUCTURAL 268435456&amp;amp;bull;&amp;lt;br&amp;gt;&lt;br /&gt;
* TRANSLUCENT 536870912&amp;lt;br&amp;gt;&lt;br /&gt;
* TRIGGER 1073741824&amp;lt;br&amp;gt;&lt;br /&gt;
* NODROP 2147483648&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Not all of these surfaceflags will work, but the ones you will want to use should work. If you&#039;ve tested something and it doesn&#039;t work properly, send an email to dukeku AT theteamkillers DOT net and I&#039;ll fix it here.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;deg; These, as far as I know, are bot only commands - they will have no effect on other players.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;bull; These are flags that should not be used in a script, they&#039;re either reserved for strict-in game usage that doesn&#039;t relate to something that you would do in a script such as this, or are reserved for entities that are compiled into the map and have absolutely no use in game.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Originally posted in the [http://bani.anime.net/banimod/forums/ ETPro forums] by [http://bani.anime.net/banimod/forums/profile.php?mode=viewprofile&amp;amp;u=226 duke&#039;ku].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Scripting Examples by [http://bani.anime.net/banimod/forums/profile.php?mode=viewprofile&amp;amp;u=800 Rain]==&lt;br /&gt;
Additionally, players may modify keys on existing entities with the set command.&lt;br /&gt;
===Example 1: Oasis Axis Garrison spawn marker fix===&lt;br /&gt;
Here are a couple of examples from the oasis map script (etpro/maps/oasis.script):&lt;br /&gt;
&amp;lt;pre&amp;gt;axis_garrison_wobj&lt;br /&gt;
{&lt;br /&gt;
        spawn&lt;br /&gt;
        {&lt;br /&gt;
                set&lt;br /&gt;
                {&lt;br /&gt;
                        origin &amp;quot;7089 4852 -415&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
This changes the position of the spawn marker for the Axis garrison to (7089, 4852, -415). (This was done to correct player spawn location after setautospawn usage was fixed.)&lt;br /&gt;
===Example 2: Oasis caves water fix===&lt;br /&gt;
Here&#039;s another example:&lt;br /&gt;
&amp;lt;pre&amp;gt;water_tunnel&lt;br /&gt;
{&lt;br /&gt;
        spawn&lt;br /&gt;
        {&lt;br /&gt;
                // rain - these are put into the world as CONTENTS_SOLID,&lt;br /&gt;
                // which is a Bad Thing if WolfReviveBBox gets called&lt;br /&gt;
                // while we&#039;re in the water&lt;br /&gt;
                wait 100&lt;br /&gt;
                set&lt;br /&gt;
                {&lt;br /&gt;
                        contents 32 // CONTENTS_WATER&lt;br /&gt;
                        clipmask 32 // CONTENTS_WATER&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
        [...]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
As described by the comments, this fixes the problem that sometimes caused players to be pushed around uncontrollably while underwater in the tunnel.&lt;br /&gt;
&lt;br /&gt;
Both create and set recognize some keys that can&#039;t normally be used while mapping. Normally, most of these are computed automatically (often at map compile time); however, there are some cases when the compiled value is unusable, and there are some cases where you might want to set these values when spawning a new entity.&lt;br /&gt;
&lt;br /&gt;
===Additional supported keys===&lt;br /&gt;
The additional keys supported are:&lt;br /&gt;
&amp;lt;table align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Key&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Description&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;mins&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;A point describing the location of the lower corner of the bounding box.  (&#039;&#039;ent-&amp;amp;gt;r.mins&#039;&#039;)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;maxs&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;A point describing the location of the upper corner of the bounding box.  (&#039;&#039;ent-&amp;amp;gt;r.maxs&#039;&#039;)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;contents&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Contents flags - description above (&#039;&#039;ent-&amp;amp;gt;r.contents&#039;&#039;)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;svflags&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Server flags (&#039;&#039;ent-&amp;amp;gt;r.svFlags&#039;&#039;)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;clipmask&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Brush content types to collide with. (&#039;&#039;ent-&amp;amp;gt;clipmask&#039;&#039;)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;count2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;entity-specific (&#039;&#039;ent-&amp;amp;gt;count2&#039;&#039;)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;eflags&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Entity flags (&#039;&#039;ent-&amp;amp;gt;s.eFlags&#039;&#039;)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;pos_trType&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Position trajectory type (&#039;&#039;ent-&amp;amp;gt;s.pos.trType&#039;&#039;)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;pos_trDelta&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Position trajectory delta &amp;amp;#916; (&#039;&#039;ent-&amp;amp;gt;s.pos.trType&#039;&#039;)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;apos_trType&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Angle trajectory type (&#039;&#039;ent-&amp;amp;gt;s.apos.trType&#039;&#039;)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;pos_trDelta&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Angle trajectory delta &amp;amp;#916; (&#039;&#039;ent-&amp;amp;gt;s.apos.trType&#039;&#039;)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;classname_nospawn&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Changes the class name, but doesn&#039;t re-spawn the entity. (&#039;&#039;ent-&amp;amp;gt;classname&#039;&#039;)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;customaxisimage&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Custom command map image for the Axis team&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;customalliesimage&amp;lt;br&amp;gt;customalliedimage&amp;lt;/td&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;Custom command map image for the Allied team&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;allowteams&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Teams allowed to use an entity (&#039;&#039;ent-&amp;amp;gt;allowteams&#039;&#039;)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(You may wish to refer to the ET SDK for additional information.)&lt;br /&gt;
===The func_fakebrush entity===&lt;br /&gt;
Finally, ET Pro offers the func_fakebrush entity (also available by ORing EF_FAKEBMODEL (65536 or 0x10000) to eFlags), which allows the limited ability to spawn brush entities. The fake model must be a hexahedron, defined by mins and maxs, and will not work for all brush entity types.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Originally posted in the [http://bani.anime.net/banimod/forums/ ETPro forums] by [http://bani.anime.net/banimod/forums/profile.php?mode=viewprofile&amp;amp;u=800 Rain].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Scripting Examples by [http://bani.anime.net/banimod/forums/profile.php?mode=viewprofile&amp;amp;u=1448 SiliconSlick]==&lt;br /&gt;
===Example 1: Additional Axis spawn in the trainyard tower on Railgun===&lt;br /&gt;
[http://bani.anime.net/banimod/forums/profile.php?mode=viewprofile&amp;amp;u=1448 SiliconSlick] made a [http://en.wikipedia.org/wiki/Diff diff] for the Railgun map script to provide the axis with an additional spawn point in the trainyard tower.&lt;br /&gt;
&amp;lt;pre&amp;gt;--- railgun.script.etpro.orig   Wed Mar 31 20:01:18 2004&lt;br /&gt;
+++ railgun.script      Mon Aug 23 10:11:08 2004&lt;br /&gt;
@@ -6,6 +6,83 @@&lt;br /&gt;
 {&lt;br /&gt;
        spawn&lt;br /&gt;
        {&lt;br /&gt;
+               // SS - new spawns for Axis&lt;br /&gt;
+               create&lt;br /&gt;
+               {&lt;br /&gt;
+                       targetname &amp;quot;axistowermarker&amp;quot;&lt;br /&gt;
+                       scriptname &amp;quot;axistowermarker&amp;quot;&lt;br /&gt;
+                       spawnflags 3&lt;br /&gt;
+                       description &amp;quot;Axis Tower&amp;quot;&lt;br /&gt;
+                       origin &amp;quot;2050 5100 625&amp;quot;&lt;br /&gt;
+                       classname &amp;quot;team_WOLF_objective&amp;quot;&lt;br /&gt;
+               }&lt;br /&gt;
+&lt;br /&gt;
+               create&lt;br /&gt;
+               {&lt;br /&gt;
+                       classname &amp;quot;team_CTF_redspawn&amp;quot;&lt;br /&gt;
+                       scriptname &amp;quot;redspawn_00&amp;quot;&lt;br /&gt;
+                       spawnflags 3&lt;br /&gt;
+                       origin &amp;quot;2000 5175 625&amp;quot;&lt;br /&gt;
+                       angle &amp;quot;-45&amp;quot;&lt;br /&gt;
+                       mins &amp;quot;-30 -30 -30&amp;quot;&lt;br /&gt;
+                       maxs &amp;quot;30 30 30&amp;quot;&lt;br /&gt;
+               }&lt;br /&gt;
+&lt;br /&gt;
+               create&lt;br /&gt;
+               {&lt;br /&gt;
+                       classname &amp;quot;team_CTF_redspawn&amp;quot;&lt;br /&gt;
+                       scriptname &amp;quot;redspawn_00&amp;quot;&lt;br /&gt;
+                       spawnflags 3&lt;br /&gt;
+                       origin &amp;quot;2000 5175 360&amp;quot;&lt;br /&gt;
+                       angle &amp;quot;-45&amp;quot;&lt;br /&gt;
+                       mins &amp;quot;-30 -30 -30&amp;quot;&lt;br /&gt;
+                       maxs &amp;quot;30 30 30&amp;quot;&lt;br /&gt;
+               }&lt;br /&gt;
+&lt;br /&gt;
+               create&lt;br /&gt;
+               {&lt;br /&gt;
+                       classname &amp;quot;team_CTF_redspawn&amp;quot;&lt;br /&gt;
+                       scriptname &amp;quot;redspawn_00&amp;quot;&lt;br /&gt;
+                       spawnflags 3&lt;br /&gt;
+                       origin &amp;quot;2100 5175 625&amp;quot;&lt;br /&gt;
+                       angle &amp;quot;-135&amp;quot;&lt;br /&gt;
+                       mins &amp;quot;-30 -30 -30&amp;quot;&lt;br /&gt;
+                       maxs &amp;quot;30 30 30&amp;quot;&lt;br /&gt;
+               }&lt;br /&gt;
+&lt;br /&gt;
+               create&lt;br /&gt;
+               {&lt;br /&gt;
+                       classname &amp;quot;team_CTF_redspawn&amp;quot;&lt;br /&gt;
+                       scriptname &amp;quot;redspawn_00&amp;quot;&lt;br /&gt;
+                       spawnflags 3&lt;br /&gt;
+                       origin &amp;quot;2100 5050 625&amp;quot;&lt;br /&gt;
+                       angle &amp;quot;135&amp;quot;&lt;br /&gt;
+                       mins &amp;quot;-30 -30 -30&amp;quot;&lt;br /&gt;
+                       maxs &amp;quot;30 30 30&amp;quot;&lt;br /&gt;
+               }&lt;br /&gt;
+&lt;br /&gt;
+               create&lt;br /&gt;
+               {&lt;br /&gt;
+                       classname &amp;quot;team_CTF_redspawn&amp;quot;&lt;br /&gt;
+                       scriptname &amp;quot;redspawn_00&amp;quot;&lt;br /&gt;
+                       spawnflags 3&lt;br /&gt;
+                       origin &amp;quot;2100 5050 360&amp;quot;&lt;br /&gt;
+                       angle &amp;quot;135&amp;quot;&lt;br /&gt;
+                       mins &amp;quot;-30 -30 -30&amp;quot;&lt;br /&gt;
+                       maxs &amp;quot;30 30 30&amp;quot;&lt;br /&gt;
+               }&lt;br /&gt;
+&lt;br /&gt;
+               create&lt;br /&gt;
+               {&lt;br /&gt;
+                       classname &amp;quot;team_CTF_redspawn&amp;quot;&lt;br /&gt;
+                       scriptname &amp;quot;redspawn_00&amp;quot;&lt;br /&gt;
+                       spawnflags 3&lt;br /&gt;
+                       origin &amp;quot;2000 5050 625&amp;quot;&lt;br /&gt;
+                       angle &amp;quot;45&amp;quot;&lt;br /&gt;
+                       mins &amp;quot;-30 -30 -30&amp;quot;&lt;br /&gt;
+                       maxs &amp;quot;30 30 30&amp;quot;&lt;br /&gt;
+               }&lt;br /&gt;
+&lt;br /&gt;
                //bani - bug fixes&lt;br /&gt;
                create&lt;br /&gt;
                { &amp;lt;/pre&amp;gt;&lt;br /&gt;
===Example 2: Depot Yard capture for Axis when Tug loaded on Railgun===&lt;br /&gt;
This is another diff that makes it so that when the first tug gets loaded with ammo, the Depot Yard spawn point gets captured permanently for the axis.&lt;br /&gt;
&amp;lt;pre&amp;gt;--- railgun.script.etpro.orig   Wed Mar 31 20:01:18 2004&lt;br /&gt;
+++ railgun.script      Mon Aug 23 10:11:08 2004 &lt;br /&gt;
@@ -3088,6 +3165,8 @@&lt;br /&gt;
                                                                                                                                                             &lt;br /&gt;
                wm_set_main_objective   2 0&lt;br /&gt;
                wm_set_main_objective   2 1&lt;br /&gt;
+&lt;br /&gt;
+               trigger depotflag axis_capture_forgood  // SS - depot now permanently axis&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
                                                                                                                                                             &lt;br /&gt;
@@ -6022,18 +6101,35 @@&lt;br /&gt;
                wait 200&lt;br /&gt;
                setstate capturespawn invisible&lt;br /&gt;
                accum 0 set 0&lt;br /&gt;
+               accum 1 set 0  // SS - nobody had flag last&lt;br /&gt;
        }&lt;br /&gt;
                                                                                                                                                             &lt;br /&gt;
        trigger axis_capture&lt;br /&gt;
        {&lt;br /&gt;
                trigger game_manager depotflagred&lt;br /&gt;
                trigger depotflag setaxis&lt;br /&gt;
+               accum 1 set 2  // SS - axis had flag last&lt;br /&gt;
+       }&lt;br /&gt;
+&lt;br /&gt;
+&lt;br /&gt;
+       // SS - give depot yard to axis permanently&lt;br /&gt;
+       trigger axis_capture_forgood&lt;br /&gt;
+       {&lt;br /&gt;
+               trigger game_manager depotflagred&lt;br /&gt;
+               trigger depotflag setaxis&lt;br /&gt;
+&lt;br /&gt;
+               alertentity depotspawn  // wake it up&lt;br /&gt;
+               setstate depotflag invisible  // remove flag&lt;br /&gt;
+               accum 1 abort_if_less_than 2  // should be done if allies or nobody had it&lt;br /&gt;
+               alertentity depotspawn  // switch to axis&lt;br /&gt;
+               wm_announce &amp;quot;Axis have permanently captured the Depot Yard!&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        trigger allied_capture&lt;br /&gt;
        {&lt;br /&gt;
                trigger game_manager depotflagblue&lt;br /&gt;
                trigger depotflag setallies&lt;br /&gt;
+               accum 1 set 1  // SS - allied had flag last&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        trigger setaxis &amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Originally posted in the [http://bani.anime.net/banimod/forums/ ETPro forums] and the [http://www.nd80usa.net/modules.php?name=Forums&amp;amp;file=viewtopic&amp;amp;t=11941&amp;amp;start=49 ND80 forums] by [http://bani.anime.net/banimod/forums/profile.php?mode=viewprofile&amp;amp;u=1448 SiliconSlick].&#039;&#039;&#039;&lt;br /&gt;
==Unresolved issues==&lt;br /&gt;
===[http://bani.anime.net/banimod/forums/profile.php?mode=viewprofile&amp;amp;u=1859 Ragnar_40k]&#039;s destroyable team door on Radar===&lt;br /&gt;
I played around with the ETPro scripts and tried to make the axis team door next to the main gate satchable.&lt;br /&gt;
As first step I simply copied over the code for the battery backdoor and only changed the origin-key.&lt;br /&gt;
When I start the map I can throw a satchel next to the team door and get 7.5XP when I blast it. But I get no message and the teamdoor doesnt disapper.&lt;br /&gt;
It seems that the trigger &amp;quot;death&amp;quot; for &amp;quot;backdoor_obj&amp;quot; isn&#039;t called.&lt;br /&gt;
Can you say what is wrong?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
game_manager&lt;br /&gt;
{&lt;br /&gt;
   spawn&lt;br /&gt;
   {&lt;br /&gt;
      create&lt;br /&gt;
      {&lt;br /&gt;
         scriptName &amp;quot;backdoor&amp;quot;&lt;br /&gt;
         classname &amp;quot;func_explosive&amp;quot;&lt;br /&gt;
         targetname &amp;quot;backdoor&amp;quot;&lt;br /&gt;
         origin &amp;quot;-1518 16 1406&amp;quot;&lt;br /&gt;
         mins &amp;quot;-63 -10 0&amp;quot;&lt;br /&gt;
         maxs &amp;quot;63 10 128&amp;quot;&lt;br /&gt;
         spawnflags 1   // AXIS_OBJECTIVE(1)&lt;br /&gt;
         eflags 65536   // EF_FAKEBMODEL&lt;br /&gt;
         svflags 1   // SVF_NOCLIENT&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      create&lt;br /&gt;
      {&lt;br /&gt;
         scriptName &amp;quot;backdoor_obj&amp;quot;&lt;br /&gt;
         classname &amp;quot;trigger_objective_info&amp;quot;&lt;br /&gt;
         targetname &amp;quot;backdoor_obj&amp;quot;&lt;br /&gt;
         target &amp;quot;backdoor&amp;quot;&lt;br /&gt;
         origin &amp;quot;-1518 16 1406&amp;quot;&lt;br /&gt;
         mins &amp;quot;-95 -85 0&amp;quot;&lt;br /&gt;
         maxs &amp;quot;95 85 128&amp;quot;&lt;br /&gt;
         spawnflags 17   // AXIS_OBJECTIVE(1) | CUSTOMIMAGE&lt;br /&gt;
         track &amp;quot;the Back Door&amp;quot;&lt;br /&gt;
         shortname &amp;quot;Back Door&amp;quot;&lt;br /&gt;
         customaxisimage &amp;quot;gfx/limbo/cm_radar_maindoor&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
               .&lt;br /&gt;
               .&lt;br /&gt;
               .&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
backdoor&lt;br /&gt;
{&lt;br /&gt;
   spawn&lt;br /&gt;
   {&lt;br /&gt;
      wait 50&lt;br /&gt;
      constructible_class 2&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
backdoor_obj&lt;br /&gt;
{&lt;br /&gt;
   death&lt;br /&gt;
   {&lt;br /&gt;
      wm_announce &amp;quot;Allied team has destroyed the Axis Team Door!&amp;quot;&lt;br /&gt;
      trigger teamonlydoor1 hide&lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
teamonlydoor1&lt;br /&gt;
{&lt;br /&gt;
   trigger hide&lt;br /&gt;
   {&lt;br /&gt;
      remove&lt;br /&gt;
      // setstate teamonlydoor1 invisible&lt;br /&gt;
   }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
The trigger backdoor_obj-&amp;gt;death isn&#039;t called (I don&#039;t see the text from the wm_announce) . But the func_explosive &amp;quot;backdoor&amp;quot; I created is deystroyed (I get the XP for it).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Originally posted in the [http://bani.anime.net/banimod/forums/ ETPro forums] by [http://bani.anime.net/banimod/forums/profile.php?mode=viewprofile&amp;amp;u=1859 Ragnar_40k].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Possible Solution 1 ====&lt;br /&gt;
Try placing the death{} block in the &amp;quot;backdoor&amp;quot; (func_explosive) script block instead.&lt;br /&gt;
--[[User:WeblionX|WeblionX]] 13:35, 14 February 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
===[http://bani.anime.net/banimod/forums/profile.php?mode=viewprofile&amp;amp;u=2786 MoB Seany]&#039;s Health and Ammo Cabinets===&lt;br /&gt;
Ok, now I want to get it to show up on the command map&lt;br /&gt;
I already have&lt;br /&gt;
&amp;lt;pre&amp;gt;game_manager&lt;br /&gt;
{&lt;br /&gt;
spawn&lt;br /&gt;
            {&lt;br /&gt;
create&lt;br /&gt;
      {&lt;br /&gt;
        targetname &amp;quot;ammo&amp;quot;&lt;br /&gt;
        scriptname &amp;quot;ammo&amp;quot;&lt;br /&gt;
        origin &amp;quot;-1373 -1100 192&amp;quot;&lt;br /&gt;
        classname &amp;quot;misc_cabinet_supply&amp;quot;&lt;br /&gt;
        angle &amp;quot;270&amp;quot;&lt;br /&gt;
        mins &amp;quot;-45 -45 -25&amp;quot;&lt;br /&gt;
        maxs &amp;quot;45 45 25&amp;quot;&lt;br /&gt;
        ammototal &amp;quot;100&amp;quot;&lt;br /&gt;
        modelscale &amp;quot;1&amp;quot;&lt;br /&gt;
        contents &amp;quot;1&amp;quot;&lt;br /&gt;
        clipmask &amp;quot;1&amp;quot;&lt;br /&gt;
        model &amp;quot;models/mapobjects/supplystands/stand_ammo.md3&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
create&lt;br /&gt;
      {&lt;br /&gt;
        target &amp;quot;ammo&amp;quot;&lt;br /&gt;
        ammototal &amp;quot;40&amp;quot;&lt;br /&gt;
        ammorate &amp;quot;1&amp;quot;&lt;br /&gt;
        origin &amp;quot;-1373 -1100 192&amp;quot;&lt;br /&gt;
        classname &amp;quot;trigger_ammo&amp;quot;&lt;br /&gt;
        targetname &amp;quot;ammoarea&amp;quot;&lt;br /&gt;
        scriptname &amp;quot;ammoarea&amp;quot;&lt;br /&gt;
        modelscale &amp;quot;1&amp;quot;&lt;br /&gt;
        contents &amp;quot;1&amp;quot;&lt;br /&gt;
        mins &amp;quot;-45 -45 -25&amp;quot;&lt;br /&gt;
        maxs &amp;quot;45 45 25&amp;quot;&lt;br /&gt;
        clipmask &amp;quot;1&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
create&lt;br /&gt;
      {&lt;br /&gt;
        targetname &amp;quot;health&amp;quot;&lt;br /&gt;
        scriptname &amp;quot;health&amp;quot;&lt;br /&gt;
        origin &amp;quot;-1488 -1175 192&amp;quot;&lt;br /&gt;
        classname &amp;quot;misc_cabinet_health&amp;quot;&lt;br /&gt;
        angle &amp;quot;360&amp;quot;&lt;br /&gt;
        mins &amp;quot;-45 -45 -25&amp;quot;&lt;br /&gt;
        maxs &amp;quot;45 45 25&amp;quot;&lt;br /&gt;
        modelscale &amp;quot;1&amp;quot;&lt;br /&gt;
        contents &amp;quot;1&amp;quot;&lt;br /&gt;
        clipmask &amp;quot;1&amp;quot;&lt;br /&gt;
        model &amp;quot;models/mapobjects/supplystands/stand_ammo.md3&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
create&lt;br /&gt;
      {&lt;br /&gt;
        target &amp;quot;health&amp;quot;&lt;br /&gt;
        scriptname &amp;quot;healtharea&amp;quot;&lt;br /&gt;
        targetname &amp;quot;healtharea&amp;quot;&lt;br /&gt;
        classname &amp;quot;trigger_heal&amp;quot;&lt;br /&gt;
        origin &amp;quot;-1488 -1175 192&amp;quot;&lt;br /&gt;
        healtotal &amp;quot;400&amp;quot;&lt;br /&gt;
        healrate &amp;quot;10&amp;quot;&lt;br /&gt;
        modelscale &amp;quot;1&amp;quot;&lt;br /&gt;
        contents &amp;quot;1&amp;quot;&lt;br /&gt;
        mins &amp;quot;-45 -45-25&amp;quot;&lt;br /&gt;
        maxs &amp;quot;45 45 25&amp;quot;&lt;br /&gt;
        clipmask &amp;quot;1&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
create&lt;br /&gt;
      {&lt;br /&gt;
        classname &amp;quot;trigger_objective_info&amp;quot;&lt;br /&gt;
        target &amp;quot;help_marker_toi&amp;quot;&lt;br /&gt;
        scriptname &amp;quot;ammo_info_toi&amp;quot;&lt;br /&gt;
        track &amp;quot;Health and Ammo Cabinets&amp;quot;&lt;br /&gt;
        targetname &amp;quot;ammo_info_toi&amp;quot;&lt;br /&gt;
        shortname &amp;quot;Health and Ammo Cabinets&amp;quot;&lt;br /&gt;
        spawnflags &amp;quot;is_healthammocabinet&amp;quot;&lt;br /&gt;
        customimage &amp;quot;gfx/limbo/cm_healthammo&amp;quot;&lt;br /&gt;
        origin &amp;quot;-1352 -1179 256&amp;quot;&lt;br /&gt;
        modelscale &amp;quot;1&amp;quot;&lt;br /&gt;
        contents &amp;quot;1&amp;quot;&lt;br /&gt;
        mins &amp;quot;-45 -45-25&amp;quot;&lt;br /&gt;
        maxs &amp;quot;45 45 25&amp;quot;&lt;br /&gt;
        clipmask &amp;quot;1&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
      }&lt;br /&gt;
create&lt;br /&gt;
      {&lt;br /&gt;
        classname &amp;quot;misc_commandmap_marker&amp;quot;&lt;br /&gt;
        scriptname &amp;quot;help_marker_toi&amp;quot;&lt;br /&gt;
        targetname &amp;quot;help_marker_toi&amp;quot;&lt;br /&gt;
        contents &amp;quot;1&amp;quot;&lt;br /&gt;
        clipmask &amp;quot;1&amp;quot;&lt;br /&gt;
        origin &amp;quot;-1488 -1175 192&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
                 }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
Its works and has a &amp;quot;You are near Health and Ammo&amp;quot; message, but what do I need to do to get it to show up ont he command map?&lt;br /&gt;
I did have script_mover parts as well before I removed them:&lt;br /&gt;
&amp;lt;pre&amp;gt;create&lt;br /&gt;
      {&lt;br /&gt;
     targetname &amp;quot;ammo_clip&amp;quot;&lt;br /&gt;
     scriptname &amp;quot;ammo_clip&amp;quot;&lt;br /&gt;
     classname &amp;quot;script_mover&amp;quot;&lt;br /&gt;
     spawnflags &amp;quot;2&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
create&lt;br /&gt;
      {&lt;br /&gt;
     targetname &amp;quot;health_clip&amp;quot;&lt;br /&gt;
     scriptname &amp;quot;health_clip&amp;quot;&lt;br /&gt;
     classname &amp;quot;script_mover&amp;quot;&lt;br /&gt;
         spawnflags &amp;quot;2&amp;quot;&lt;br /&gt;
                           }&amp;lt;/pre&amp;gt;&lt;br /&gt;
But, no matter what properties i removed, it still said a model was required for script_mover. Is a script_mover class really that important? And if so, what do I need to do to fix it? If not, then what must be done for it to show up on the command map? Thanks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Originally posted in the [http://bani.anime.net/banimod/forums/ ETPro forums] by [http://bani.anime.net/banimod/forums/profile.php?mode=viewprofile&amp;amp;u=2786 MoB Seany].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Possible Solution 1 ====&lt;br /&gt;
Try using a misc_commandmap_marker targeted by the TOI.&lt;br /&gt;
--[[User:WeblionX|WeblionX]] 13:35, 14 February 2007 (PST)&lt;br /&gt;
[[Category:ETPro]][[Category:ETPro:Mapping]]&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=Mapscripts&amp;diff=2669</id>
		<title>Mapscripts</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=Mapscripts&amp;diff=2669"/>
		<updated>2007-02-14T21:19:14Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Map scripting]]&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=User:WeblionX&amp;diff=2667</id>
		<title>User:WeblionX</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=User:WeblionX&amp;diff=2667"/>
		<updated>2007-02-14T18:31:05Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;overflow:hidden;width:100%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:20em;float:left;border-right:1px dotted #555;margin:1em;font-size:1.5em&amp;quot;&amp;gt;&lt;br /&gt;
[[http://weblionx.ettw.net/ WeblionX]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.surfacegroup.org/ Surface: The Sequel]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://weblionx.deviantart.com/ DA]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.aetheraudio.info/ Æther Audio]]&lt;br /&gt;
&amp;lt;div title=&amp;quot;-- Server Currently Unavailable --&amp;quot; style=&amp;quot;border:1px dashed #229;margin-left:.5em;margin-right:.5em;padding-left:.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[http://www.weblionx.org]&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[Tseaby]&amp;lt;br&amp;gt;&lt;br /&gt;
[WLXAM]&amp;lt;br&amp;gt;&lt;br /&gt;
[WLXTV]&amp;lt;br&amp;gt;&lt;br /&gt;
[TCOTSE]&amp;lt;br&amp;gt;&lt;br /&gt;
[WAE]&amp;lt;br&amp;gt;&lt;br /&gt;
[weblionx.no-ip.org]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:20em;float:left;border-left:1px dotted #555;margin:1em;padding-left:.5em;font-size:1.5em&amp;quot;&amp;gt;&lt;br /&gt;
[[irc://irc.quakenet.org:6667/wwgn]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[irc://irc.freenode.net:6667/etpro]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.homestarrunner.com/500cheats.html 500 Cheats]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.inkscape.org/download.php Vector Graphics Editing]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.gimp.org Raster Graphics Editing]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.quotationspage.com/quotes/Douglas_Adams Wisdom]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.shareaza.com OpenSource P2P]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://scoop.opennic.unrated.net/?op=special;page=faq#what OpenNIC DNS System]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[irc://irc.freenode.net:6667/mullet]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.wolfensteinx.com/surface/ Surface]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
http://www.shitloadof.info/index/wilfi.png&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=Lua:IPC&amp;diff=2666</id>
		<title>Lua:IPC</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=Lua:IPC&amp;diff=2666"/>
		<updated>2007-02-14T18:22:39Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: Added Category:Lua&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Lua: IPC - Communication between Scripts =&lt;br /&gt;
If you have several scripts, which access the same data, you can have one script, which manages this data and one or more scripts reading (or writing) this data. &lt;br /&gt;
&lt;br /&gt;
For communication between these scripts, use the [[Lua_Mod_API#modules|et.IPCSend()]] and [[Lua_Mod_API#miscellaneous_2|et_IPCReceive( )]] functions. You cannot receive some data and send it back in the same (server) frame. These example scripts illustrate how to pass requests and the answers back and forth.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;ipcdemo-admin.lua&#039;&#039;&#039; script must be loaded first (i.e. earlier in the [[Lua_Mod_API#lua_modules|lua_modules]] cvar) otherwise the &#039;&#039;&#039;ipcdemo-cmd.lua&#039;&#039;&#039; cannot find it.&lt;br /&gt;
&lt;br /&gt;
== ipcdemo-admin.lua ==&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#ff6060&amp;quot;&amp;gt;-- ipcdemo-admin.lua&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; IPCQueue = &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;{}&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; AdminGUIDs = &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;{&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#ff6060&amp;quot;&amp;gt;-- name,       guid,                              level&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;{&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;Vetinari&amp;amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;ABCDEF1234567890ABCDEF1234567890&amp;amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;5&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;}&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;,&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;{&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;Havelock&amp;amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;1234567890ABCDEF1234567890ABCDEF&amp;amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;3&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;}&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;}&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;function&amp;lt;/font&amp;gt; et_InitGame(levelTime, randomSeed, restart)&lt;br /&gt;
      et.RegisterModname(&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;ipcdemo-admin.lua&amp;amp;quot;&amp;lt;/font&amp;gt;)&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;end&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;function&amp;lt;/font&amp;gt; et_IPCReceive(vm, msg)&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; level&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; junk1, junk2, id = &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;string.find&amp;lt;/font&amp;gt;(msg, &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;IsAdmin:%s+(%d+)&amp;amp;quot;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; id ~= &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;nil&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
         id    = &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;tonumber&amp;lt;/font&amp;gt;(id)&lt;br /&gt;
         guid  = et.Info_ValueForKey(et.trap_GetUserinfo(id), &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;cl_guid&amp;amp;quot;&amp;lt;/font&amp;gt;)&lt;br /&gt;
         level = table.foreach(AdminGUIDs,&lt;br /&gt;
             &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;function&amp;lt;/font&amp;gt;(i, admin)&lt;br /&gt;
                 &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; admin[&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;2&amp;lt;/font&amp;gt;] == guid &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
                     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;return&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;(admin[&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;3&amp;lt;/font&amp;gt;])&lt;br /&gt;
                 &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
             &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;end&amp;lt;/font&amp;gt;&lt;br /&gt;
         )&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; level == &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;nil&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
             level = &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;0&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;table.insert&amp;lt;/font&amp;gt;(IPCQueue, &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;{&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; vm, level, id &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;}&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;end&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;function&amp;lt;/font&amp;gt; et_RunFrame(lvltime)&lt;br /&gt;
     table.foreach(IPCQueue,&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;function&amp;lt;/font&amp;gt;(i, queue)&lt;br /&gt;
             &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; ok = et.IPCSend(queue[&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt;],&lt;br /&gt;
                             &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;string.format&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;IsAdmin: %d %d&amp;amp;quot;&amp;lt;/font&amp;gt;, queue[&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;2&amp;lt;/font&amp;gt;], queue[&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;3&amp;lt;/font&amp;gt;]))&lt;br /&gt;
             &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; ok ~= &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
                 &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; mod, cksum = et.FindMod(queue[&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt;])&lt;br /&gt;
                 et.G_Print(&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;string.format&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;ipcdemo-admin: IPCSend to %s (vm: %d) failed&amp;amp;quot;&amp;lt;/font&amp;gt;, mod, queue[&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt;]))&lt;br /&gt;
             &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;end&amp;lt;/font&amp;gt;&lt;br /&gt;
     )&lt;br /&gt;
     IPCQueue = &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;{}&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;end&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ipcdemo-cmd.lua ==&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#ff6060&amp;quot;&amp;gt;-- ipcdemo-cmd.lua&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; admin_vm    = -&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; CommandQueue = &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;{}&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;function&amp;lt;/font&amp;gt; et_InitGame(levelTime, randomSeed, restart)&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; mod = &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; sig = &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; i = &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;while&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; mod ~= &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;nil&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;do&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
         mod, sig = et.FindMod(i)&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;string.find&amp;lt;/font&amp;gt;(mod, &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;^ipcdemo-admin.lua&amp;amp;quot;&amp;lt;/font&amp;gt;) == &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
             admin_vm = i&lt;br /&gt;
             mod      = &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;nil&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
         i = i + &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; admin_vm == -&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
         et.G_Print(&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;ipcdemo-cmd.lua: Could not find vm number for ipcdemo-admin.lua&amp;amp;quot;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
     et.RegisterModname(&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;ipcdemo-cmd.lua&amp;amp;quot;&amp;lt;/font&amp;gt;)&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;end&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;function&amp;lt;/font&amp;gt; et_IPCReceive(vm, msg)&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; vm == admin_vm &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; junk1,junk2,level,id = &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;string.find&amp;lt;/font&amp;gt;(msg, &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;IsAdmin:%s+(%d+)%s+(%d)&amp;amp;quot;&amp;lt;/font&amp;gt;)&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; level ~= &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;nil&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;and&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; id ~= &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;nil&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
             runAction(&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;tonumber&amp;lt;/font&amp;gt;(id), &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;tonumber&amp;lt;/font&amp;gt;(level))&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;end&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;function&amp;lt;/font&amp;gt; runAction(id, level)&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; done = table.foreach(CommandQueue,&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;function&amp;lt;/font&amp;gt;(i, queue)&lt;br /&gt;
             &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; id == queue[&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt;] &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
                 &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; queue[&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;2&amp;lt;/font&amp;gt;] &amp;amp;lt;= level &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
                     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; queue[&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;4&amp;lt;/font&amp;gt;] == &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;nil&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
                         et.trap_SendConsoleCommand(et.EXEC_INSERT, queue[&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;3&amp;lt;/font&amp;gt;])&lt;br /&gt;
                     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;else&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
                         et.trap_SendConsoleCommand(et.EXEC_INSERT,&lt;br /&gt;
                                 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;string.format&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;%s %s&amp;amp;quot;&amp;lt;/font&amp;gt;, queue[&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;3&amp;lt;/font&amp;gt;], queue[&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;4&amp;lt;/font&amp;gt;]))&lt;br /&gt;
                     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
                 &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
                 &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;return&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;(i)&lt;br /&gt;
             &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;end&amp;lt;/font&amp;gt;&lt;br /&gt;
     )&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; done ~= &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;nil&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;table.remove&amp;lt;/font&amp;gt;(CommandQueue, done)&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;end&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;function&amp;lt;/font&amp;gt; et_ClientCommand(id, command)&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; arg0 = et.trap_Argv(&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;0&amp;lt;/font&amp;gt;)&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; arg1 = et.trap_Argv(&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt;)&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; arg0 == &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;say&amp;amp;quot;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; arg1 == &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;!axis&amp;amp;quot;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
             &amp;lt;font color=&amp;quot;#ff6060&amp;quot;&amp;gt;--          id, lvl, cmd,         argument&amp;lt;/font&amp;gt;&lt;br /&gt;
             queueCommand(id, &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;4&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;forceteam r&amp;amp;quot;&amp;lt;/font&amp;gt;, id)&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;elseif&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; arg1 == &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;!allies&amp;amp;quot;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
             queueCommand(id, &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;4&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;forceteam b&amp;amp;quot;&amp;lt;/font&amp;gt;, id)&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;elseif&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; arg1 == &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;!shuffle&amp;amp;quot;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
             queueCommand(id, &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;3&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;shuffleteamsxp_norestart&amp;amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;nil&amp;lt;/font&amp;gt;)&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;return&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;0&amp;lt;/font&amp;gt;)&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;end&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;function&amp;lt;/font&amp;gt; queueCommand(id, level, cmd, argument)&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; admin_vm ~= -&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; ok = et.IPCSend(admin_vm, &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;string.format&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;IsAdmin: %d&amp;amp;quot;&amp;lt;/font&amp;gt;, id))&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; ok ~= &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
             et.G_Print(&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;ipcdemo-cmd: IPCSend to ipcdemo-admin failed&amp;amp;quot;&amp;lt;/font&amp;gt;)&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;else&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
             &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;table.insert&amp;lt;/font&amp;gt;(CommandQueue, &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;{&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; id, level, cmd, argument &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;}&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;)&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;end&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Lua]]&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=Lua:IPC&amp;diff=2656</id>
		<title>Lua:IPC</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=Lua:IPC&amp;diff=2656"/>
		<updated>2007-02-12T02:31:13Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: Mismatched parentheses!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Lua: IPC - Communication between Scripts =&lt;br /&gt;
If you have several scripts, which access the same data, you can have one script, which manages this data and one or more scripts reading (or writing) this data. &lt;br /&gt;
&lt;br /&gt;
For communication between these scripts, use the [[Lua_Mod_API#modules|et.IPCSend()]] and [[Lua_Mod_API#miscellaneous_2|et_IPCReceive( )]] functions. You cannot receive some data and send it back in the same (server) frame. These example scripts illustrate how to pass requests and the answers back and forth.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;ipcdemo-admin.lua&#039;&#039;&#039; script must be loaded first (i.e. earlier in the [[Lua_Mod_API#lua_modules|lua_modules]] cvar) otherwise the &#039;&#039;&#039;ipcdemo-cmd.lua&#039;&#039;&#039; cannot find it.&lt;br /&gt;
&lt;br /&gt;
== ipcdemo-admin.lua ==&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#ff6060&amp;quot;&amp;gt;-- ipcdemo-admin.lua&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; IPCQueue = &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;{}&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; AdminGUIDs = &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;{&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#ff6060&amp;quot;&amp;gt;-- name,       guid,                              level&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;{&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;Vetinari&amp;amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;ABCDEF1234567890ABCDEF1234567890&amp;amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;5&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;}&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;,&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;{&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;Havelock&amp;amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;1234567890ABCDEF1234567890ABCDEF&amp;amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;3&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;}&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;}&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;function&amp;lt;/font&amp;gt; et_InitGame(levelTime, randomSeed, restart)&lt;br /&gt;
      et.RegisterModname(&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;ipcdemo-admin.lua&amp;amp;quot;&amp;lt;/font&amp;gt;)&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;end&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;function&amp;lt;/font&amp;gt; et_IPCReceive(vm, msg)&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; level&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; junk1, junk2, id = &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;string.find&amp;lt;/font&amp;gt;(msg, &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;IsAdmin:%s+(%d+)&amp;amp;quot;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; id ~= &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;nil&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
         id    = &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;tonumber&amp;lt;/font&amp;gt;(id)&lt;br /&gt;
         guid  = et.Info_ValueForKey(et.trap_GetUserinfo(id), &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;cl_guid&amp;amp;quot;&amp;lt;/font&amp;gt;)&lt;br /&gt;
         level = table.foreach(AdminGUIDs,&lt;br /&gt;
             &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;function&amp;lt;/font&amp;gt;(i, admin)&lt;br /&gt;
                 &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; admin[&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;2&amp;lt;/font&amp;gt;] == guid &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
                     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;return&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;(admin[&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;3&amp;lt;/font&amp;gt;])&lt;br /&gt;
                 &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
             &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;end&amp;lt;/font&amp;gt;&lt;br /&gt;
         )&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; level == &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;nil&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
             level = &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;0&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;table.insert&amp;lt;/font&amp;gt;(IPCQueue, &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;{&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; vm, level, id &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;}&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;end&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;function&amp;lt;/font&amp;gt; et_RunFrame(lvltime)&lt;br /&gt;
     table.foreach(IPCQueue,&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;function&amp;lt;/font&amp;gt;(i, queue)&lt;br /&gt;
             &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; ok = et.IPCSend(queue[&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt;],&lt;br /&gt;
                             &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;string.format&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;IsAdmin: %d %d&amp;amp;quot;&amp;lt;/font&amp;gt;, queue[&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;2&amp;lt;/font&amp;gt;], queue[&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;3&amp;lt;/font&amp;gt;]))&lt;br /&gt;
             &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; ok ~= &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
                 &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; mod, cksum = et.FindMod(queue[&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt;])&lt;br /&gt;
                 et.G_Print(&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;string.format&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;ipcdemo-admin: IPCSend to %s (vm: %d) failed&amp;amp;quot;&amp;lt;/font&amp;gt;, mod, queue[&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt;]))&lt;br /&gt;
             &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;end&amp;lt;/font&amp;gt;&lt;br /&gt;
     )&lt;br /&gt;
     IPCQueue = &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;{}&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;end&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ipcdemo-cmd.lua ==&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#ff6060&amp;quot;&amp;gt;-- ipcdemo-cmd.lua&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; admin_vm    = -&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; CommandQueue = &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;{}&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;function&amp;lt;/font&amp;gt; et_InitGame(levelTime, randomSeed, restart)&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; mod = &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; sig = &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; i = &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;while&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; mod ~= &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;nil&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;do&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
         mod, sig = et.FindMod(i)&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;string.find&amp;lt;/font&amp;gt;(mod, &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;^ipcdemo-admin.lua&amp;amp;quot;&amp;lt;/font&amp;gt;) == &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
             admin_vm = i&lt;br /&gt;
             mod      = &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;nil&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
         i = i + &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; admin_vm == -&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
         et.G_Print(&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;ipcdemo-cmd.lua: Could not find vm number for ipcdemo-admin.lua&amp;amp;quot;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
     et.RegisterModname(&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;ipcdemo-cmd.lua&amp;amp;quot;&amp;lt;/font&amp;gt;)&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;end&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;function&amp;lt;/font&amp;gt; et_IPCReceive(vm, msg)&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; vm == admin_vm &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; junk1,junk2,level,id = &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;string.find&amp;lt;/font&amp;gt;(msg, &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;IsAdmin:%s+(%d+)%s+(%d)&amp;amp;quot;&amp;lt;/font&amp;gt;)&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; level ~= &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;nil&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;and&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; id ~= &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;nil&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
             runAction(&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;tonumber&amp;lt;/font&amp;gt;(id), &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;tonumber&amp;lt;/font&amp;gt;(level))&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;end&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;function&amp;lt;/font&amp;gt; runAction(id, level)&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; done = table.foreach(CommandQueue,&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;function&amp;lt;/font&amp;gt;(i, queue)&lt;br /&gt;
             &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; id == queue[&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt;] &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
                 &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; queue[&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;2&amp;lt;/font&amp;gt;] &amp;amp;lt;= level &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
                     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; queue[&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;4&amp;lt;/font&amp;gt;] == &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;nil&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
                         et.trap_SendConsoleCommand(et.EXEC_INSERT, queue[&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;3&amp;lt;/font&amp;gt;])&lt;br /&gt;
                     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;else&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
                         et.trap_SendConsoleCommand(et.EXEC_INSERT,&lt;br /&gt;
                                 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;string.format&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;%s %s&amp;amp;quot;&amp;lt;/font&amp;gt;, queue[&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;3&amp;lt;/font&amp;gt;], queue[&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;4&amp;lt;/font&amp;gt;]))&lt;br /&gt;
                     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
                 &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
                 &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;return&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;(i)&lt;br /&gt;
             &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;end&amp;lt;/font&amp;gt;&lt;br /&gt;
     )&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; done ~= &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;nil&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;table.remove&amp;lt;/font&amp;gt;(CommandQueue, done)&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;end&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;function&amp;lt;/font&amp;gt; et_ClientCommand(id, command)&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; arg0 = et.trap_Argv(&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;0&amp;lt;/font&amp;gt;)&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; arg1 = et.trap_Argv(&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt;)&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; arg0 == &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;say&amp;amp;quot;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; arg1 == &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;!axis&amp;amp;quot;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
             &amp;lt;font color=&amp;quot;#ff6060&amp;quot;&amp;gt;--          id, lvl, cmd,         argument&amp;lt;/font&amp;gt;&lt;br /&gt;
             queueCommand(id, &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;4&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;forceteam r&amp;amp;quot;&amp;lt;/font&amp;gt;, id)&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;elseif&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; arg1 == &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;!allies&amp;amp;quot;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
             queueCommand(id, &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;4&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;forceteam b&amp;amp;quot;&amp;lt;/font&amp;gt;, id)&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;elseif&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; arg1 == &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;!shuffle&amp;amp;quot;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
             queueCommand(id, &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;3&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;shuffleteamsxp_norestart&amp;amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;nil&amp;lt;/font&amp;gt;)&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;return&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;0&amp;lt;/font&amp;gt;)&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;end&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;function&amp;lt;/font&amp;gt; queueCommand(id, level, cmd, argument)&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; admin_vm ~= -&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;local&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; ok = et.IPCSend(admin_vm, &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;string.format&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;IsAdmin: %d&amp;amp;quot;&amp;lt;/font&amp;gt;, id))&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;if&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; ok ~= &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;then&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
             et.G_Print(&amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;amp;quot;ipcdemo-cmd: IPCSend to ipcdemo-admin failed&amp;amp;quot;&amp;lt;/font&amp;gt;)&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;else&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
             &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;table.insert&amp;lt;/font&amp;gt;(CommandQueue, &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;{&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt; id, level, cmd, argument &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;}&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;)&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#8080ff&amp;quot;&amp;gt;&amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;end&amp;lt;/font&amp;gt;&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=Lua_Mod_API&amp;diff=2632</id>
		<title>Lua Mod API</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=Lua_Mod_API&amp;diff=2632"/>
		<updated>2007-02-07T21:21:49Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: You missed something :E&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOEDITSECTION__&lt;br /&gt;
[[ETPro]] now supports server-side mods via the [http://www.lua.org/ Lua] scripting language. For more information about Lua, visit the [http://www.lua.org/manual/5.0/ Reference manual], the online edition of the book [http://www.lua.org/pil/ Programming in Lua] or the [http://lua-users.org/wiki/ lua-users wiki].&lt;br /&gt;
&lt;br /&gt;
ETPro has an embedded Lua 5.0.2 interpreter, and if present will load user-defined scripts from the ETPro directory.  It also provides an &amp;quot;et&amp;quot; library of function calls for Lua that allow access to the server engine, and provides callbacks so a server side mod may trigger on specific server events.&lt;br /&gt;
&lt;br /&gt;
The following standard Lua libraries are initialized by default and available to ETPro Lua scripts:&lt;br /&gt;
[http://www.lua.org/manual/5.0/manual.html#5.1 basic], [http://www.lua.org/manual/5.0/manual.html#5.4 table], [http://www.lua.org/manual/5.0/manual.html#5.6 i/o], [http://www.lua.org/manual/5.0/manual.html#5.7 os] (available features vary depending on your OS), [http://www.lua.org/manual/5.0/manual.html#5.3 string], [http://www.lua.org/manual/5.0/manual.html#5.5 math].&lt;br /&gt;
&lt;br /&gt;
A list of ETPro mods can be found [[:Category:ETPro:Mods|here]].&lt;br /&gt;
&lt;br /&gt;
A tutorial about ETPro Lua scripting can be found [[Lua Tutorials|here]].&lt;br /&gt;
&lt;br /&gt;
API requests can be discussed at the [[Talk:Lua_Mod_API|Lua Mod API talk page]].&lt;br /&gt;
&lt;br /&gt;
==client commands==&lt;br /&gt;
===lua_status===&lt;br /&gt;
:lists all currently loaded lua modules.&lt;br /&gt;
:&#039;&#039;lua mods cannot override this client command.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==server commands==&lt;br /&gt;
===lua_status===&lt;br /&gt;
:lists all currently loaded lua modules.&lt;br /&gt;
&lt;br /&gt;
==cvars==&lt;br /&gt;
===lua_modules===&lt;br /&gt;
:(default &amp;quot;&amp;quot;, disabled)&lt;br /&gt;
:space separated list of lua modules for ETPro to load. modules will be run in the order listed.&lt;br /&gt;
&lt;br /&gt;
===lua_allowedmodules===&lt;br /&gt;
:(default &amp;quot;&amp;quot;, disabled)&lt;br /&gt;
:if set, only lua modules with the matching sha1 signatures listed in this cvar will be allowed to load.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:changing either cvar will cause all currently loaded modules to :quit and be unloaded until the next map_restart.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==et library calls==&lt;br /&gt;
&lt;br /&gt;
===modules===&lt;br /&gt;
et.RegisterModname( &#039;&#039;&#039;modname&#039;&#039;&#039; )&lt;br /&gt;
:Registers a descriptive string &#039;&#039;&#039;modname&#039;&#039;&#039; for this mod.&lt;br /&gt;
&#039;&#039;&#039;vmnumber&#039;&#039;&#039; = et.FindSelf()&lt;br /&gt;
:Returns a number indicating the VM slot the current mod is loaded into.&lt;br /&gt;
&#039;&#039;&#039;modname&#039;&#039;&#039;, &#039;&#039;&#039;signature&#039;&#039;&#039; = et.FindMod( &#039;&#039;&#039;vmnumber&#039;&#039;&#039; )&lt;br /&gt;
:Returns the &#039;&#039;&#039;modname&#039;&#039;&#039; and sha1 &#039;&#039;&#039;signature&#039;&#039;&#039; for the mod loaded in the VM slot &#039;&#039;&#039;vmnumber&#039;&#039;&#039;. Returns nil, nil if the VM slot is invalid.&lt;br /&gt;
&#039;&#039;&#039;success&#039;&#039;&#039; = et.IPCSend( &#039;&#039;&#039;vmnumber&#039;&#039;&#039;, &#039;&#039;&#039;message&#039;&#039;&#039; )&lt;br /&gt;
:Sends the string &#039;&#039;&#039;message&#039;&#039;&#039; to the mod in the VM slot indicated by &#039;&#039;&#039;vmnumber&#039;&#039;&#039;. The mod receiving &#039;&#039;&#039;message&#039;&#039;&#039; must have an &#039;&#039;et_IPCReceive()&#039;&#039; callback. If the message is successfully sent, &#039;&#039;&#039;success&#039;&#039;&#039; will be 1. On failure it will be 0.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===printing===&lt;br /&gt;
et.G_Print( &#039;&#039;&#039;text&#039;&#039;&#039; )&lt;br /&gt;
:Prints the string &#039;&#039;&#039;text&#039;&#039;&#039; to the server console.&lt;br /&gt;
et.G_LogPrint( &#039;&#039;&#039;text&#039;&#039;&#039; )&lt;br /&gt;
:Prints the string &#039;&#039;&#039;text&#039;&#039;&#039; to the server console and writes it to the server log.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===argument handling===&lt;br /&gt;
These functions are to be used within the [[#commands|command callback functions]].&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;args&#039;&#039;&#039; = et.ConcatArgs( &#039;&#039;&#039;index&#039;&#039;&#039; )&lt;br /&gt;
:Returns all arguments beginning from &#039;&#039;&#039;index&#039;&#039;&#039; concatenated into a single string &#039;&#039;&#039;args&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;argcount&#039;&#039;&#039; = et.trap_Argc()&lt;br /&gt;
:Returns a number indicating the number of command line arguments in the command buffer.&lt;br /&gt;
&#039;&#039;&#039;arg&#039;&#039;&#039; = et.trap_Argv( &#039;&#039;&#039;argnum&#039;&#039;&#039; )&lt;br /&gt;
:Returns the contents of the command line argument &#039;&#039;&#039;argnum&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===cvars===&lt;br /&gt;
&#039;&#039;&#039;cvarvalue&#039;&#039;&#039; = et.trap_Cvar_Get( &#039;&#039;&#039;cvarname&#039;&#039;&#039; )&lt;br /&gt;
:Returns the value of the cvar &#039;&#039;&#039;cvarname&#039;&#039;&#039; as a string. If there is no cvar named &#039;&#039;&#039;cvarname&#039;&#039;&#039;, returns a zero length string. &lt;br /&gt;
et.trap_Cvar_Set( &#039;&#039;&#039;cvarname&#039;&#039;&#039;, &#039;&#039;&#039;cvarvalue&#039;&#039;&#039; )&lt;br /&gt;
:Sets the cvar &#039;&#039;&#039;cvarname&#039;&#039;&#039; to &#039;&#039;&#039;cvarvalue&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===configstrings===&lt;br /&gt;
&#039;&#039;&#039;configstringvalue&#039;&#039;&#039; = et.trap_GetConfigstring( &#039;&#039;&#039;index&#039;&#039;&#039; )&lt;br /&gt;
:Returns the string &#039;&#039;&#039;configstringvalue&#039;&#039;&#039; containing the contents of the configstring &#039;&#039;&#039;index&#039;&#039;&#039;&lt;br /&gt;
et.trap_SetConfigstring( &#039;&#039;&#039;index&#039;&#039;&#039;, &#039;&#039;&#039;configstringvalue&#039;&#039;&#039; )&lt;br /&gt;
:Sets the configstring &#039;&#039;&#039;index&#039;&#039;&#039; to the string &#039;&#039;&#039;configstringvalue&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===server===&lt;br /&gt;
et.trap_SendConsoleCommand( &#039;&#039;&#039;when&#039;&#039;&#039;, &#039;&#039;&#039;command&#039;&#039;&#039; )&lt;br /&gt;
:Sends the command &#039;&#039;&#039;command&#039;&#039;&#039; to the server console, to be executed &#039;&#039;&#039;when&#039;&#039;&#039; (see et.EXEC_* constants)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===clients===&lt;br /&gt;
et.trap_DropClient( &#039;&#039;&#039;clientnum&#039;&#039;&#039;, &#039;&#039;&#039;reason&#039;&#039;&#039;, &#039;&#039;&#039;ban_time&#039;&#039;&#039; )&lt;br /&gt;
:Disconnects &#039;&#039;&#039;clientnum&#039;&#039;&#039; from the server, with descriptive string &#039;&#039;&#039;reason&#039;&#039;&#039; reported to clients. &#039;&#039;&#039;ban_time&#039;&#039;&#039; is the time in seconds to ban the client from the server. &#039;&#039;&#039;ban_time&#039;&#039;&#039; is optional and may be entirely omitted, in which case the ban time defaults to the cvar &#039;&#039;b_defaultbantime&#039;&#039;&lt;br /&gt;
et.trap_SendServerCommand( &#039;&#039;&#039;clientnum&#039;&#039;&#039;, &#039;&#039;&#039;[[SendServerCommand|command]]&#039;&#039;&#039; )&lt;br /&gt;
:Sends the command &#039;&#039;&#039;[[SendServerCommand|command]]&#039;&#039;&#039; to the client &#039;&#039;&#039;clientnum&#039;&#039;&#039;. If &#039;&#039;&#039;clientnum&#039;&#039;&#039; is -1, the &#039;&#039;&#039;[[SendServerCommand|command]]&#039;&#039;&#039; is broadcast to all connected clients.&lt;br /&gt;
et.G_Say( &#039;&#039;&#039;clientNum&#039;&#039;&#039;, &#039;&#039;&#039;mode&#039;&#039;&#039;, &#039;&#039;&#039;text&#039;&#039;&#039; )&lt;br /&gt;
:Sends a chat command on behalf of client &#039;&#039;&#039;clientNum&#039;&#039;&#039; with the mode &#039;&#039;&#039;mode&#039;&#039;&#039; (see et.SAY_* constants) and chat text &#039;&#039;&#039;text&#039;&#039;&#039;.&lt;br /&gt;
et.ClientUserinfoChanged( &#039;&#039;&#039;clientNum&#039;&#039;&#039; )&lt;br /&gt;
:Loads the new [[Userinfo]] of &#039;&#039;&#039;clientNum&#039;&#039;&#039; and stores it in the configstring and client variables&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===userinfo===&lt;br /&gt;
&#039;&#039;&#039;userinfo&#039;&#039;&#039; = et.trap_GetUserinfo( &#039;&#039;&#039;clientnum&#039;&#039;&#039; )&lt;br /&gt;
:Returns the contents of the [[Userinfo]] string for the client &#039;&#039;&#039;clientnum&#039;&#039;&#039;&lt;br /&gt;
et.trap_SetUserinfo( &#039;&#039;&#039;clientnum&#039;&#039;&#039;, &#039;&#039;&#039;userinfo&#039;&#039;&#039; )&lt;br /&gt;
:Sets the [[Userinfo]] string for the client &#039;&#039;&#039;clientnum&#039;&#039;&#039; to &#039;&#039;&#039;userinfo&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===string utility functions===&lt;br /&gt;
&#039;&#039;&#039;infostring&#039;&#039;&#039; = et.Info_RemoveKey( &#039;&#039;&#039;infostring&#039;&#039;&#039;, &#039;&#039;&#039;key&#039;&#039;&#039; )&lt;br /&gt;
:Removes key &#039;&#039;&#039;key&#039;&#039;&#039; from infostring &#039;&#039;&#039;infostring&#039;&#039;&#039; and returns the modified infostring.&lt;br /&gt;
&#039;&#039;&#039;infostring&#039;&#039;&#039; = et.Info_SetValueForKey( &#039;&#039;&#039;infostring&#039;&#039;&#039;, &#039;&#039;&#039;key&#039;&#039;&#039;, &#039;&#039;&#039;value&#039;&#039;&#039; )&lt;br /&gt;
:Sets the key &#039;&#039;&#039;key&#039;&#039;&#039; in the infostring &#039;&#039;&#039;infostring&#039;&#039;&#039; to &#039;&#039;&#039;value&#039;&#039;&#039; and returns the modified infostring. If &#039;&#039;&#039;value&#039;&#039;&#039; is an empty string, &#039;&#039;&#039;key&#039;&#039;&#039; is removed from the string. &lt;br /&gt;
&#039;&#039;&#039;keyvalue&#039;&#039;&#039; = et.Info_ValueForKey( &#039;&#039;&#039;infostring&#039;&#039;&#039;, &#039;&#039;&#039;key&#039;&#039;&#039; )&lt;br /&gt;
:Returns the value of the key &#039;&#039;&#039;key&#039;&#039;&#039; in the infostring &#039;&#039;&#039;infostring&#039;&#039;&#039;. If &#039;&#039;&#039;key&#039;&#039;&#039; is not present in the string, an empty string is returned.&lt;br /&gt;
&#039;&#039;&#039;cleanstring&#039;&#039;&#039; = et.Q_CleanStr( &#039;&#039;&#039;string&#039;&#039;&#039; )&lt;br /&gt;
:Returns &#039;&#039;&#039;string&#039;&#039;&#039; stripped of all color codes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ET filesystem===&lt;br /&gt;
&#039;&#039;&#039;fd&#039;&#039;&#039;, &#039;&#039;&#039;len&#039;&#039;&#039; = et.trap_FS_FOpenFile( &#039;&#039;&#039;filename&#039;&#039;&#039;, &#039;&#039;&#039;mode&#039;&#039;&#039; )&lt;br /&gt;
:Attempts to open the file &#039;&#039;&#039;filename&#039;&#039;&#039; with the access mode &#039;&#039;&#039;mode&#039;&#039;&#039; (see et.FS_ constants). Returns the filedescriptor &#039;&#039;&#039;fd&#039;&#039;&#039; and file length &#039;&#039;&#039;len&#039;&#039;&#039;. On error, &#039;&#039;&#039;len&#039;&#039;&#039; returns -1.&lt;br /&gt;
&#039;&#039;&#039;filedata&#039;&#039;&#039; = et.trap_FS_Read( fd, count )&lt;br /&gt;
:Reads &#039;&#039;&#039;count&#039;&#039;&#039; bytes from filedescriptor &#039;&#039;&#039;fd&#039;&#039;&#039;.&lt;br /&gt;
&#039;&#039;&#039;count&#039;&#039;&#039; = et.trap_FS_Write( &#039;&#039;&#039;filedata&#039;&#039;&#039;, &#039;&#039;&#039;count&#039;&#039;&#039;, &#039;&#039;&#039;fd&#039;&#039;&#039; )&lt;br /&gt;
:Attempts to write &#039;&#039;&#039;count&#039;&#039;&#039; bytes of &#039;&#039;&#039;filedata&#039;&#039;&#039; to filedescriptor &#039;&#039;&#039;fd&#039;&#039;&#039;. Returns number of bytes successfully written.&lt;br /&gt;
et.trap_FS_Rename( &#039;&#039;&#039;oldname&#039;&#039;&#039;, &#039;&#039;&#039;newname&#039;&#039;&#039; )&lt;br /&gt;
:Renames file &#039;&#039;&#039;oldname&#039;&#039;&#039; to &#039;&#039;&#039;newname&#039;&#039;&#039;.&lt;br /&gt;
et.trap_FS_FCloseFile( &#039;&#039;&#039;fd&#039;&#039;&#039; )&lt;br /&gt;
:Closes filedescriptor &#039;&#039;&#039;fd&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===indexes===&lt;br /&gt;
&#039;&#039;&#039;soundindex&#039;&#039;&#039; = et.G_SoundIndex( &#039;&#039;&#039;filename&#039;&#039;&#039; )&lt;br /&gt;
:Returns an index to the soundfile indicated by &#039;&#039;&#039;filename&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;modelindex&#039;&#039;&#039; = et.G_ModelIndex( &#039;&#039;&#039;filename&#039;&#039;&#039; )&lt;br /&gt;
:Returns an index to the model indicated by &#039;&#039;&#039;filename&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===sound===&lt;br /&gt;
et.G_globalSound( &#039;&#039;&#039;sound&#039;&#039;&#039; )&lt;br /&gt;
:Plays the global sound indicated by the filename &#039;&#039;&#039;sound&#039;&#039;&#039;.&lt;br /&gt;
et.G_Sound( &#039;&#039;&#039;entnum&#039;&#039;&#039;, &#039;&#039;&#039;soundindex&#039;&#039;&#039; )&lt;br /&gt;
:Plays the sound &#039;&#039;&#039;soundindex&#039;&#039;&#039; at the location of entity &#039;&#039;&#039;entnum&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===miscellaneous===&lt;br /&gt;
&#039;&#039;&#039;milliseconds&#039;&#039;&#039; = et.trap_Milliseconds()&lt;br /&gt;
:Returns a number indicating the current server time in milliseconds.&lt;br /&gt;
et.G_Damage( &#039;&#039;&#039;target&#039;&#039;&#039;, &#039;&#039;&#039;inflictor&#039;&#039;&#039;, &#039;&#039;&#039;attacker&#039;&#039;&#039;, &#039;&#039;&#039;damage&#039;&#039;&#039;, &#039;&#039;&#039;[[etdamage|dflags]]&#039;&#039;&#039;, &#039;&#039;&#039;[[etdamage|mod]]&#039;&#039;&#039; )&lt;br /&gt;
:Does &#039;&#039;&#039;damage&#039;&#039;&#039; amount of damage on &#039;&#039;&#039;target&#039;&#039;&#039; inflicted by &#039;&#039;&#039;inflictor&#039;&#039;&#039; and cased by &#039;&#039;&#039;attacker&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;&#039;target&#039;&#039;&#039;, &#039;&#039;&#039;inflictor&#039;&#039;&#039;, &#039;&#039;&#039;attacker&#039;&#039;&#039; are entity numbers&lt;br /&gt;
:&#039;&#039;&#039;[[etdamage|dflags]]&#039;&#039;&#039; is a [[Bitmask-cvar|bitflag]] number to decide how the damage is inflickted, see &#039;&#039;&#039;[[etdamage|dflags]]&#039;&#039;&#039; [[etdamage|flaglist]]&lt;br /&gt;
:&#039;&#039;&#039;[[etdamage|mod]]&#039;&#039;&#039; is a number from 0 up to 64 o set the type of damage, see &#039;&#039;&#039;[[etdamage|mod]]&#039;&#039;&#039; [[etdamage|list]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===entities===&lt;br /&gt;
&#039;&#039;&#039;entnum&#039;&#039;&#039; = et.G_Spawn()&lt;br /&gt;
:Spawns a new entity and returns the new entity number.&lt;br /&gt;
&#039;&#039;&#039;entnum&#039;&#039;&#039; = et.G_TempEntity( &#039;&#039;&#039;origin&#039;&#039;&#039;, &#039;&#039;&#039;event&#039;&#039;&#039; )&lt;br /&gt;
:Spawns a new TempEntity of event type &#039;&#039;&#039;event&#039;&#039;&#039; and places it at &#039;&#039;&#039;origin&#039;&#039;&#039; in the world.&lt;br /&gt;
:&#039;&#039;&#039;Warning:&#039;&#039;&#039; up to and including ETPro 3.2.4 the signature of the method is broken and expects four instead of two parameters. To successfully call it, you need to prepend the parameter list with two dummy parameters like et.G_TempEntity( 0, 0, origin, event ). Use this method with care, because in future ETPro versions it will probably be corrected to the one stated above and might break your script.&lt;br /&gt;
et.G_FreeEntity( &#039;&#039;&#039;entnum&#039;&#039;&#039; )&lt;br /&gt;
:Frees the entity &#039;&#039;&#039;entnum&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;spawnval&#039;&#039;&#039; = et.G_GetSpawnVar( &#039;&#039;&#039;entnum&#039;&#039;&#039;, &#039;&#039;&#039;key&#039;&#039;&#039; )&lt;br /&gt;
:Returns the value of spawnvar &#039;&#039;&#039;key&#039;&#039;&#039; for entity &#039;&#039;&#039;entnum&#039;&#039;&#039;&lt;br /&gt;
et.G_SetSpawnVar( &#039;&#039;&#039;entnum&#039;&#039;&#039;, &#039;&#039;&#039;key&#039;&#039;&#039;, &#039;&#039;&#039;value&#039;&#039;&#039; )&lt;br /&gt;
:Sets the spawnvar &#039;&#039;&#039;key&#039;&#039;&#039; to &#039;&#039;&#039;value&#039;&#039;&#039; for entity &#039;&#039;&#039;entnum&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;integer entnum&#039;&#039;&#039; = et.G_SpawnGEntityFromSpawnVars( string spawnvar, string spawnvalue, ... )&lt;br /&gt;
:This function can only be called inside the &#039;&#039;&#039;et_InitGame&#039;&#039;&#039; callback&lt;br /&gt;
et.trap_LinkEntity( &#039;&#039;&#039;entnum&#039;&#039;&#039; )&lt;br /&gt;
:Links the entity &#039;&#039;&#039;entnum&#039;&#039;&#039;&lt;br /&gt;
et.trap_UnlinkEntity( &#039;&#039;&#039;entnum&#039;&#039;&#039; )&lt;br /&gt;
:Unlinks the entity &#039;&#039;&#039;entnum&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;(variable)&#039;&#039;&#039; = et.gentity_get ( &#039;&#039;&#039;entnum&#039;&#039;&#039;, &#039;&#039;&#039;[[Fieldname]]&#039;&#039;&#039; &#039;&#039;,arrayindex&#039;&#039; )&lt;br /&gt;
:Gets the value of &#039;&#039;&#039;[[Fieldname]]&#039;&#039;&#039; from entity &#039;&#039;&#039;entnum&#039;&#039;&#039; out of the g_entity struct. For NULL entities or clients, &#039;&#039;nil&#039;&#039; is returned.&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;arrayindex&#039;&#039; is used to specify which element of an array entity field to get. It is required when accessing array type fields. Entity field array indexes start at 0.&lt;br /&gt;
et.gentity_set( &#039;&#039;&#039;entnum&#039;&#039;&#039;, &#039;&#039;&#039;[[Fieldname]]&#039;&#039;&#039;, &#039;&#039;arrayindex,&#039;&#039; &#039;&#039;&#039;(value)&#039;&#039;&#039; )&lt;br /&gt;
:Sets the value of &#039;&#039;&#039;[[Fieldname]]&#039;&#039;&#039; from entity &#039;&#039;&#039;entnum&#039;&#039;&#039; in the g_entity struct to &#039;&#039;&#039;(value)&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;arrayindex&#039;&#039; is used to specify which element of an array entity field to set.&lt;br /&gt;
et.G_AddEvent( &#039;&#039;&#039;ent&#039;&#039;&#039;, &#039;&#039;&#039;event&#039;&#039;&#039;, &#039;&#039;&#039;eventparm&#039;&#039;&#039;&#039; )&lt;br /&gt;
:Adds event &#039;&#039;&#039;event&#039;&#039;&#039; whit eventparameter &#039;&#039;&#039;eventparm&#039;&#039;&#039;&#039; to entity &#039;&#039;&#039;ent&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==callbacks==&lt;br /&gt;
&lt;br /&gt;
===qagame execution===&lt;br /&gt;
et_InitGame( &#039;&#039;&#039;levelTime&#039;&#039;&#039;, &#039;&#039;&#039;randomSeed&#039;&#039;&#039;, &#039;&#039;&#039;restart&#039;&#039;&#039; )&lt;br /&gt;
:Called when qagame initializes. &#039;&#039;&#039;levelTime&#039;&#039;&#039; is the current level time in milliseconds. &#039;&#039;&#039;randomSeed&#039;&#039;&#039; is a number that can be used to seed random number generators. &#039;&#039;&#039;restart&#039;&#039;&#039; indicates if et_InitGame() is being called due to a map restart (1) or not (0).&lt;br /&gt;
et_ShutdownGame( &#039;&#039;&#039;restart&#039;&#039;&#039; )&lt;br /&gt;
:Called when qagame shuts down. &#039;&#039;&#039;restart&#039;&#039;&#039; indicates if the shutdown is being called due to a map_restart (1) or not (0).&lt;br /&gt;
et_RunFrame( &#039;&#039;&#039;levelTime&#039;&#039;&#039; )&lt;br /&gt;
:Called when qagame runs a server frame. &#039;&#039;&#039;levelTime&#039;&#039;&#039; is the current level time in milliseconds.&lt;br /&gt;
et_Quit()&lt;br /&gt;
:Called when ETPro unloads the mod. The mod should close all open filedescriptors and perform all cleanup.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===client management===&lt;br /&gt;
&#039;&#039;&#039;rejectreason&#039;&#039;&#039; = et_ClientConnect( &#039;&#039;&#039;clientNum&#039;&#039;&#039;, &#039;&#039;&#039;firstTime&#039;&#039;&#039;, &#039;&#039;&#039;isBot&#039;&#039;&#039; )&lt;br /&gt;
:Called when a client attempts to connect to the server. &#039;&#039;&#039;clientNum&#039;&#039;&#039; is the client slot id, &#039;&#039;&#039;firstTime&#039;&#039;&#039; indicates if this is a new connection (1) or a reconnection (0). &#039;&#039;&#039;isBot&#039;&#039;&#039; indicates if the client is a bot (1) or not (0). If the mod accepts the connection, it should return nil. Otherwise, the mod should return a string describing the reason the client connection was rejected.&lt;br /&gt;
et_ClientDisconnect( &#039;&#039;&#039;clientNum&#039;&#039;&#039; )&lt;br /&gt;
:Called when a client disconnects. &#039;&#039;&#039;clientNum&#039;&#039;&#039; is the client slot id.&lt;br /&gt;
et_ClientBegin( &#039;&#039;&#039;clientNum&#039;&#039;&#039; )&lt;br /&gt;
:Called when a client begins (becomes active, and enters the gameworld). &#039;&#039;&#039;clientNum&#039;&#039;&#039; is the client slot id.&lt;br /&gt;
et_ClientUserinfoChanged( &#039;&#039;&#039;clientNum&#039;&#039;&#039; )&lt;br /&gt;
:Called when a client&#039;s [[Userinfo]] string has changed. &#039;&#039;&#039;clientNum&#039;&#039;&#039; is the client slot id.&lt;br /&gt;
et_ClientSpawn( &#039;&#039;&#039;clientNum&#039;&#039;&#039;, &#039;&#039;&#039;revived&#039;&#039;&#039; )&lt;br /&gt;
:Called when a client is spawned. &#039;&#039;&#039;clientNum&#039;&#039;&#039; is the client slot id. &#039;&#039;&#039;revived&#039;&#039;&#039; is 1 if the client was spawned by beeying revived.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===commands===&lt;br /&gt;
&#039;&#039;&#039;intercepted&#039;&#039;&#039; = et_ClientCommand( &#039;&#039;&#039;clientNum&#039;&#039;&#039;, &#039;&#039;&#039;command&#039;&#039;&#039; )&lt;br /&gt;
:Called when a command is received from a client. &#039;&#039;&#039;clientNum&#039;&#039;&#039; is the client slot id. &#039;&#039;&#039;command&#039;&#039;&#039; is the command. The mod should return 1 if the command was intercepted by the mod, and 0 if the command was ignored by the mod and should be passed through to the server (and other mods in the chain).&lt;br /&gt;
:The actual command can be accessed through the [[#argument_handling|argument handling]] functions, as seen in the [[ETPro:Lua Sample Code]].&lt;br /&gt;
&#039;&#039;&#039;intercepted&#039;&#039;&#039; = et_ConsoleCommand()&lt;br /&gt;
:Called when a command is entered on the server console. The mod should return 1 if the command was intercepted by the mod, and 0 if the command was ignored by the mod and should be passed through to the server (and other mods in the chain).&lt;br /&gt;
:The actual command can be accessed through the [[#argument_handling|argument handling]] functions, as seen in the [[ETPro:Lua Sample Code]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===xp===&lt;br /&gt;
et_UpgradeSkill( &#039;&#039;&#039;cno&#039;&#039;&#039;, &#039;&#039;&#039;skill&#039;&#039;&#039; )&lt;br /&gt;
:Called when client on slot &#039;&#039;&#039;cno&#039;&#039;&#039; gets an upgrade on skill &#039;&#039;&#039;skill&#039;&#039;&#039;. Return -1 to override (abort) the qagame function, anything else to &amp;quot;passthrough&amp;quot;. Callback may modify skills (or do anything else it wants) during passthrough. &lt;br /&gt;
et_SetPlayerSkill( &#039;&#039;&#039;cno&#039;&#039;&#039;, &#039;&#039;&#039;skill&#039;&#039;&#039; )&lt;br /&gt;
:Called when clients (on slot &#039;&#039;&#039;cno&#039;&#039;&#039;) skill level &#039;&#039;&#039;skill&#039;&#039;&#039; is set. Return -1 to override (abort) the qagame function, anything else to &amp;quot;passthrough&amp;quot;. Callback may modify skills (or do anything else it wants) during passthrough.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===miscellaneous===&lt;br /&gt;
et_IPCReceive( &#039;&#039;&#039;vmnumber&#039;&#039;&#039;, &#039;&#039;&#039;message&#039;&#039;&#039; )&lt;br /&gt;
:Called when another mod sends an et.IPCSend() message to this mod. &#039;&#039;&#039;vmnumber&#039;&#039;&#039; is the VM slot number of the sender, and &#039;&#039;&#039;message&#039;&#039;&#039; is the message.&lt;br /&gt;
et_Print( &#039;&#039;&#039;text&#039;&#039;&#039; )&lt;br /&gt;
:Called whenever the server or qagame prints a string to the console.&lt;br /&gt;
et_Obituary( &#039;&#039;&#039;victim&#039;&#039;&#039;, &#039;&#039;&#039;killer&#039;&#039;&#039;, &#039;&#039;&#039;meansOfDeath&#039;&#039;&#039; )&lt;br /&gt;
:Called whenever a player is killed.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==predefined constants==&lt;br /&gt;
et.EXEC_NOW&amp;lt;br&amp;gt;&lt;br /&gt;
et.EXEC_INSERT&amp;lt;br&amp;gt;&lt;br /&gt;
et.EXEC_APPEND&amp;lt;br&amp;gt;&lt;br /&gt;
et.FS_READ&amp;lt;br&amp;gt;&lt;br /&gt;
et.FS_WRITE&amp;lt;br&amp;gt;&lt;br /&gt;
et.FS_APPEND&amp;lt;br&amp;gt;&lt;br /&gt;
et.FS_APPEND_SYNC&amp;lt;br&amp;gt;&lt;br /&gt;
et.SAY_ALL&amp;lt;br&amp;gt;&lt;br /&gt;
et.SAY_TEAM&amp;lt;br&amp;gt;&lt;br /&gt;
et.SAY_BUDDY&amp;lt;br&amp;gt;&lt;br /&gt;
et.SAY_TEAMNL&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
et.HOSTARCH&lt;br /&gt;
:set to WIN32 or UNIX depending on the host architecture qagame is running on.&lt;br /&gt;
LUA_PATH&lt;br /&gt;
:set to fs_homepath/fs_game/?.lua in order to ease use of the [http://www.lua.org/pil/8.1.html require] function.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==configs==&lt;br /&gt;
If a config is loaded, all modules are shutdown and reloaded. If a &#039;&#039;certified&#039;&#039; config is loaded, all modules are shutdown and reloaded, and additionally the following functions are disabled: &#039;&#039;&#039;require()&#039;&#039;&#039;, &#039;&#039;&#039;loadfile()&#039;&#039;&#039;, &#039;&#039;&#039;loadlib()&#039;&#039;&#039;, &#039;&#039;&#039;loadstring()&#039;&#039;&#039;, &#039;&#039;&#039;dofile()&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==caveats==&lt;br /&gt;
Like qagame, lua modules are unloaded and reloaded on map_restart and map changes. This means that all global variables and other information is lost. Mods may choose to store persistent data in cvars or external files.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
&lt;br /&gt;
Q: OMG I hate the libary prefix et.* on everything!!11!1oneone&amp;lt;br&amp;gt;&lt;br /&gt;
A: table.foreach(et, function (func, value) _G[func] = value; end)&lt;br /&gt;
&lt;br /&gt;
Q: How do a reload my lua file without restarting the whole server?&amp;lt;br&amp;gt;&lt;br /&gt;
A: Use &#039;&#039;map_restart&#039;&#039;, &#039;&#039;reset_match&#039;&#039; or simply change the map.&lt;br /&gt;
&lt;br /&gt;
Q: Can I see some sample code?&amp;lt;br&amp;gt;&lt;br /&gt;
A: [[ETPro:Lua Sample Code|Lua sample code]]&lt;br /&gt;
&lt;br /&gt;
Q: Is there a list of [[ETPro]] Lua mods?&amp;lt;br&amp;gt;&lt;br /&gt;
A: Yes, [[:Category:ETPro:Mods|here]].&lt;br /&gt;
&lt;br /&gt;
Q: OMG my mod doesn&#039;t work!&amp;lt;br&amp;gt;&lt;br /&gt;
A: Make sure you added your mod&#039;s filename to the lua_modules cvar (e.g. set lua_modules mymod.lua).&lt;br /&gt;
&lt;br /&gt;
Q: OMG why has et_ClientSay been removed?&amp;lt;br&amp;gt;&lt;br /&gt;
A: That&#039;s a secret but, to keep the function as it was, just add the following code to your et_ClientCommand() function&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;	-- et_ClientSay had to be removed in order to intercept all commands &lt;br /&gt;
	-- so here&#039;s a wrapper for that&lt;br /&gt;
		arg0 = et.trap_Argv(0) -- get the main command&lt;br /&gt;
		&lt;br /&gt;
		if arg0 == &amp;quot;say&amp;quot; then&lt;br /&gt;
			return et_ClientSay( clientNum, et.SAY_ALL, et.ConcatArgs(1))&lt;br /&gt;
		elseif arg0 == &amp;quot;say_team&amp;quot; then&lt;br /&gt;
			return et_ClientSay( clientNum, et.SAY_TEAM, et.ConcatArgs(1))&lt;br /&gt;
		elseif arg0 == &amp;quot;say_buddy&amp;quot; then&lt;br /&gt;
			return et_ClientSay( clientNum, et.SAY_BUDDY, et.ConcatArgs(1))&lt;br /&gt;
		elseif arg0 == &amp;quot;say_teamnl&amp;quot; then&lt;br /&gt;
			return et_ClientSay( clientNum, et.SAY_TEAMNL, et.ConcatArgs(1))&lt;br /&gt;
		end&lt;br /&gt;
	-- et_ClientSay wrapper end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Lua]]&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=SendServerCommand&amp;diff=2628</id>
		<title>SendServerCommand</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=SendServerCommand&amp;diff=2628"/>
		<updated>2007-02-07T00:51:18Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: Wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOEDITSECTION__&lt;br /&gt;
et.trap_SendServerCommand() is used to send a command from the server to one or more clients. The first argument is the slot number of the client the command will be sent to. If it&#039;s equal to -1, the command will be broadcast to all clients.&lt;br /&gt;
&lt;br /&gt;
The following commands can be issued with this function:&lt;br /&gt;
&lt;br /&gt;
==Printing==&lt;br /&gt;
===Print===&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;print&#039;&#039;&#039; \&amp;quot;&#039;&#039;Message&#039;&#039;\n\&amp;quot;&amp;quot;&lt;br /&gt;
:&#039;&#039;&#039;print&#039;&#039;&#039; prints &#039;&#039;Message&#039;&#039; to the client&#039;s console.&lt;br /&gt;
&lt;br /&gt;
===Center Print MoO=== &lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;cpm&#039;&#039;&#039; \&amp;quot;&#039;&#039;Message&#039;&#039;\n\&amp;quot;&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;cpm&#039;&#039;&#039; prints &#039;&#039;Message&#039;&#039; to the client&#039;s annoucement area and console.&lt;br /&gt;
&lt;br /&gt;
===Center Print===&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;cp&#039;&#039;&#039; \&amp;quot;&#039;&#039;Message&#039;&#039;\n\&amp;quot;&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;cp&#039;&#039;&#039; prints &#039;&#039;Message&#039;&#039; to the center of the client&#039;s screen.&lt;br /&gt;
&lt;br /&gt;
===Banner Print===&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;b&#039;&#039;&#039; &#039;&#039;locations&#039;&#039; \&amp;quot;&#039;&#039;Message&#039;&#039;\n\&amp;quot;&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;b&#039;&#039;&#039; prints &#039;&#039;Message&#039;&#039; to the client&#039;s banner &#039;&#039;locations&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
:the &#039;&#039;locations&#039;&#039; can be a number from 0 to 248&lt;br /&gt;
:For compatibility, the old-style locations (from 0-4) are also supported.&amp;lt;br&amp;gt;&lt;br /&gt;
:8 - player chat area&amp;lt;br&amp;gt;                &lt;br /&gt;
:16 - left popup area (not recommended)&amp;lt;br&amp;gt;&lt;br /&gt;
:32 - centered above the chat area&amp;lt;br&amp;gt;&lt;br /&gt;
:64 - console only&amp;lt;br&amp;gt;&lt;br /&gt;
:128 - banner area (recommended)(top of screen)&lt;br /&gt;
&lt;br /&gt;
===Scores Print===&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;sc&#039;&#039;&#039; \&amp;quot;&#039;&#039;Message&#039;&#039;\n\&amp;quot;&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;sc&#039;&#039;&#039; prints &#039;&#039;Message&#039;&#039; to the client&#039;s console and writes it to the statsdump file.&lt;br /&gt;
&lt;br /&gt;
==Chatting==&lt;br /&gt;
===Chat===&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;c&#039;&#039;&#039; &#039;&#039;ClientNum&#039;&#039; \&amp;quot;&#039;&#039;Message&#039;&#039;\&amp;quot;&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;c&#039;&#039;&#039; prints &#039;&#039;Message&#039;&#039; as a global chat message on behalf of the client specified by &#039;&#039;ClientNum&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Team Chat===&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;tc&#039;&#039;&#039; &#039;&#039;ClientNum&#039;&#039; \&amp;quot;&#039;&#039;Message&#039;&#039;\&amp;quot; &#039;&#039;X-Location&#039;&#039; &#039;&#039;Y-Location&#039;&#039; &#039;&#039;Z-Location&#039;&#039;&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;tc&#039;&#039;&#039; prints &#039;&#039;Message&#039;&#039; as a team chat message on behalf of the client specified by &#039;&#039;ClientNum&#039;&#039;,&amp;lt;br&amp;gt;&lt;br /&gt;
:the &#039;&#039;X,Y,Z-Location&#039;s&#039;&#039; are optional parematers that represent the client&#039;s location,&amp;lt;br&amp;gt;&lt;br /&gt;
:if the &#039;&#039;X,Y,Z-Location&#039;s&#039;&#039; are left out then the message will be printed without a location.&lt;br /&gt;
&lt;br /&gt;
===Fireteam Chat===&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;bc&#039;&#039;&#039; &#039;&#039;ClientNum&#039;&#039; \&amp;quot;&#039;&#039;Message&#039;&#039;\&amp;quot; &#039;&#039;X-Location&#039;&#039; &#039;&#039;Y-Location&#039;&#039; &#039;&#039;Z-Location&#039;&#039;&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;bc&#039;&#039;&#039; prints &#039;&#039;Message&#039;&#039; as a fireteam chat message on behalf of the client specified by &#039;&#039;ClientNum&#039;&#039;,&amp;lt;br&amp;gt;&lt;br /&gt;
:the &#039;&#039;X,Y,Z-Location&#039;s&#039;&#039; are parematers that represent the client&#039;s location.&lt;br /&gt;
&lt;br /&gt;
==Voice Chat==&lt;br /&gt;
===Global Voice Chat===&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;vchat&#039;&#039;&#039; &#039;&#039;VoiceOnly&#039;&#039; &#039;&#039;ClientNum&#039;&#039; 50 &#039;&#039;Vsay-String&#039;&#039; &#039;&#039;Vsay-Number&#039;&#039; \&amp;quot;&#039;&#039;Custom-Message&#039;&#039;\&amp;quot;&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;vchat&#039;&#039;&#039; sends a global voice chat &#039;&#039;Vsay-String&#039;&#039; on behalf of the client specified by &#039;&#039;ClientNum&#039;&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;Vsay-Number&#039;&#039; is by default random, however, it can be set by the player by passing parameters to the vsay command (/vsay &amp;lt;&#039;&#039;Vsay-Number&#039;&#039;&amp;gt; &amp;lt;&#039;&#039;Vsay-String&#039;&#039;&amp;gt;),&amp;lt;br&amp;gt; &#039;&#039;Vsay-Number&#039;&#039; represents the vsay number of Vsay as listed in the .voice files.&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;Custom-Message&#039;&#039; is by default \&amp;quot;\&amp;quot; (empty), otherwise it&#039;s the message that gets printed in the chat area.&lt;br /&gt;
:if &#039;&#039;VoiceOnly&#039;&#039; is 0 it will print a chat message on behalf of &#039;&#039;ClientNum&#039;&#039; contaning the message&amp;lt;br&amp;gt;&lt;br /&gt;
:if &#039;&#039;VoiceOnly&#039;&#039; is 1 it will only do the sound but not the message&lt;br /&gt;
&lt;br /&gt;
===Team Voice Chat===&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;vtchat&#039;&#039;&#039; &#039;&#039;VoiceOnly&#039;&#039; &#039;&#039;ClientNum&#039;&#039; 50 &#039;&#039;Vsay-String&#039;&#039; &#039;&#039;Vsay-Number&#039;&#039; &#039;&#039;X-Location&#039;&#039; &#039;&#039;Y-Location&#039;&#039; &#039;&#039;Z-Location&#039;&#039; \&amp;quot;&#039;&#039;Custom-Message&#039;&#039;\&amp;quot;&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;vchat&#039;&#039;&#039; sends a team voice chat &#039;&#039;Vsay-String&#039;&#039; a on behalf of client &#039;&#039;ClienNtum&#039;&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;Vsay-Number&#039;&#039; is by default random, however, it can be set by the player by passing parameters to the vsay command (/vsay &amp;lt;&#039;&#039;Vsay-Number&#039;&#039;&amp;gt; &amp;lt;&#039;&#039;Vsay-String&#039;&#039;&amp;gt;),&amp;lt;br&amp;gt; &#039;&#039;Vsay-Number&#039;&#039; represents the vsay number of Vsay as listed in the .voice files.&amp;lt;br&amp;gt;&lt;br /&gt;
:the &#039;&#039;X,Y,Z-Location&#039;s&#039;&#039; parematers the represent the clients location.&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;Custom-Message&#039;&#039; is by default \&amp;quot;\&amp;quot; (empty), otherwise it&#039;s the message that gets printed in the chat area.&lt;br /&gt;
:if &#039;&#039;VoiceOnly&#039;&#039; is 0 it will print a chat message on behalf of &#039;&#039;ClientNum&#039;&#039; contaning the message&amp;lt;br&amp;gt;&lt;br /&gt;
:if &#039;&#039;VoiceOnly&#039;&#039; is 1 it will only do the sound but not the message&lt;br /&gt;
&lt;br /&gt;
===Fireteam Voice Chat===&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;vtchat&#039;&#039;&#039; &#039;&#039;VoiceOnly&#039;&#039; &#039;&#039;ClientNum&#039;&#039; 50 &#039;&#039;Fireteam-String&#039;&#039; &#039;&#039;Vsay-Number&#039;&#039; &#039;&#039;X-Location&#039;&#039; &#039;&#039;Y-Location&#039;&#039; &#039;&#039;Z-Location&#039;&#039; \&amp;quot;&#039;&#039;Custom-Message&#039;&#039;\&amp;quot;&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;vchat&#039;&#039;&#039; will team voice chat &#039;&#039;Vsay-String&#039;&#039; on behalf of client &#039;&#039;ClienNum&#039;&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;Vsay-Number&#039;&#039; is by default random, however, it can be set by the player by passing parameters to the vsay command (/vsay &amp;lt;&#039;&#039;Vsay-Number&#039;&#039;&amp;gt; &amp;lt;&#039;&#039;Vsay-String&#039;&#039;&amp;gt;),&amp;lt;br&amp;gt; &#039;&#039;Vsay-Number&#039;&#039; represents the vsay number of Vsay as listed in the .voice files.&amp;lt;br&amp;gt;&lt;br /&gt;
:the &#039;&#039;X,Y,Z-Location&#039;s&#039;&#039; parematers the represent the clients location.&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;Custom-Message&#039;&#039; is by default \&amp;quot;\&amp;quot; (empty), otherwise it&#039;s the message that gets printed in the chat area.&lt;br /&gt;
:if &#039;&#039;VoiceOnly&#039;&#039; is 0 it will print a chat message on behalf of &#039;&#039;ClientNum&#039;&#039; contaning the message&amp;lt;br&amp;gt;&lt;br /&gt;
:if &#039;&#039;VoiceOnly&#039;&#039; is 1 it will only do the sound but not the message&lt;br /&gt;
&lt;br /&gt;
==Fireteam==&lt;br /&gt;
===Application===&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;application&#039;&#039;&#039; &#039;&#039;Number&#039;&#039;&amp;quot;&lt;br /&gt;
:&#039;&#039;&#039;application&#039;&#039;&#039; shows a fireteam invation message to the client.&amp;lt;br&amp;gt;&lt;br /&gt;
:if &#039;&#039;Number&#039;&#039; &amp;gt; -1 - the &amp;quot;accept ... application to join your fireteam&amp;quot; message shows up. In this case &#039;&#039;Number&#039;&#039; is the ClientNum of the applying client.&amp;lt;br&amp;gt;&lt;br /&gt;
:if &#039;&#039;Number&#039;&#039; == -1 - the &amp;quot;your aplication has been submitted&amp;quot; message shows up.&amp;lt;br&amp;gt;&lt;br /&gt;
:if &#039;&#039;Number&#039;&#039; == -2 - the &amp;quot;your aplication failed&amp;quot; message shows up.&amp;lt;br&amp;gt;&lt;br /&gt;
:if &#039;&#039;Number&#039;&#039; == -3 - the &amp;quot;your aplication has been approved&amp;quot; message shows up.&amp;lt;br&amp;gt;&lt;br /&gt;
:if &#039;&#039;Number&#039;&#039; == -4 - the &amp;quot;your aplication reply has been sent&amp;quot; message shows up.&lt;br /&gt;
&lt;br /&gt;
===Proposition===&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;proposition&#039;&#039;&#039; &#039;&#039;Number&#039;&#039; &#039;&#039;Number2&#039;&#039;&amp;quot;&lt;br /&gt;
:&#039;&#039;&#039;proposition&#039;&#039;&#039; shows a fireteam proposition message to the client.&amp;lt;br&amp;gt;&lt;br /&gt;
:if &#039;&#039;Number&#039;&#039; &amp;gt; -1 - the &amp;quot;accept ... proposition to invite ... to your fireteam&amp;quot; message shows up. In this case &#039;&#039;Number&#039;&#039; is the ClientNum of the proposed client, and &#039;&#039;Number2&#039;&#039; is the ClientNum of the proposing player.&amp;lt;br&amp;gt;&lt;br /&gt;
:if &#039;&#039;Number&#039;&#039; == -1 - the &amp;quot;your proposition has been submitted&amp;quot; message shows up.&amp;lt;br&amp;gt;&lt;br /&gt;
:if &#039;&#039;Number&#039;&#039; == -2 - the &amp;quot;your proposition was rejected&amp;quot; message shows up.&amp;lt;br&amp;gt;&lt;br /&gt;
:if &#039;&#039;Number&#039;&#039; == -3 - the &amp;quot;your proposition was accepted&amp;quot; message shows up.&amp;lt;br&amp;gt;&lt;br /&gt;
:if &#039;&#039;Number&#039;&#039; == -4 - the &amp;quot;your proposition reply has been sent&amp;quot; message shows up.&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;Number2&#039;&#039; is an optional paramater only used when &#039;&#039;Number&#039;&#039; &amp;gt; -1.&lt;br /&gt;
&lt;br /&gt;
===Invitation===&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;invitation&#039;&#039;&#039; &#039;&#039;Number&#039;&#039;&amp;quot;&lt;br /&gt;
:&#039;&#039;&#039;invitation&#039;&#039;&#039; shows the fireteam invation message to the client.&amp;lt;br&amp;gt;&lt;br /&gt;
:if &#039;&#039;Number&#039;&#039; &amp;gt; -1 - the &amp;quot;accept .. invitation to join your fireteam&amp;quot; message shows up. In this case &#039;&#039;Number&#039;&#039; is the ClientNum of the applying client.&amp;lt;br&amp;gt;&lt;br /&gt;
:if &#039;&#039;Number&#039;&#039; == -1 - the &amp;quot;your invitation has been submitted&amp;quot; message shows up.&amp;lt;br&amp;gt;&lt;br /&gt;
:if &#039;&#039;Number&#039;&#039; == -2 - the &amp;quot;your invitation rejected&amp;quot; message shows up.&amp;lt;br&amp;gt;&lt;br /&gt;
:if &#039;&#039;Number&#039;&#039; == -3 - the &amp;quot;your invitation was accepted&amp;quot; message shows up.&amp;lt;br&amp;gt;&lt;br /&gt;
:if &#039;&#039;Number&#039;&#039; == -4 - the &amp;quot;your invitation reply has been sent&amp;quot; message shows up.&lt;br /&gt;
&lt;br /&gt;
==Others== &lt;br /&gt;
===Complaining===&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;complaint&#039;&#039;&#039; &#039;&#039;Number&#039;&#039;&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;complaint&#039;&#039;&#039; shows the complaint vote message to the client.&amp;lt;br&amp;gt;&lt;br /&gt;
:if &#039;&#039;Number&#039;&#039; &amp;gt; 1 - the vote shows up. In this case &#039;&#039;Number&#039;&#039; is the ClientNum of the teamkilling player.&amp;lt;br&amp;gt;&lt;br /&gt;
:if &#039;&#039;Number&#039;&#039; == -1 - the &amp;quot;complaint filed&amp;quot; message shows up.&amp;lt;br&amp;gt;&lt;br /&gt;
:if &#039;&#039;Number&#039;&#039; == -2 - the &amp;quot;complaint dismissed&amp;quot; message shows up.&lt;br /&gt;
&lt;br /&gt;
===Spawning===&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;setspawnpt&#039;&#039;&#039; &#039;&#039;Number&#039;&#039;&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;setspawnpt&#039;&#039;&#039; sets the client game selected spawnpoint to number &#039;&#039;number&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===kicking===&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;disconnect&#039;&#039;&#039; \&amp;quot;&#039;&#039;reason&#039;&#039;\&amp;quot;&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;disconnect&#039;&#039;&#039; will disconnect the client it has been send with a &amp;quot;Server disconnected&amp;quot; message&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;reason&#039;&#039; is an optional parameter to show a reason after &amp;quot;Server disconnected&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Configstrings===&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;cs&#039;&#039;&#039; &#039;&#039;Number&#039;&#039; \&amp;quot;&#039;&#039;String&#039;&#039;\&amp;quot;&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
: &#039;&#039;&#039;cs&#039;&#039;&#039; will set the clients configstringnumber &#039;&#039;Number&#039;&#039; to the &#039;&#039;String&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Shaders===&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;remapShader&#039;&#039;&#039; \&amp;quot;&#039;&#039;OldShader&#039;&#039;\&amp;quot; \&amp;quot;&#039;&#039;NewShader&#039;&#039;\&amp;quot; &#039;&#039;#&#039;&#039;&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
: &#039;&#039;&#039;remapShader&#039;&#039;&#039; replaces any texture &#039;&#039;OldShader&#039;&#039; with &#039;&#039;NewShader&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
: &#039;&#039;#&#039;&#039; is the Timeoffset, which currently should be left as &#039;&#039;0&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Category:ETPro]]&lt;br /&gt;
[[Category:ETPro:Mods]]&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=Lua_Mod_API&amp;diff=2627</id>
		<title>Lua Mod API</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=Lua_Mod_API&amp;diff=2627"/>
		<updated>2007-02-07T00:46:41Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: Minor grammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOEDITSECTION__&lt;br /&gt;
[[ETPro]] now supports server-side mods via the [http://www.lua.org/ Lua] scripting language. For more information about Lua, visit the [http://www.lua.org/manual/5.0/ Reference manual], the online edition of the book [http://www.lua.org/pil/ Programming in Lua] or the [http://lua-users.org/wiki/ lua-users wiki].&lt;br /&gt;
&lt;br /&gt;
ETPro has an embedded Lua 5.0.2 interpreter, and if present will load user-defined scripts from the ETPro directory.  It also provides an &amp;quot;et&amp;quot; library of function calls for Lua that allow access to the server engine, and provides callbacks so a server side mod may trigger on specific server events.&lt;br /&gt;
&lt;br /&gt;
The following standard Lua libraries are initialized by default and available to ETPro Lua scripts:&lt;br /&gt;
[http://www.lua.org/manual/5.0/manual.html#5.1 basic], [http://www.lua.org/manual/5.0/manual.html#5.4 table], [http://www.lua.org/manual/5.0/manual.html#5.6 i/o], [http://www.lua.org/manual/5.0/manual.html#5.7 os] (available features vary depending on your OS), [http://www.lua.org/manual/5.0/manual.html#5.3 string], [http://www.lua.org/manual/5.0/manual.html#5.5 math].&lt;br /&gt;
&lt;br /&gt;
A list of ETPro mods can be found [[:Category:ETPro:Mods|here]].&lt;br /&gt;
&lt;br /&gt;
A tutorial about ETPro Lua scripting can be found [[Lua Tutorials|here]].&lt;br /&gt;
&lt;br /&gt;
API requests can be discussed at the [[Talk:Lua_Mod_API|Lua Mod API talk page]].&lt;br /&gt;
&lt;br /&gt;
==client commands==&lt;br /&gt;
===lua_status===&lt;br /&gt;
:lists all currently loaded lua modules.&lt;br /&gt;
:&#039;&#039;lua mods cannot override this client command.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==server commands==&lt;br /&gt;
===lua_status===&lt;br /&gt;
:lists all currently loaded lua modules.&lt;br /&gt;
&lt;br /&gt;
==cvars==&lt;br /&gt;
===lua_modules===&lt;br /&gt;
:(default &amp;quot;&amp;quot;, disabled)&lt;br /&gt;
:space separated list of lua modules for ETPro to load. modules will be run in the order listed.&lt;br /&gt;
&lt;br /&gt;
===lua_allowedmodules===&lt;br /&gt;
:(default &amp;quot;&amp;quot;, disabled)&lt;br /&gt;
:if set, only lua modules with the matching sha1 signatures listed in this cvar will be allowed to load.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:changing either cvar will cause all currently loaded modules to :quit and be unloaded until the next map_restart.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==et library calls==&lt;br /&gt;
&lt;br /&gt;
===modules===&lt;br /&gt;
et.RegisterModname( &#039;&#039;&#039;modname&#039;&#039;&#039; )&lt;br /&gt;
:Registers a descriptive string &#039;&#039;&#039;modname&#039;&#039;&#039; for this mod.&lt;br /&gt;
&#039;&#039;&#039;vmnumber&#039;&#039;&#039; = et.FindSelf()&lt;br /&gt;
:Returns a number indicating the VM slot the current mod is loaded into.&lt;br /&gt;
&#039;&#039;&#039;modname&#039;&#039;&#039;, &#039;&#039;&#039;signature&#039;&#039;&#039; = et.FindMod( &#039;&#039;&#039;vmnumber&#039;&#039;&#039; )&lt;br /&gt;
:Returns the &#039;&#039;&#039;modname&#039;&#039;&#039; and sha1 &#039;&#039;&#039;signature&#039;&#039;&#039; for the mod loaded in the VM slot &#039;&#039;&#039;vmnumber&#039;&#039;&#039;. Returns nil, nil if the VM slot is invalid.&lt;br /&gt;
&#039;&#039;&#039;success&#039;&#039;&#039; = et.IPCSend( &#039;&#039;&#039;vmnumber&#039;&#039;&#039;, &#039;&#039;&#039;message&#039;&#039;&#039; )&lt;br /&gt;
:Sends the string &#039;&#039;&#039;message&#039;&#039;&#039; to the mod in the VM slot indicated by &#039;&#039;&#039;vmnumber&#039;&#039;&#039;. The mod receiving &#039;&#039;&#039;message&#039;&#039;&#039; must have an &#039;&#039;et_IPCReceive()&#039;&#039; callback. If the message is successfully sent, &#039;&#039;&#039;success&#039;&#039;&#039; will be 1. On failure it will be 0.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===printing===&lt;br /&gt;
et.G_Print( &#039;&#039;&#039;text&#039;&#039;&#039; )&lt;br /&gt;
:Prints the string &#039;&#039;&#039;text&#039;&#039;&#039; to the server console.&lt;br /&gt;
et.G_LogPrint( &#039;&#039;&#039;text&#039;&#039;&#039; )&lt;br /&gt;
:Prints the string &#039;&#039;&#039;text&#039;&#039;&#039; to the server console and writes it to the server log.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===argument handling===&lt;br /&gt;
These functions are to be used within the [[#commands|command callback functions]].&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;args&#039;&#039;&#039; = et.ConcatArgs( &#039;&#039;&#039;index&#039;&#039;&#039; )&lt;br /&gt;
:Returns all arguments beginning from &#039;&#039;&#039;index&#039;&#039;&#039; concatenated into a single string &#039;&#039;&#039;args&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;argcount&#039;&#039;&#039; = et.trap_Argc()&lt;br /&gt;
:Returns a number indicating the number of command line arguments in the command buffer.&lt;br /&gt;
&#039;&#039;&#039;arg&#039;&#039;&#039; = et.trap_Argv( &#039;&#039;&#039;argnum&#039;&#039;&#039; )&lt;br /&gt;
:Returns the contents of the command line argument &#039;&#039;&#039;argnum&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===cvars===&lt;br /&gt;
&#039;&#039;&#039;cvarvalue&#039;&#039;&#039; = et.trap_Cvar_Get( &#039;&#039;&#039;cvarname&#039;&#039;&#039; )&lt;br /&gt;
:Returns the value of the cvar &#039;&#039;&#039;cvarname&#039;&#039;&#039; as a string. If there is no cvar named &#039;&#039;&#039;cvarname&#039;&#039;&#039;, returns a zero length string. &lt;br /&gt;
et.trap_Cvar_Set( &#039;&#039;&#039;cvarname&#039;&#039;&#039;, &#039;&#039;&#039;cvarvalue&#039;&#039;&#039; )&lt;br /&gt;
:Sets the cvar &#039;&#039;&#039;cvarname&#039;&#039;&#039; to &#039;&#039;&#039;cvarvalue&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===configstrings===&lt;br /&gt;
&#039;&#039;&#039;configstringvalue&#039;&#039;&#039; = et.trap_GetConfigstring( &#039;&#039;&#039;index&#039;&#039;&#039; )&lt;br /&gt;
:Returns the string &#039;&#039;&#039;configstringvalue&#039;&#039;&#039; containing the contents of the configstring &#039;&#039;&#039;index&#039;&#039;&#039;&lt;br /&gt;
et.trap_SetConfigstring( &#039;&#039;&#039;index&#039;&#039;&#039;, &#039;&#039;&#039;configstringvalue&#039;&#039;&#039; )&lt;br /&gt;
:Sets the configstring &#039;&#039;&#039;index&#039;&#039;&#039; to the string &#039;&#039;&#039;configstringvalue&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===server===&lt;br /&gt;
et.trap_SendConsoleCommand( &#039;&#039;&#039;when&#039;&#039;&#039;, &#039;&#039;&#039;command&#039;&#039;&#039; )&lt;br /&gt;
:Sends the command &#039;&#039;&#039;command&#039;&#039;&#039; to the server console, to be executed &#039;&#039;&#039;when&#039;&#039;&#039; (see et.EXEC_* constants)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===clients===&lt;br /&gt;
et.trap_DropClient( &#039;&#039;&#039;clientnum&#039;&#039;&#039;, &#039;&#039;&#039;reason&#039;&#039;&#039;, &#039;&#039;&#039;ban_time&#039;&#039;&#039; )&lt;br /&gt;
:Disconnects &#039;&#039;&#039;clientnum&#039;&#039;&#039; from the server, with descriptive string &#039;&#039;&#039;reason&#039;&#039;&#039; reported to clients. &#039;&#039;&#039;ban_time&#039;&#039;&#039; is the time in seconds to ban the client from the server. &#039;&#039;&#039;ban_time&#039;&#039;&#039; is optional and may be entirely omitted, in which case the ban time defaults to the cvar &#039;&#039;b_defaultbantime&#039;&#039;&lt;br /&gt;
et.trap_SendServerCommand( &#039;&#039;&#039;clientnum&#039;&#039;&#039;, &#039;&#039;&#039;[[SendServerCommand|command]]&#039;&#039;&#039; )&lt;br /&gt;
:Sends the command &#039;&#039;&#039;[[SendServerCommand|command]]&#039;&#039;&#039; to the client &#039;&#039;&#039;clientnum&#039;&#039;&#039;. If &#039;&#039;&#039;clientnum&#039;&#039;&#039; is -1, the &#039;&#039;&#039;[[SendServerCommand|command]]&#039;&#039;&#039; is broadcast to all connected clients.&lt;br /&gt;
et.G_Say( &#039;&#039;&#039;clientNum&#039;&#039;&#039;, &#039;&#039;&#039;mode&#039;&#039;&#039;, &#039;&#039;&#039;text&#039;&#039;&#039; )&lt;br /&gt;
:Sends a chat command on behalf of client &#039;&#039;&#039;clientNum&#039;&#039;&#039; with the mode &#039;&#039;&#039;mode&#039;&#039;&#039; (see et.SAY_* constants) and chat text &#039;&#039;&#039;text&#039;&#039;&#039;.&lt;br /&gt;
et.ClientUserinfoChanged( &#039;&#039;&#039;clientNum&#039;&#039;&#039; )&lt;br /&gt;
:Loads the new [[Userinfo]] of &#039;&#039;&#039;clientNum&#039;&#039;&#039; and stores it in the configstring and client variables&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===userinfo===&lt;br /&gt;
&#039;&#039;&#039;userinfo&#039;&#039;&#039; = et.trap_GetUserinfo( &#039;&#039;&#039;clientnum&#039;&#039;&#039; )&lt;br /&gt;
:Returns the contents of the [[Userinfo]] string for the client &#039;&#039;&#039;clientnum&#039;&#039;&#039;&lt;br /&gt;
et.trap_SetUserinfo( &#039;&#039;&#039;clientnum&#039;&#039;&#039;, &#039;&#039;&#039;userinfo&#039;&#039;&#039; )&lt;br /&gt;
:Sets the [[Userinfo]] string for the client &#039;&#039;&#039;clientnum&#039;&#039;&#039; to &#039;&#039;&#039;userinfo&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===string utility functions===&lt;br /&gt;
&#039;&#039;&#039;infostring&#039;&#039;&#039; = et.Info_RemoveKey( &#039;&#039;&#039;infostring&#039;&#039;&#039;, &#039;&#039;&#039;key&#039;&#039;&#039; )&lt;br /&gt;
:Removes key &#039;&#039;&#039;key&#039;&#039;&#039; from infostring &#039;&#039;&#039;infostring&#039;&#039;&#039; and returns the modified infostring.&lt;br /&gt;
&#039;&#039;&#039;infostring&#039;&#039;&#039; = et.Info_SetValueForKey( &#039;&#039;&#039;infostring&#039;&#039;&#039;, &#039;&#039;&#039;key&#039;&#039;&#039;, &#039;&#039;&#039;value&#039;&#039;&#039; )&lt;br /&gt;
:Sets the key &#039;&#039;&#039;key&#039;&#039;&#039; in the infostring &#039;&#039;&#039;infostring&#039;&#039;&#039; to &#039;&#039;&#039;value&#039;&#039;&#039; and returns the modified infostring. If &#039;&#039;&#039;value&#039;&#039;&#039; is an empty string, &#039;&#039;&#039;key&#039;&#039;&#039; is removed from the string. &lt;br /&gt;
&#039;&#039;&#039;keyvalue&#039;&#039;&#039; = et.Info_ValueForKey( &#039;&#039;&#039;infostring&#039;&#039;&#039;, &#039;&#039;&#039;key&#039;&#039;&#039; )&lt;br /&gt;
:Returns the value of the key &#039;&#039;&#039;key&#039;&#039;&#039; in the infostring &#039;&#039;&#039;infostring&#039;&#039;&#039;. If &#039;&#039;&#039;key&#039;&#039;&#039; is not present in the string, an empty string is returned.&lt;br /&gt;
&#039;&#039;&#039;cleanstring&#039;&#039;&#039; = et.Q_CleanStr( &#039;&#039;&#039;string&#039;&#039;&#039; )&lt;br /&gt;
:Returns &#039;&#039;&#039;string&#039;&#039;&#039; stripped of all color codes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ET filesystem===&lt;br /&gt;
&#039;&#039;&#039;fd&#039;&#039;&#039;, &#039;&#039;&#039;len&#039;&#039;&#039; = et.trap_FS_FOpenFile( &#039;&#039;&#039;filename&#039;&#039;&#039;, &#039;&#039;&#039;mode&#039;&#039;&#039; )&lt;br /&gt;
:Attempts to open the file &#039;&#039;&#039;filename&#039;&#039;&#039; with the access mode &#039;&#039;&#039;mode&#039;&#039;&#039; (see et.FS_ constants). Returns the filedescriptor &#039;&#039;&#039;fd&#039;&#039;&#039; and file length &#039;&#039;&#039;len&#039;&#039;&#039;. On error, &#039;&#039;&#039;len&#039;&#039;&#039; returns -1.&lt;br /&gt;
&#039;&#039;&#039;filedata&#039;&#039;&#039; = et.trap_FS_Read( fd, count )&lt;br /&gt;
:Reads &#039;&#039;&#039;count&#039;&#039;&#039; bytes from filedescriptor &#039;&#039;&#039;fd&#039;&#039;&#039;.&lt;br /&gt;
&#039;&#039;&#039;count&#039;&#039;&#039; = et.trap_FS_Write( &#039;&#039;&#039;filedata&#039;&#039;&#039;, &#039;&#039;&#039;count&#039;&#039;&#039;, &#039;&#039;&#039;fd&#039;&#039;&#039; )&lt;br /&gt;
:Attempts to write &#039;&#039;&#039;count&#039;&#039;&#039; bytes of &#039;&#039;&#039;filedata&#039;&#039;&#039; to filedescriptor &#039;&#039;&#039;fd&#039;&#039;&#039;. Returns number of bytes successfully written.&lt;br /&gt;
et.trap_FS_Rename( &#039;&#039;&#039;oldname&#039;&#039;&#039;, &#039;&#039;&#039;newname&#039;&#039;&#039; )&lt;br /&gt;
:Renames file &#039;&#039;&#039;oldname&#039;&#039;&#039; to &#039;&#039;&#039;newname&#039;&#039;&#039;.&lt;br /&gt;
et.trap_FS_FCloseFile( &#039;&#039;&#039;fd&#039;&#039;&#039; )&lt;br /&gt;
:Closes filedescriptor &#039;&#039;&#039;fd&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===indexes===&lt;br /&gt;
&#039;&#039;&#039;soundindex&#039;&#039;&#039; = et.G_SoundIndex( &#039;&#039;&#039;filename&#039;&#039;&#039; )&lt;br /&gt;
:Returns an index to the soundfile indicated by &#039;&#039;&#039;filename&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;modelindex&#039;&#039;&#039; = et.G_ModelIndex( &#039;&#039;&#039;filename&#039;&#039;&#039; )&lt;br /&gt;
:Returns an index to the model indicated by &#039;&#039;&#039;filename&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===sound===&lt;br /&gt;
et.G_globalSound( &#039;&#039;&#039;sound&#039;&#039;&#039; )&lt;br /&gt;
:Plays the global sound indicated by the filename &#039;&#039;&#039;sound&#039;&#039;&#039;.&lt;br /&gt;
et.G_Sound( &#039;&#039;&#039;entnum&#039;&#039;&#039;, &#039;&#039;&#039;soundindex&#039;&#039;&#039; )&lt;br /&gt;
:Plays the sound &#039;&#039;&#039;soundindex&#039;&#039;&#039; at the location of entity &#039;&#039;&#039;entnum&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===miscellaneous===&lt;br /&gt;
&#039;&#039;&#039;milliseconds&#039;&#039;&#039; = et.trap_Milliseconds()&lt;br /&gt;
:Returns a number indicating the current server time in milliseconds.&lt;br /&gt;
et.G_Damage( &#039;&#039;&#039;target&#039;&#039;&#039;, &#039;&#039;&#039;inflictor&#039;&#039;&#039;, &#039;&#039;&#039;attacker&#039;&#039;&#039;, &#039;&#039;&#039;damage&#039;&#039;&#039;, &#039;&#039;&#039;[[etdamage|dflags]]&#039;&#039;&#039;, &#039;&#039;&#039;[[etdamage|mod]]&#039;&#039;&#039; )&lt;br /&gt;
:Does &#039;&#039;&#039;damage&#039;&#039;&#039; amount of damage on &#039;&#039;&#039;target&#039;&#039;&#039; inflicted by &#039;&#039;&#039;inflictor&#039;&#039;&#039; and cased by &#039;&#039;&#039;attacker&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;&#039;target&#039;&#039;&#039;, &#039;&#039;&#039;inflictor&#039;&#039;&#039;, &#039;&#039;&#039;attacker&#039;&#039;&#039; are entity numbers&lt;br /&gt;
:&#039;&#039;&#039;[[etdamage|dflags]]&#039;&#039;&#039; is a [[Bitmask-cvar|bitflag]] number to decide how the damage is inflickted, see &#039;&#039;&#039;[[etdamage|dflags]]&#039;&#039;&#039; [[etdamage|flaglist]]&lt;br /&gt;
:&#039;&#039;&#039;[[etdamage|mod]]&#039;&#039;&#039; is a number from 0 up to 64 o set the type of damage, see &#039;&#039;&#039;[[etdamage|mod]]&#039;&#039;&#039; [[etdamage|list]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===entities===&lt;br /&gt;
&#039;&#039;&#039;entnum&#039;&#039;&#039; = et.G_Spawn()&lt;br /&gt;
:Spawns a new entity and returns the new entity number.&lt;br /&gt;
&#039;&#039;&#039;entnum&#039;&#039;&#039; = et.G_TempEntity( &#039;&#039;&#039;origin&#039;&#039;&#039;, &#039;&#039;&#039;event&#039;&#039;&#039; )&lt;br /&gt;
:Spawns a new TempEntity of event type &#039;&#039;&#039;event&#039;&#039;&#039; and places it at &#039;&#039;&#039;origin&#039;&#039;&#039; in the world.&lt;br /&gt;
:&#039;&#039;&#039;Warning:&#039;&#039;&#039; up to and including ETPro 3.2.4 the signature of the method is broken and expects four instead of two parameters. To successfully call it, you need to prepend the parameter list with two dummy parameters like et.G_TempEntity( 0, 0, origin, event ). Use this method with care, because in future ETPro versions it will probably be corrected to the one stated above and might break your script.&lt;br /&gt;
et.G_FreeEntity( &#039;&#039;&#039;entnum&#039;&#039;&#039; )&lt;br /&gt;
:Frees the entity &#039;&#039;&#039;entnum&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;spawnval&#039;&#039;&#039; = et.G_GetSpawnVar( &#039;&#039;&#039;entnum&#039;&#039;&#039;, &#039;&#039;&#039;key&#039;&#039;&#039; )&lt;br /&gt;
:Returns the value of spawnvar &#039;&#039;&#039;key&#039;&#039;&#039; for entity &#039;&#039;&#039;entnum&#039;&#039;&#039;&lt;br /&gt;
et.G_SetSpawnVar( &#039;&#039;&#039;entnum&#039;&#039;&#039;, &#039;&#039;&#039;key&#039;&#039;&#039;, &#039;&#039;&#039;value&#039;&#039;&#039; )&lt;br /&gt;
:Sets the spawnvar &#039;&#039;&#039;key&#039;&#039;&#039; to &#039;&#039;&#039;value&#039;&#039;&#039; for entity &#039;&#039;&#039;entnum&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;integer entnum&#039;&#039;&#039; = et.G_SpawnGEntityFromSpawnVars( string spawnvar, string spawnvalue, ... )&lt;br /&gt;
:This function can only be called inside the &#039;&#039;&#039;et_InitGame&#039;&#039;&#039; callback&lt;br /&gt;
et.trap_LinkEntity( &#039;&#039;&#039;entnum&#039;&#039;&#039; )&lt;br /&gt;
:Links the entity &#039;&#039;&#039;entnum&#039;&#039;&#039;&lt;br /&gt;
et.trap_UnlinkEntity( &#039;&#039;&#039;entnum&#039;&#039;&#039; )&lt;br /&gt;
:Unlinks the entity &#039;&#039;&#039;entnum&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;(variable)&#039;&#039;&#039; = et.gentity_get ( &#039;&#039;&#039;entnum&#039;&#039;&#039;, &#039;&#039;&#039;[[Fieldname]]&#039;&#039;&#039; &#039;&#039;,arrayindex&#039;&#039; )&lt;br /&gt;
:Gets the value of &#039;&#039;&#039;[[Fieldname]]&#039;&#039;&#039; from entity &#039;&#039;&#039;entnum&#039;&#039;&#039; out of the g_entity struct. For NULL entities or clients, &#039;&#039;nil&#039;&#039; is returned.&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;arrayindex&#039;&#039; is used to specify which element of an array entity field to get. It is required when accessing array type fields. Entity field array indexes start at 0.&lt;br /&gt;
et.gentity_set( &#039;&#039;&#039;entnum&#039;&#039;&#039;, &#039;&#039;&#039;[[Fieldname]]&#039;&#039;&#039;, &#039;&#039;arrayindex,&#039;&#039; &#039;&#039;&#039;(value)&#039;&#039;&#039; )&lt;br /&gt;
:Sets the value of &#039;&#039;&#039;[[Fieldname]]&#039;&#039;&#039; from entity &#039;&#039;&#039;entnum&#039;&#039;&#039; in the g_entity struct to &#039;&#039;&#039;(value)&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;arrayindex&#039;&#039; is used to specify which element of an array entity field to set.&lt;br /&gt;
et.G_AddEvent( &#039;&#039;&#039;ent&#039;&#039;&#039;, &#039;&#039;&#039;event&#039;&#039;&#039;, &#039;&#039;&#039;eventparm&#039;&#039;&#039;&#039; )&lt;br /&gt;
:Adds event &#039;&#039;&#039;event&#039;&#039;&#039; whit eventparameter &#039;&#039;&#039;eventparm&#039;&#039;&#039;&#039; to entity &#039;&#039;&#039;ent&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==callbacks==&lt;br /&gt;
&lt;br /&gt;
===qagame execution===&lt;br /&gt;
et_InitGame( &#039;&#039;&#039;levelTime&#039;&#039;&#039;, &#039;&#039;&#039;randomSeed&#039;&#039;&#039;, &#039;&#039;&#039;restart&#039;&#039;&#039; )&lt;br /&gt;
:Called when qagame initializes. &#039;&#039;&#039;levelTime&#039;&#039;&#039; is the current level time in milliseconds. &#039;&#039;&#039;randomSeed&#039;&#039;&#039; is a number that can be used to seed random number generators. &#039;&#039;&#039;restart&#039;&#039;&#039; indicates if et_InitGame() is being called due to a map restart (1) or not (0).&lt;br /&gt;
et_ShutdownGame( &#039;&#039;&#039;restart&#039;&#039;&#039; )&lt;br /&gt;
:Called when qagame shuts down. &#039;&#039;&#039;restart&#039;&#039;&#039; indicates if the shutdown is being called due to a map_restart (1) or not (0).&lt;br /&gt;
et_RunFrame( &#039;&#039;&#039;levelTime&#039;&#039;&#039; )&lt;br /&gt;
:Called when qagame runs a server frame. &#039;&#039;&#039;levelTime&#039;&#039;&#039; is the current level time in milliseconds.&lt;br /&gt;
et_Quit()&lt;br /&gt;
:Called when ETPro unloads the mod. The mod should close all open filedescriptors and perform all cleanup.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===client management===&lt;br /&gt;
&#039;&#039;&#039;rejectreason&#039;&#039;&#039; = et_ClientConnect( &#039;&#039;&#039;clientNum&#039;&#039;&#039;, &#039;&#039;&#039;firstTime&#039;&#039;&#039;, &#039;&#039;&#039;isBot&#039;&#039;&#039; )&lt;br /&gt;
:Called when a client attempts to connect to the server. &#039;&#039;&#039;clientNum&#039;&#039;&#039; is the client slot id, &#039;&#039;&#039;firstTime&#039;&#039;&#039; indicates if this is a new connection (1) or a reconnection (0). &#039;&#039;&#039;isBot&#039;&#039;&#039; indicates if the client is a bot (1) or not (0). If the mod accepts the connection, it should return nil. Otherwise, the mod should return a string describing the reason the client connection was rejected.&lt;br /&gt;
et_ClientDisconnect( &#039;&#039;&#039;clientNum&#039;&#039;&#039; )&lt;br /&gt;
:Called when a client disconnects. &#039;&#039;&#039;clientNum&#039;&#039;&#039; is the client slot id.&lt;br /&gt;
et_ClientBegin( &#039;&#039;&#039;clientNum&#039;&#039;&#039; )&lt;br /&gt;
:Called when a client begins (becomes active, and enters the gameworld). &#039;&#039;&#039;clientNum&#039;&#039;&#039; is the client slot id.&lt;br /&gt;
et_ClientUserinfoChanged( &#039;&#039;&#039;clientNum&#039;&#039;&#039; )&lt;br /&gt;
:Called when a client&#039;s [[Userinfo]] string has changed. &#039;&#039;&#039;clientNum&#039;&#039;&#039; is the client slot id.&lt;br /&gt;
et_ClientSpawn( &#039;&#039;&#039;clientNum&#039;&#039;&#039;, &#039;&#039;&#039;revived&#039;&#039;&#039; )&lt;br /&gt;
:Called when a client is spawned. &#039;&#039;&#039;clientNum&#039;&#039;&#039; is the client slot id. &#039;&#039;&#039;revived&#039;&#039;&#039; is 1 if the client was spawned by beeying revived.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===commands===&lt;br /&gt;
&#039;&#039;&#039;intercepted&#039;&#039;&#039; = et_ClientCommand( &#039;&#039;&#039;clientNum&#039;&#039;&#039;, &#039;&#039;&#039;command&#039;&#039;&#039; )&lt;br /&gt;
:Called when a command is received from a client. &#039;&#039;&#039;clientNum&#039;&#039;&#039; is the client slot id. &#039;&#039;&#039;command&#039;&#039;&#039; is the command. The mod should return 1 if the command was intercepted by the mod, and 0 if the command was ignored by the mod and should be passed through to the server (and other mods in the chain).&lt;br /&gt;
:The actual command can be accessed through the [[#argument_handling|argument handling]] functions, as seen in the [[ETPro:Lua Sample Code]].&lt;br /&gt;
&#039;&#039;&#039;intercepted&#039;&#039;&#039; = et_ConsoleCommand()&lt;br /&gt;
:Called when a command is entered on the server console. The mod should return 1 if the command was intercepted by the mod, and 0 if the command was ignored by the mod and should be passed through to the server (and other mods in the chain).&lt;br /&gt;
:The actual command can be accessed through the [[#argument_handling|argument handling]] functions, as seen in the [[ETPro:Lua Sample Code]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===xp===&lt;br /&gt;
et_UpgradeSkill( &#039;&#039;&#039;cno&#039;&#039;&#039;, &#039;&#039;&#039;skill&#039;&#039;&#039; )&lt;br /&gt;
:Called when client on slot &#039;&#039;&#039;cno&#039;&#039;&#039; gets an upgrade on skill &#039;&#039;&#039;skill&#039;&#039;&#039;. Return -1 to override (abort) the qagame function, anything else to &amp;quot;passthrough&amp;quot;. Callback may modify skills (or do anything else it wants) during passthrough. &lt;br /&gt;
et_SetPlayerSkill( &#039;&#039;&#039;cno&#039;&#039;&#039;, &#039;&#039;&#039;skill&#039;&#039;&#039; )&lt;br /&gt;
:Called when clients (on slot &#039;&#039;&#039;cno&#039;&#039;&#039;) skill level &#039;&#039;&#039;skill&#039;&#039;&#039; is set. Return -1 to override (abort) the qagame function, anything else to &amp;quot;passthrough&amp;quot;. Callback may modify skills (or do anything else it wants) during passthrough.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===miscellaneous===&lt;br /&gt;
et_IPCReceive( &#039;&#039;&#039;vmnumber&#039;&#039;&#039;, &#039;&#039;&#039;message&#039;&#039;&#039; )&lt;br /&gt;
:Called when another mod sends an et.IPCSend() message to this mod. &#039;&#039;&#039;vmnumber&#039;&#039;&#039; is the VM slot number of the sender, and &#039;&#039;&#039;message&#039;&#039;&#039; is the message.&lt;br /&gt;
et_Print( &#039;&#039;&#039;text&#039;&#039;&#039; )&lt;br /&gt;
:Called whenever the server or qagame prints a string to the console.&lt;br /&gt;
et_Obituary( &#039;&#039;&#039;victim&#039;&#039;&#039;, &#039;&#039;&#039;killer&#039;&#039;&#039;, &#039;&#039;&#039;meansOfDeath&#039;&#039;&#039; )&lt;br /&gt;
:Called whenever a player is killed.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==predefined constants==&lt;br /&gt;
et.EXEC_NOW&amp;lt;br&amp;gt;&lt;br /&gt;
et.EXEC_INSERT&amp;lt;br&amp;gt;&lt;br /&gt;
et.EXEC_APPEND&amp;lt;br&amp;gt;&lt;br /&gt;
et.FS_READ&amp;lt;br&amp;gt;&lt;br /&gt;
et.FS_WRITE&amp;lt;br&amp;gt;&lt;br /&gt;
et.FS_APPEND&amp;lt;br&amp;gt;&lt;br /&gt;
et.FS_APPEND_SYNC&amp;lt;br&amp;gt;&lt;br /&gt;
et.SAY_ALL&amp;lt;br&amp;gt;&lt;br /&gt;
et.SAY_TEAM&amp;lt;br&amp;gt;&lt;br /&gt;
et.SAY_BUDDY&amp;lt;br&amp;gt;&lt;br /&gt;
et.SAY_TEAMNL&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
et.HOSTARCH&lt;br /&gt;
:set to WIN32 or UNIX depending on the host architecture qagame is running on.&lt;br /&gt;
LUA_PATH&lt;br /&gt;
:set to fs_homepath/fs_game/?.lua in order to ease use of the [http://www.lua.org/pil/8.1.html require] function.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==configs==&lt;br /&gt;
If a config is loaded, all modules are shutdown and reloaded. If a &#039;&#039;certified&#039;&#039; config is loaded, all modules are shutdown and reloaded, and additionally the following functions are disabled: &#039;&#039;&#039;require()&#039;&#039;&#039;, &#039;&#039;&#039;loadfile()&#039;&#039;&#039;, &#039;&#039;&#039;loadlib()&#039;&#039;&#039;, &#039;&#039;&#039;loadstring()&#039;&#039;&#039;, &#039;&#039;&#039;dofile()&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==caveats==&lt;br /&gt;
Like qagame, lua modules are unloaded and reloaded on map_restart and map changes. This means that all global variables and other information is lost. Mods may choose to store persistent data in cvars or external files.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
&lt;br /&gt;
Q: OMG I hate the libary prefix et.* on everything!!11!1oneone&amp;lt;br&amp;gt;&lt;br /&gt;
A: table.foreach(et, function (func, value) _G[func] = value; end)&lt;br /&gt;
&lt;br /&gt;
Q: How do a reload my lua file without restarting the whole server?&amp;lt;br&amp;gt;&lt;br /&gt;
A: Change maps using map_restart or reset_match&lt;br /&gt;
&lt;br /&gt;
Q: Can I see some sample code?&amp;lt;br&amp;gt;&lt;br /&gt;
A: [[ETPro:Lua Sample Code|Lua sample code]]&lt;br /&gt;
&lt;br /&gt;
Q: Is there a list of [[ETPro]] Lua mods?&amp;lt;br&amp;gt;&lt;br /&gt;
A: Yes, [[:Category:ETPro:Mods|here]].&lt;br /&gt;
&lt;br /&gt;
Q: OMG my mod doesn&#039;t work!&amp;lt;br&amp;gt;&lt;br /&gt;
A: Make sure you added your mod&#039;s filename to the lua_modules cvar (e.g. set lua_modules mymod.lua).&lt;br /&gt;
&lt;br /&gt;
Q: OMG why has et_ClientSay been removed?&amp;lt;br&amp;gt;&lt;br /&gt;
A: That&#039;s a secret but, to keep the function as it was, just add the following code to your et_ClientCommand() function&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;	-- et_ClientSay had to be removed in order to intercept all commands &lt;br /&gt;
	-- so here&#039;s a wrapper for that&lt;br /&gt;
		arg0 = et.trap_Argv(0) -- get the main command&lt;br /&gt;
		&lt;br /&gt;
		if arg0 == &amp;quot;say&amp;quot; then&lt;br /&gt;
			return et_ClientSay( clientNum, et.SAY_ALL, et.ConcatArgs(1))&lt;br /&gt;
		elseif arg0 == &amp;quot;say_team&amp;quot; then&lt;br /&gt;
			return et_ClientSay( clientNum, et.SAY_TEAM, et.ConcatArgs(1))&lt;br /&gt;
		elseif arg0 == &amp;quot;say_buddy&amp;quot; then&lt;br /&gt;
			return et_ClientSay( clientNum, et.SAY_BUDDY, et.ConcatArgs(1))&lt;br /&gt;
		elseif arg0 == &amp;quot;say_teamnl&amp;quot; then&lt;br /&gt;
			return et_ClientSay( clientNum, et.SAY_TEAMNL, et.ConcatArgs(1))&lt;br /&gt;
		end&lt;br /&gt;
	-- et_ClientSay wrapper end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Lua]]&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=Network_Diagnostics&amp;diff=2621</id>
		<title>Network Diagnostics</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=Network_Diagnostics&amp;diff=2621"/>
		<updated>2007-02-01T18:25:14Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: Wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you are having lag in game, seeing yellow, red or excessive spikes in the [[Lagometer]], experiencing long times in awaiting gamestate, or seeing [[AntiWarp]] triggered a lot in etpro, you can do some basic testing on your connection with &amp;lt;tt&amp;gt;ping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;tracert&amp;lt;/tt&amp;gt;. The following examples use windows command names and options, linux is slightly different.&lt;br /&gt;
&lt;br /&gt;
First, tracert to somewhere (don&#039;t really matter, use the IP of an ET server you like to play on, or your ISPs website or google) like this, in a command prompt:&lt;br /&gt;
  tracert www.google.com&lt;br /&gt;
The output will be something like this:&lt;br /&gt;
  Tracing route to www.l.google.com [66.102.7.99]&lt;br /&gt;
  over a maximum of 30 hops:&lt;br /&gt;
    1    &amp;lt;1 ms    &amp;lt;1 ms    &amp;lt;1 ms  192.168.1.1 [192.168.1.1]&lt;br /&gt;
    2    14 ms    13 ms    13 ms  rdns.of.your.isp.gateway [1.2.3.4]&lt;br /&gt;
    3    13 ms    14 ms    13 ms  rdns.of.some.other.router[5.6.7.8]&lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
The first hop (with the &amp;lt; 1ms ping times) either your router or modem. The next hop is usually the far end of your broadband line. If thing ping time of the second hop is also very low (&amp;lt;10ms) it is your modem, and the hop after that is the other end. Don&#039;t be alarmed if some of the later hops drop packets in tracert, as a fair number of routers drop these, even when they forward normal traffic without problems. In general, if one hop drops all packets, but the subsequent hops still work, it just means that particular device doesn&#039;t respond to tracert packets.&lt;br /&gt;
&lt;br /&gt;
To test your connection between you and your router, use:&lt;br /&gt;
  ping -n 100 -l 1000 &amp;lt;ip.of.your.router&amp;gt;&lt;br /&gt;
The -n 100 means to use 100 packets, and the -l 1000 means use 1000 byte packets (that&#039;s a lower case L). Larger packets are far more likely to expose line problems.&lt;br /&gt;
&lt;br /&gt;
This should give zero packet loss and &amp;lt;10ms pings. If it gives you packet loss, either your router sucks, your Ethernet cable is bad, or perhaps some setting for your Ethernet card is incompatible.&lt;br /&gt;
&lt;br /&gt;
To test your line (the connection from your house to your ISPs equipment), find the IP of the first hop that isn&#039;t your router or modem (i.e. the first one that has a &amp;gt;10ms time in the tracert output), and ping it with the same command. Any packet loss most likely indicates a problem (unless its 100%, in which case, it is likely that router is simply ignoring your pings). The pings times should be fairly steady if there is no other traffic on the line, typically in the range of 20-80 ms for DSL or cable with this packet size. If there is any significant packet loss, chances are you need to complain to your ISP. If there is significant variation (+/- 20% or more) and your line does not have other traffic on it, that may also indicate a problem.&lt;br /&gt;
&lt;br /&gt;
You can move on down the IPs listed in the tracert using the same method, if you want, however, if the problem is in a router that is more than a couple hops away, chances are it is a temporary issue, and you can&#039;t do much to get it fixed.&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=MullET&amp;diff=2619</id>
		<title>MullET</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=MullET&amp;diff=2619"/>
		<updated>2007-01-30T22:19:15Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
[[MullET]] is a parody modification being created by Rain from the [[ETPro]] team and various members of the community.  It has a planned release date of around April or May, 2008.  (Vote for |Rain| for president!)&lt;br /&gt;
&lt;br /&gt;
== Planned Features ==&lt;br /&gt;
===New ===&lt;br /&gt;
* Mantle system for realistic fence-jumping action!&lt;br /&gt;
* Maps with realistic hurricane damage&lt;br /&gt;
* Weaponslot for a variety of new map-spawned weapons&lt;br /&gt;
** Duct tape&lt;br /&gt;
** 2x4&lt;br /&gt;
** Slingshot&lt;br /&gt;
** Poltergeist Grenades - A very rare weapon that can go through walls.  Looks like a white egg.&lt;br /&gt;
** Rotten Eggs - Does 1HP damage per second to anyone in a close proximity.&lt;br /&gt;
** Guillotine Arrow - Slices heads off small animals&lt;br /&gt;
* Shotguns&lt;br /&gt;
* Drivable Camaro for vehicle-based gameplay&lt;br /&gt;
* Great new vsays featuring the voice of Ben Winslow&lt;br /&gt;
* Rabbits (and maybe dogs and birds)&lt;br /&gt;
* Additional Gametypes&lt;br /&gt;
* Farm animals poop spawn points&lt;br /&gt;
* MulletCam \ő/&lt;br /&gt;
* Radios (Both in-car and others) can be set to stream OGG audio from an Internet radio station.&lt;br /&gt;
===Changed ===&lt;br /&gt;
* Allied and Axis teams are now Mullets and Rednecks&lt;br /&gt;
* Camaro turbo-charger unit instead of command posts (Engineers required to assemble)&lt;br /&gt;
* Cinderblocks for disabling enemy Camaro units&lt;br /&gt;
* Artillery is replaced by tornados&lt;br /&gt;
===More ===&lt;br /&gt;
*http://ettw.net/index/cowbell.png&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=Current_events&amp;diff=2567</id>
		<title>Current events</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=Current_events&amp;diff=2567"/>
		<updated>2006-12-03T21:32:04Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Phase I: Finish coding ETPro&lt;br /&gt;
&lt;br /&gt;
Phase II: Finish the wiki for ETPro&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#070;&amp;quot;&amp;gt;Phase III: There is no Phase III. http://bani.anime.net/banimod/forums/images/smiles/checkmark.gif&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Phase IV: Code BayonET&lt;br /&gt;
&lt;br /&gt;
Phase V: Finish the wiki for BayonET&lt;br /&gt;
&lt;br /&gt;
Phase VI: Code MullET&lt;br /&gt;
&lt;br /&gt;
Phase VII: Finish the wiki for MullET&lt;br /&gt;
&lt;br /&gt;
Phase VIII: A shrubbery.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#070;&amp;quot;&amp;gt;Phase IX: Sell ETPro T-Shirts http://bani.anime.net/banimod/forums/images/smiles/checkmark.gif&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Phase X: Make a moderate profit to support support costs&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=MediaWiki:Monobook.css&amp;diff=2553</id>
		<title>MediaWiki:Monobook.css</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=MediaWiki:Monobook.css&amp;diff=2553"/>
		<updated>2006-11-19T16:01:58Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.new {&lt;br /&gt;
	text-decoration: line-through;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.new:active { border: 1px solid #CC2200; }&lt;br /&gt;
&lt;br /&gt;
pre { overflow: auto; }&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=Template_talk:Cvars&amp;diff=2542</id>
		<title>Template talk:Cvars</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=Template_talk:Cvars&amp;diff=2542"/>
		<updated>2006-11-08T19:23:40Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It&#039;d probably be best to make a simple template for the cvar overview lists, but the mediawiki help pages are a bit vague on what&#039;s needed to make ones of varying length.&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=User:WeblionX&amp;diff=2539</id>
		<title>User:WeblionX</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=User:WeblionX&amp;diff=2539"/>
		<updated>2006-11-06T22:38:36Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;overflow:hidden;width:100%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:20em;float:left;border-right:1px dotted #555;margin:1em;font-size:1.5em&amp;quot;&amp;gt;&lt;br /&gt;
[[http://www.weblionx.org http://www.weblionx.org]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.surfacegroup.org/ Surface: The Sequel]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://weblionx.deviantart.com/ DA]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.aetheraudio.info/ Æther Audio]]&lt;br /&gt;
&amp;lt;div title=&amp;quot;-- Server Currently Unavailable --&amp;quot; style=&amp;quot;border:1px dashed #229;margin-left:.5em;margin-right:.5em;padding-left:.5em;&amp;quot;&amp;gt;&lt;br /&gt;
[Tseaby]&amp;lt;br&amp;gt;&lt;br /&gt;
[WLXAM]&amp;lt;br&amp;gt;&lt;br /&gt;
[WLXTV]&amp;lt;br&amp;gt;&lt;br /&gt;
[TCOTSE]&amp;lt;br&amp;gt;&lt;br /&gt;
[WAE]&amp;lt;br&amp;gt;&lt;br /&gt;
[weblionx.no-ip.org]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:20em;float:left;border-left:1px dotted #555;margin:1em;padding-left:.5em;font-size:1.5em&amp;quot;&amp;gt;&lt;br /&gt;
[[irc://irc.quakenet.org:6667/wwgn]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[irc://irc.freenode.net:6667/etpro]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.homestarrunner.com/500cheats.html 500 Cheats]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.inkscape.org/download.php Vector Graphics Editing]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.gimp.org Raster Graphics Editing]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.quotationspage.com/quotes/Douglas_Adams Wisdom]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.shareaza.com OpenSource P2P]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://scoop.opennic.unrated.net/?op=special;page=faq#what OpenNIC DNS System]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[irc://irc.freenode.net:6667/mullet]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.wolfensteinx.com/surface/ Surface]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
http://www.shitloadof.info/index/wilfi.png&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=User:WeblionX&amp;diff=2538</id>
		<title>User:WeblionX</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=User:WeblionX&amp;diff=2538"/>
		<updated>2006-11-03T22:15:51Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;overflow:hidden;width:100%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:20em;float:left;border-right:1px dotted #555;margin:1em;font-size:1.5em&amp;quot;&amp;gt;&lt;br /&gt;
[[http://www.weblionx.org http://www.weblionx.org]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://weblionx.no-ip.org http://weblionx.no-ip.org]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.tseaby.com:500 http://www.tseaby.com]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://wlxam.tseaby.com:500 WLXAM]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://wlxtv.tseaby.com:500 WLXTV]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://weblionx.deviantart.com/ DA]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://weblionx.no-ip.org/tcot/tcotse/ TCOTSE]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://ae.tseaby.com:500 WAE]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://surface.tseaby.com:500/ Surface: The Sequel]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:20em;float:left;border-left:1px dotted #555;margin:1em;padding-left:.5em;font-size:1.5em&amp;quot;&amp;gt;&lt;br /&gt;
[[irc://irc.quakenet.org:6667/wwgn]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[irc://irc.freenode.net:6667/etpro]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.homestarrunner.com/500cheats.html 500 Cheats]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.inkscape.org/download.php Vector Graphics Editing]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.gimp.org Raster Graphics Editing]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.quotationspage.com/quotes/Douglas_Adams Wisdom]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.shareaza.com OpenSource P2P]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://scoop.opennic.unrated.net/?op=special;page=faq#what OpenNIC DNS System]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[irc://irc.freenode.net:6667/mullet]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.wolfensteinx.com/surface/ Surface]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
http://www.shitloadof.info/index/wilfi.png&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=ETPro:Pluggable_Config_Files&amp;diff=2532</id>
		<title>ETPro:Pluggable Config Files</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=ETPro:Pluggable_Config_Files&amp;diff=2532"/>
		<updated>2006-10-19T16:16:56Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: Updates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ETPro supports &#039;&#039;&#039;Pluggable Config Files&#039;&#039;&#039;. These files provide servers the use of additional features not available from traditional &amp;lt;tt&amp;gt;.cfg&amp;lt;/tt&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
==Creation and Installation==&lt;br /&gt;
Config files must be located in &amp;lt;tt&amp;gt;etpro/configs&amp;lt;/tt&amp;gt; and their names must end in &amp;lt;tt&amp;gt;.config &amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Config file format==&lt;br /&gt;
The following shows the .config syntax. This is not a complete config, the ... indicates that in a real config many similar commands would follow&lt;br /&gt;
&lt;br /&gt;
 configname &amp;quot;^/foobar^f 6v6&amp;quot;&lt;br /&gt;
 // config for 6v6 foobar league&lt;br /&gt;
 version 1.2.3.4 foobar6v6.version.foobarleague.com &lt;br /&gt;
 init &lt;br /&gt;
 { &lt;br /&gt;
    setl sv_pure 1 &lt;br /&gt;
    setl sv_cheats 0 &lt;br /&gt;
    setl g_gametype 3 &lt;br /&gt;
 ...&lt;br /&gt;
    command &amp;quot;pb_sv_enable&amp;quot; &lt;br /&gt;
    command &amp;quot;pb_sv_kicklen 1&amp;quot; &lt;br /&gt;
    command &amp;quot;pb_sv_cvarempty&amp;quot; &lt;br /&gt;
 ...&lt;br /&gt;
 } &lt;br /&gt;
 map default &lt;br /&gt;
 { &lt;br /&gt;
    set g_userTimeLimit 0 &lt;br /&gt;
    setl g_useralliedrespawntime 0 &lt;br /&gt;
    setl g_useraxisrespawntime 0 &lt;br /&gt;
    setl b_moverscale 1 &lt;br /&gt;
 } &lt;br /&gt;
 map radar &lt;br /&gt;
 { &lt;br /&gt;
    set g_userTimeLimit 12 &lt;br /&gt;
    command &amp;quot;forcecvar r_drawfoliage 0&amp;quot; &lt;br /&gt;
 } &lt;br /&gt;
 ...&lt;br /&gt;
 signature deadbeefdeadbeefdeadbeefdeadbeefdeadbeef&lt;br /&gt;
===Config file details===&lt;br /&gt;
;comments : any text following  // is a comment and is ignored&lt;br /&gt;
&lt;br /&gt;
;version w.x.y.z some.dns.name : ET will check that version matches the IP returned form some.dns.name If it does, ETPro displays the message &amp;quot;config is latest version available&amp;quot; to all players in warmup. &#039;&#039;&#039;not fully implemented&#039;&#039;&#039; - etpro doesn&#039;t currently do the DNS check.&lt;br /&gt;
&lt;br /&gt;
;configname &amp;lt;name&amp;gt; : defines the name of the config. This name is displayed to players in warmup, but is &#039;&#039;&#039;not&#039;&#039;&#039; used to refer to the config in config related commands. The name may contain ET [[Color Codes]]&lt;br /&gt;
&lt;br /&gt;
;init : The init block is executed only once, when the config is loaded by referee or rcon/console. It is never reloaded. &lt;br /&gt;
&lt;br /&gt;
;map &amp;lt;&amp;lt;i&amp;gt;mapname&amp;lt;/i&amp;gt;&amp;gt;|default : The map blocks are loaded on every map_restart. The parameter is the mapname to match to. A parameter of default will execute that block for all maps. map blocks are executed in order from first to last. Generally you want your default block first, and then specific map blocks to override it.&lt;br /&gt;
&lt;br /&gt;
;signature &amp;lt;sig&amp;gt; : provides crypotgraphic signature to verify that that the config is unmodified. ETPro displays the message &amp;quot;config is certified&amp;quot; to all players in warmup. The signature must be generated by the etpro team.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;init&#039;&#039;&#039; and &#039;&#039;&#039;map&#039;&#039;&#039; are followed by a block, delimited by curly braces {}. Each block can contain the following keywords&lt;br /&gt;
&lt;br /&gt;
;set &amp;lt;cvarname&amp;gt; &amp;quot;value&amp;quot; : sets the specified cvar to the specified value.&lt;br /&gt;
;setl &amp;lt;cvarname&amp;gt; &amp;quot;value&amp;quot; : sets the specified cvar to the specified value, and locks it so that it cannot be changed by rcon, forcecvar or other means until the config is unloaded&lt;br /&gt;
;command &amp;quot;command text&amp;quot; : execute &amp;quot;command text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Config related commands==&lt;br /&gt;
;callvote  | ref config &amp;lt;config file name&amp;gt; : set the current config by vote or ref.&lt;br /&gt;
;config &amp;lt;config file name&amp;gt;|none : set the current config from the server console, or unload the current config. Settings set by the config remain in effect, but are no longer locked. Map specific blocks are no longer in effect. &lt;br /&gt;
&#039;&#039;notes&#039;&#039;: &lt;br /&gt;
:*&amp;lt;tt&amp;gt;config none&amp;lt;/tt&amp;gt; can only be used from the console (or rcon) not ref or vote.&lt;br /&gt;
:*you must use the filename of the .config (minus the .config extension), not the &#039;configname&#039; contained in the .config file. The &#039;configname&#039; is a longer (possibly colored etc) descriptive name.&lt;br /&gt;
:*&#039;&#039;&#039;do not&#039;&#039;&#039; try to load a config with &amp;lt;tt&amp;gt;set config &amp;lt;i&amp;gt;&amp;lt;configname&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;/tt&amp;gt;. This will cause the &amp;lt;tt&amp;gt;config&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;ref config&amp;lt;/tt&amp;gt; commands to stop working until the server is restarted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Common pitfalls to watchout for==&lt;br /&gt;
*Any cvar that isn&#039;t a number (vote_allow_config, b_watermark, b_levels_medic etc) must have quotes around it&#039;s value, even if its value is a single character.&lt;br /&gt;
*XP levels lists should not have commas in them (b_levels_medic etc)&lt;br /&gt;
*Putting cvars in groups alphabetically as above makes it a &amp;lt;em&amp;gt;lot&amp;lt;/em&amp;gt; easier to maintain and verify.&lt;br /&gt;
*Make sure there is an extra newline at the end of the file (after the closing &#039;}&#039;)&lt;br /&gt;
*&amp;lt;em&amp;gt;Test your &amp;lt;tt&amp;gt;.config&amp;lt;/tt&amp;gt;&amp;lt;/em&amp;gt; - you can do this simply by putting it in your /etpro/configs directory, and starting ET with &amp;lt;tt&amp;gt;+set dedicated 2 +exec server.cfg&amp;lt;/tt&amp;gt;, then calling the &amp;lt;tt&amp;gt;.config&amp;lt;/tt&amp;gt; with &amp;lt;tt&amp;gt;/config NAME&amp;lt;/tt&amp;gt;. The console will report any major syntax errors in the &amp;lt;tt&amp;gt;.config&amp;lt;/tt&amp;gt;&lt;br /&gt;
*Make sure to include &amp;lt;em&amp;gt;all&amp;lt;/em&amp;gt; relevant gameplay-related cvars.  Most are included in [http://bani.anime.net/banimod/forums/viewtopic.php?t=4558#43204 this list].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Getting Your Configuration Certified==&lt;br /&gt;
The easiest way is to send a private message to Bani using the [http://bani.anime.net/banimod/forums/privmsg.php?folder=sentbox ETPro forums], including a link to the &amp;lt;tt&amp;gt;.config&amp;lt;/tt&amp;gt; hosted on the league&#039;s website.&lt;br /&gt;
&lt;br /&gt;
An alternate way, if the first way fails, is to talk to one of the [[ETPro Developer]]s on [[IRC]].&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Cvar Restrictions]]&lt;br /&gt;
*[[Forced Cvars]]&lt;br /&gt;
*[[WolfWiki:Community_Portal#Leagues / Competitions]] is a good place to find full config file examples.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:ETPro]]&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=Clan&amp;diff=2521</id>
		<title>Clan</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=Clan&amp;diff=2521"/>
		<updated>2006-09-05T01:18:31Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A clan is a group of people that get together to play either for fun or competition in leagues.&lt;br /&gt;
&lt;br /&gt;
Please note that all clan website links should be restricted to user pages.&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=Clans&amp;diff=2519</id>
		<title>Clans</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=Clans&amp;diff=2519"/>
		<updated>2006-09-05T01:17:08Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[Clan]]&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=WolfWiki:Community_Portal&amp;diff=2518</id>
		<title>WolfWiki:Community Portal</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=WolfWiki:Community_Portal&amp;diff=2518"/>
		<updated>2006-09-05T01:16:11Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== News Sites ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.et-center.com/ ET-Center]&lt;br /&gt;
* [http://www.xfire.be/ Xfire.be]&lt;br /&gt;
* [http://www.gamestv.org/ GamesTV.org]&lt;br /&gt;
* [http://www.swertcw.com/ sweRTCW]&lt;br /&gt;
* [http://www.planetwolfenstein.com/ Planet Wolfenstein]&lt;br /&gt;
* [http://www.etnation.co.uk/ ETNation.co.uk]&lt;br /&gt;
* [http://www.splashdamage.com/ SplashDamage.com]&lt;br /&gt;
* [http://www.planetwolfenstein.de/ PlanetWolfenstein.de]&lt;br /&gt;
* [http://www.rtcw.co.uk/ rtcw.co.uk]&lt;br /&gt;
* [http://velocity.lunarpages.com/index.html Unofficial Enemy Territory Strategy Guide]&lt;br /&gt;
* [http://www.planetwolfenstein.com/4newbies/ RTCW 4 Newbies]&lt;br /&gt;
* [http://www.enemy-territory.com Enemy Territory Resource Site]&lt;br /&gt;
* [http://www.geheimgemein.de/kallisti/ Kallisti.et Enemy Territory Fun Community]&lt;br /&gt;
* [http://www.et-scene.de/news.php ET-Scene.de (German)]&lt;br /&gt;
&lt;br /&gt;
== Leagues / Competitions ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.clanbase.com/ Clanbase]&lt;br /&gt;
* [http://www.teamwarfare.com/ TeamWarfare League]&lt;br /&gt;
* [http://www.sta-league.org/ Stronger Than All]&lt;br /&gt;
* [http://www.et-cup.net/ ET-Cup]&lt;br /&gt;
* [http://www.warleagues.com/ Warleagues]&lt;br /&gt;
* [http://www.frenchy-cup.com/ Frenchy-Cup european]&lt;br /&gt;
* [http://et-gather.be/ #et.gather Fast Gaming Cup]&lt;br /&gt;
* [http://www.cgleague.org/ Community Gaming League]&lt;br /&gt;
&lt;br /&gt;
== Mods ==&lt;br /&gt;
&lt;br /&gt;
* [http://stealthy.foolishgames.net/ FalckonET]&lt;br /&gt;
* [http://www.truecombat.com/intro.php TC:Elite]&lt;br /&gt;
* [http://www.omni-bot.com/ Omni-Bot]&lt;br /&gt;
* [http://www.priceofpeace.net/ The Price of Peace]&lt;br /&gt;
* [http://www.etpub.org/news.php ETPub]&lt;br /&gt;
* [http://jaymod.clanfu.org/ Jaymod]&lt;br /&gt;
* [http://www.splashdamage.com/index.php?name=pnPHPbb2&amp;amp;file=viewtopic&amp;amp;t=7522 ET-Mod-Project-List]&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=WolfWiki_talk:Community_Portal&amp;diff=2512</id>
		<title>WolfWiki talk:Community Portal</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=WolfWiki_talk:Community_Portal&amp;diff=2512"/>
		<updated>2006-09-04T16:39:04Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The vote is: &amp;quot;Prohibit clans from being listed on the community portal page&amp;quot;&lt;br /&gt;
Addendum: The number of clans is rather large.  Another page, perhaps?&lt;br /&gt;
:For --[[User:WeblionX|WeblionX]] 09:22, 4 September 2006 (PDT)&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=WolfWiki_talk:Community_Portal&amp;diff=2511</id>
		<title>WolfWiki talk:Community Portal</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=WolfWiki_talk:Community_Portal&amp;diff=2511"/>
		<updated>2006-09-04T16:22:48Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The vote is: &amp;quot;Prohibit clans from being listed on the community portal page&amp;quot;&lt;br /&gt;
:For --[[User:WeblionX|WeblionX]] 09:22, 4 September 2006 (PDT)&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=Talk:Client_cvar_list&amp;diff=2509</id>
		<title>Talk:Client cvar list</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=Talk:Client_cvar_list&amp;diff=2509"/>
		<updated>2006-09-03T16:29:18Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Thanks [[User:The Birdman|The Birdman]] for the work one the server and client cvar and command list. They are very helpful. However, it seems like there is a basic problem. The pitatable doesn&#039;t allow formatting and linking, and some of these things are complex enough to justify having their own page. Some command/cvars are related, and are described on a single page (e.g. [[Physics cvars]]).&lt;br /&gt;
&lt;br /&gt;
Putting each item on it&#039;s own page, and using a wiki catagory to generate a bare list of the names (as in [[:Category:ETPro:Client Cvars]]) isn&#039;t a complete solution either. When trying to find a command or cvar, without knowing exactly what it is, you want to look at a list with brief descriptions of each item, and a link to further information where it is available. Suggestions as to how to cleanly achieve this with wiki are requested.&lt;br /&gt;
&lt;br /&gt;
[[User:ReyalP|ReyalP]] 19:29, 20 March 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
I guess someone with too much time on his hands could convert the tables to wiki tables. Descriptions can be shortened immensely with linking. --[[User:Lagger|Lagger]] 21:01, 27 April 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
And of course that someone would be me. Anyways, as a test, I have converted the first table to a wiki table using [http://de.wikipedia.org/wiki/Wikipedia:Helferlein/EXCEL_Tabellenumwandlung]. The tradeoff is that it&#039;s basically a pain to insert new entries. If it doesn&#039;t work out just revert the changes. --[[User:Lagger|Lagger]] 21:43, 27 April 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
I was inspired by the Q4MAX Wiki [http://www.q4max.com/wiki/index.php/Cvars] to come here and do the same thing for ETPro; I wasn&#039;t aware there was already a list. The anchored links they use seems to do pretty much what ReyalP requested. I&#039;d tackle it if everyone was agreeable, but I&#039;m uncomfortable making major edits without permission; even if it is a Wiki.&lt;br /&gt;
&lt;br /&gt;
Well, try a chunk and use preview.  If it turns out horrible, we can always revert it.&lt;br /&gt;
:--[[User:WeblionX|WeblionX]] 09:29, 3 September 2006 (PDT)&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=Last_Man_Standing&amp;diff=2476</id>
		<title>Last Man Standing</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=Last_Man_Standing&amp;diff=2476"/>
		<updated>2006-08-18T00:50:50Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Last Man Standing ==&lt;br /&gt;
Last Man Standing is enabled by changing &amp;lt;tt&amp;gt;g_gametype&amp;lt;/tt&amp;gt; to 5.  Differences between this and the objective gametype includes:&lt;br /&gt;
* One life to live&lt;br /&gt;
* Number of kills is counted in place of experience points.&lt;br /&gt;
** &#039;&#039;&#039;Note:&#039;&#039;&#039; XP is disabled in LMS mode!&lt;br /&gt;
&lt;br /&gt;
[[Category:ETPro:Server_Cvars]]&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=Last_Man_Standing&amp;diff=2475</id>
		<title>Last Man Standing</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=Last_Man_Standing&amp;diff=2475"/>
		<updated>2006-08-18T00:49:54Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Last Man Standing ==&lt;br /&gt;
Last Man Standing is enabled by changing &amp;lt;tt&amp;gt;g_gametype&amp;lt;/tt&amp;gt; to 5.  Differences between this and the objective gametype includes:&lt;br /&gt;
* One life to live&lt;br /&gt;
* Number of kills is counted in place of experience points.&lt;br /&gt;
&lt;br /&gt;
[[Category:ETPro:Server_Cvars]]&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=Category:ETPro:Server_Cvars&amp;diff=2374</id>
		<title>Category:ETPro:Server Cvars</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=Category:ETPro:Server_Cvars&amp;diff=2374"/>
		<updated>2006-07-05T02:24:44Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: Sorry, but all but one _were_ listed in &amp;quot;Server cvar list&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This category contains all articles with references to server-side cvars.&lt;br /&gt;
Also see [[Server cvar list]].&lt;br /&gt;
&lt;br /&gt;
[[Category:ETPro]]&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=Cursefilter&amp;diff=2373</id>
		<title>Cursefilter</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=Cursefilter&amp;diff=2373"/>
		<updated>2006-07-05T02:22:40Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: Please try to avoid HTML in wiki articles ( &amp;lt;br /&amp;gt; == an extra linebreak)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Admins may enforce filters on public text chats. While the primary use is for keeping cursing under control, some admins have made creative use of the filter to prevent accidental security leaks, such as filtering rcon password typos.&lt;br /&gt;
&lt;br /&gt;
fireteam chats are never filtered, the logic behind this is that players who find someone&#039;s fireteam chats offensive may simply eject the offending player from the fireteam, or leave the fireteam themselves.&lt;br /&gt;
&lt;br /&gt;
Also the filter only works for complete words, without colour codes etc. So you will need to create additional filters for such methods of circumventing the original filter such as &amp;quot;&#039;&#039;s h i t&#039;&#039;&amp;quot;. But this also means that if you create a filter for the word &amp;quot;&#039;&#039;ass&#039;&#039;&amp;quot;, all words that contain &#039;&#039;ass&#039;&#039; would also be filtered such as &amp;quot;Cl&#039;&#039;&#039;ass&#039;&#039;&#039;&amp;quot; and &amp;quot;P&#039;&#039;&#039;ass&#039;&#039;&#039;word&amp;quot; etc.&lt;br /&gt;
&lt;br /&gt;
== How to use: ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;b_cursefilter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This cvar is a space separated list of words the cursefilter will watch for.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;b_cursefilteraction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This cvar set the action to take when a word on the watchlist is found. there are 4 possible settings:&lt;br /&gt;
&amp;lt;pre&amp;gt;0 - do nothing&lt;br /&gt;
1 - silently drop the chat (player sees their chat, but nobody else does)&lt;br /&gt;
2 - censor b_cursefilter words with asterisks&lt;br /&gt;
3 - (default) totally block any chat containing a b_cursefilter word&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:ETPro:Server_Cvars]]&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=ETPro:Server_cvar_list&amp;diff=2372</id>
		<title>ETPro:Server cvar list</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=ETPro:Server_cvar_list&amp;diff=2372"/>
		<updated>2006-07-05T02:18:17Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: A little sprucing up&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &#039;&#039;&#039;ETPro server-side cvars&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
This list contains all ETPro server cvars.&lt;br /&gt;
&lt;br /&gt;
We have tried to include as much information in each description as possible, but some might require a more in-depth explaination.  These have links to their seperate page.&lt;br /&gt;
&lt;br /&gt;
=== Cvars/Commands ===&lt;br /&gt;
&lt;br /&gt;
Most of these cvars are either 0 (disabled) or 1 (enabled).  Those that differ have the values included in the description.  For an explanation of how bitmask cvars work see the [[Bitmask-cvar]] article.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pitatable columns=2 headlines=&amp;quot;Cvar/Command;Description&amp;quot; headerbgcolor=&amp;quot;0b53b4&amp;quot; headerfontcolor=&amp;quot;#FFFFFF&amp;quot; border1=2 border2=1 aligns=&amp;quot;left;left&amp;quot;&amp;gt;&lt;br /&gt;
b_anticheat;Controls ETPro&#039;s anticheat: 0 = Disabled, 1 = Enabled (normal restriction, recommended, default), 2 = More restrictive, 3 = Only allow 100% clean players (&#039;&#039;&#039;not&#039;&#039;&#039; recommended)&lt;br /&gt;
b_antiwarp;Control that prevents players from abusing &#039;warping&#039;, 0 = Disabled, 1 = Enabled (default)&lt;br /&gt;
b_bannerlocation;Bitmask which determines the location of the banners print out area, valid values 0 – 248, you can still use the older values 0 – 4 this auto adds 64 and prints them to the console also.... 0 or 8 = Player chat area, 1 or 16 = Left popup area (not recommended), 2 or 32 = Centred (above the chat area), 3 or 64 = Console only, 4 or 128 = Banner area (top of screen, default, recommended).&lt;br /&gt;
b_banner&#039;&#039;n&#039;&#039;;Use for specifying the text of each banner, b_banner&#039;&#039;n&#039;&#039; defines the text to be displayed for banner number &#039;&#039;n&#039;&#039; in the banner rotation, where &#039;&#039;n&#039;&#039; is an integer between 1 &amp;amp; 999, (e.g. set banner1 &amp;quot;I’m a banner&amp;quot;, set banner2 &amp;quot;I’m another banner&amp;quot;, etc).&lt;br /&gt;
b_banners;Defines the number of rotating server banners, (using the example in b_banner, the banners (&amp;quot;I’m a banner&amp;quot;, &amp;quot;I’m another banner&amp;quot;) you would then set b_banners 2), default 0 disabled, valid values 0 - 999.&lt;br /&gt;
b_bannertime;Defines the duration between banners, default 0, valid values 0 – n, where n is the time in seconds between banners. Values below 30 (in our opinion) would be just spamming, especially if you are printing them in the centre print area, who what’s to play in a server that is bombarding them with banners.&lt;br /&gt;
b_brokenlogtimestamps;Controls whether timestamps are written in a fixed-width 7 character space. This should only be enabled if you are using a log file analyser that requires the broken timestamps in order to function properly, default 0, disabled.&lt;br /&gt;
b_campaignFile;Allows specifying a specific campaign file, so that clients aren&#039;t forced to download every referenced pk3 on the server, default &amp;quot;&amp;quot;, disabled. The syntax is &amp;quot;scripts/xxx.campaign&amp;quot;.&lt;br /&gt;
b_chargetransfer;Controls whether use of mines to transfer charge between players or &#039;store charge&#039; (exploit) is allowed, default 1, enabled (allowed).&lt;br /&gt;
b_cheatkicktime;Duration of auto-kick for cheater detections, (i.e. set b_cheatkicktime n, where n = how long in minutes a player is kicked for), default -1, disabled, if left disabled a report will still be logged in the b_cheatlog, if b_cheatlog is not set, it logs cheat messages to g_logfile.&lt;br /&gt;
b_cheatlog;Defines the name of the cheat log (ETPro anticheat), (i.e. set b_cheatlog &amp;quot;etpro_cheats.log&amp;quot;), default &amp;quot;&amp;quot;, disabled. If b_cheatlog is is not set, it will still log cheat messages to g_logfile.&lt;br /&gt;
b_crashlogpath;Set the cvar b_crashlogpath to the path you want to save crash dump files to, (e.g. on win32 set b_crashlogpath c:\ , on Linux set b_crashlogpath /home/etserver).&lt;br /&gt;
b_crashpopup;On win32 you can enable a gui crash popup window - !!warning!! server will be halted until the crash dialog box is closed –, default 0, disabled.&lt;br /&gt;
b_cursefilter;Determines which words you would like filtered out, but it’s not a good filter as players can spell swear words in many different ways using numbers, letter spacing etc and there are just to many variations to include in this filter. A good use for it, is to help protect your rcon, ref, semiadmin etc passwords, just in case a trusted member or even yourself forget to put the / (slash) before said passwords when signing in. Should you wish to use it, just list all the passwords/forbidden words leaving a space between each word (i.e. set b_cursefilter &amp;quot;pass1 pass2 swear1 swear2 etc&amp;quot;), default &amp;quot;&amp;quot;, disabled.&lt;br /&gt;
b_cursefilteraction;Controls what action to take with filtered words, default 3...... 0 = do nothing (not a wise choice if your wishing to filter certain words out lol), 1 = silently filter the messages (it will still appear to the player as though his/her message was sent), 2 = censor (e.g. &amp;quot;hey, you are a *******&amp;quot;), 3 = filter the message (it isn&#039;t displayed to anybody).&lt;br /&gt;
b_customVoiceChat;Controls whether to allow clients use custom voice chats, but not custom audio sound packs, default 1, enabled.&lt;br /&gt;
&lt;br /&gt;
b_damagexp;Controls whether certain types of XP will be rewarded based on the damage given to other players instead of the number of complete kills. This can help even game play on extremely offence-biased maps, it solves some problems with the original per-kill system (e.g. an air strike takes a player down to 1 health and blasts them into the air, but you receive no XP when they fall to their death.) The damage-based XP system rewards 1 XP per kill and 1 XP for each 50hp of damage inflicted on an enemy player, default 0, disabled.&lt;br /&gt;
b_defaultbantime;Defines the time in seconds for bans without explicitly defined ban time, default 300.&lt;br /&gt;
b_defaultskills;Defines the skill levels granted to new players when they connect, default &amp;quot;&amp;quot;, valid values 0 – 4 for each skill.This variable takes 7 space-separated integers to define each starting skill level in the following order: b_defaultskills &amp;quot;0 0 0 0 0 0 0&amp;quot;,  1st 0 = Battle Sense, 2nd 0 = Explosives and Construction (Engineering), 3rd 0 = First Aid (Medic), 4th 0 = Signals(Field Ops), 5th 0 = Light Weapons, 6th 0 = Heavy Weapons (Soldier), 7th 0 = Military Intelligence and Scoped Weapons (Covert Ops). Example: To give everyone default battle sense 2 and light weapons 3, you would set b_defaultskills &amp;quot;2 0 0 0 3 0 0&amp;quot;, To lock players permanently at those skill levels, you would additionally do b_noskillupgrades 1, See b_noskillupgrades for explanation.&lt;br /&gt;
b_distancefalloff;Controls whether bullets lose some of there hit point damage inflicted over long-range shots, default 1, enabled.&lt;br /&gt;
b_emptyscript;Assign the name of a script to execute when the last player leaves the server, default &amp;quot;&amp;quot;, disabled.&lt;br /&gt;
b_ettv_flags;Bitmask controlling special features for ETTV slave clients, default 3, valid values 0-3...... 0 = Disabled, 1 = Don&#039;t allow ETTV slaves to be kicked, 2 = Automatically give ETTV slaves shoutcaster status, 3 = 1 and 2.&lt;br /&gt;
b_extendedprone;Controls accurate hitbox for proning animations, and makes the prone animation transition through crouching, default 0, disabled.&lt;br /&gt;
b_fallingbugfix;Controls whether to enable/disable a fix in the physics code, which should prevent players from getting stuck on edges and subsequently falling to their death from a small height, default 1, enabled.&lt;br /&gt;
b_fixedphysics;Controls various physics fixes, default 0, valid values 0-2...... 0 = Standard ET physics, 1 = Don&#039;t snap positions (avoiding rounding error), jump velocity set to match etmain&#039;s at b_fixedphysicsfps fps, 2 = Standard ET physics with anti-333fps, doesn&#039;t snap positions above 166fps or change etmain jump velocity.&lt;br /&gt;
b_fixedphysicsfps;Controls jump velocity when using b_fixedphysics 1. Since jump height/velocity is so strongly tied to rounding error in etmain physics, the etmain velocity doesn&#039;t make sense when no longer rounding positions. To compensate, b_fixedphysics 1 will set the player&#039;s jump velocity to the etmain equivalent at whatever frame rate b_fixedphysicsfps is set to, default 125. See also b_fixedphysics.&lt;br /&gt;
b_floodMaxCommands;Controls the client only being able to send the specified number of rate-limited commands per 30 seconds, to protect the server from flooding, default 6.&lt;br /&gt;
b_flushItems;Controls whether dropped items like medic packs lay flush to the ground they land on (same angle), default 0, disabled.&lt;br /&gt;
b_headshot;Bitmask controlling ETPro headshot mode, default 0, valid values 0 – 15......... 0 = disabled, 1 = headshots only, 2 = instagib (see also b_instagibDamage), 4 = clients can only damage other clients, 8 = clients only receive damage from other clients.&lt;br /&gt;
b_helmetprotection;Controls whether damage is reduced for the first headshot received, default 1, enabled.&lt;br /&gt;
b_instagibDamage;Controls the damage done when b_headshot mode&#039;s instagib is enabled, (e.g. set this to 160 so that a player can still be revived after being shot.), default 400.&lt;br /&gt;
b_intermissiontime;Defines the duration of the end-round intermission between maps, in seconds, default 60.&lt;br /&gt;
b_intreadypercent;Determines the percentage of clients needed to press ready to skip intermission countdown and continue to the next map, default 75, valid values 0 – 100.&lt;br /&gt;
b_levels_battlesense;Defines the amount of XP required to reach each level upgrade, 1 - 4 space-separated integers. Omitting values will disable any of the levels higher than those specified. A value of -1 for any skill level also disables that particular level, although the associated skills will still be gained when reaching a higher level, if allowed. Leaving the value blank (&amp;quot;&amp;quot;) causes the default values to be used: &amp;quot;20 50 90 140&amp;quot;. Examples: Disable level 3 and 4 engineers: b_levels_engineer &amp;quot;20 50&amp;quot;, Don&#039;t give medics full revive until level 4: b_levels_medic &amp;quot;20 50 -1 140&amp;quot;, Give everyone binoculars almost immediately: b_levels_battlesense &amp;quot;5 50 90 140&amp;quot;.&lt;br /&gt;
b_levels_covertops;See b_levels_battlesense explanation, same rule applies.&lt;br /&gt;
b_levels_engineer;See b_levels_battlesense explanation, same rule applies.&lt;br /&gt;
b_levels_fieldops;See b_levels_battlesense explanation, same rule applies.&lt;br /&gt;
b_levels_lightweapons;See b_levels_battlesense explanation, same rule applies.&lt;br /&gt;
b_levels_medic;See b_levels_battlesense explanation, same rule applies.&lt;br /&gt;
b_levels_soldier;See b_levels_battlesense explanation, same rule applies.&lt;br /&gt;
b_logrealtimestamps;Controls whether to log the time of day (hh:mm:ss) or the amount of time the server has been on the current map, default 1 (hh:mm:ss).&lt;br /&gt;
b_mapconfigdirectory;Defines the folder name to look for map specific cfg/config files.&lt;br /&gt;
b_mapscriptdirectory;Defines the folder name to look for map scripts (i.e. set b_mapscriptdirectory &amp;quot;etpromapscripts&amp;quot;).&lt;br /&gt;
b_match_warmupjoin;Controls whether clients are able to join teams during warm-ups, default 0, disabled.&lt;br /&gt;
b_maxmortarpitch;Controls whether to limit effective range of ground slope angles for mortar deployment, (e.g. if set to 20, then a mortar deployed on a slope greater than 20 degrees (e.g. 30 or 40) would behave as if it were deployed on a slope of 20 degrees), default 0, disabled.&lt;br /&gt;
b_moverscale;Controls how fast most movers (i.e. vehicles) will move compared to their normal speed.  Extremely high values will cause erratic behaviour, default 1.0.&lt;br /&gt;
b_multiview;Controls enabling/disabling OSP&#039;s multiview. Multiview allows spectators to view multiple players at the same time, but clients who are using multiview consume slightly more bandwidth and CPU time than normal spectators, so not advisable unless you know your server can handle it, especially if a few specs are using it at the one time (lags server), default 1, enabled.&lt;br /&gt;
b_noskillupgrades;When set to 1, players may still score XP, but they will no longer gain skill or rank upgrades. This is especially useful in combination with b_defaultskills to even out game play when playing in non-campaign mode, default 0, disabled. See also b_defaultskills.&lt;br /&gt;
b_panzerlevelup;Determines the skill level at which the panzerfausts receive the &#039;Improved Projectile Resources&#039; upgrade. The mortar is unaffected. A value of 5 means that the panzerfaust will never be subject to this upgrade, default 1, valid values 1 – 5.&lt;br /&gt;
b_privatemessages;Determines the minimum number of allowable characters for name matching of private messages. A value of  &amp;quot;0&amp;quot; disables private messaging entirely, default 2, valid values 0 – 36.&lt;br /&gt;
b_pronedelay;Implements a delay in the client&#039;s proning action, default 0...... 0 = etmain normal behaviour, no spread change, players may not un-prone for 750ms, 1 = max spread for 1 second after proning, players may not un-prone for 1750ms.&lt;br /&gt;
b_realhead;Controls correcting the head hit box, when enabled, the head hit box is where the head is drawn on the client, instead of at the top-centre of the body-hit box, default 1, enabled. Settings other than 0/1 are for debugging.&lt;br /&gt;
b_riflegrenades;Controls whether to allow rifle grenades, default 1 enabled. See also team_maxriflegrenades.&lt;br /&gt;
b_semiAdminCmds;Defines what commands are available for each semiadmin level.&lt;br /&gt;
b_semiAdminLevels;Defines the number of semi admin levels. If undefined (&amp;quot;&amp;quot;) or 0, then the semi admin feature is disabled, default 0, disabled, valid values 0 – 99.&lt;br /&gt;
b_semiAdminPass;Defines the required password for clients to become a semi admin. A different password is required for each b_semiadminlevel.&lt;br /&gt;
b_shoutcastpassword;Defines the password required for special spectator class.&lt;br /&gt;
b_shove;Controls how strong shoves are, default 80, 0 to disable.&lt;br /&gt;
b_shove_noz;Controls vertical shoving, default 1, enabled. When enabled this prevents players shoving others over walls or up to unreachable places.&lt;br /&gt;
b_showClientCmds;Controls whether all commands clients send to the server are written to the log file, default 0, disabled.&lt;br /&gt;
b_shrug;Controls whether clients can use shrug, default 0, disabled.&lt;br /&gt;
b_spectatorNames;Controls whether spectators are allowed to see the player name popup when looking at another player, default 1. 0 = No names shown, disabled, 1 = Names shown to referees and semiadmins only, 2 = Names shown to all players.&lt;br /&gt;
b_statsaver;Controls whether client&#039;s xp and stats are restored if they exit, then return to the server. This is not XP save it’s only a stats saver, all stats will be reset whenever the game normally does a stats reset (e.g. when restarting a campaign or starting a new campaign), default 1, enabled.&lt;br /&gt;
b_stickycharge;When set to 1, per-class charge bars become &#039;sticky&#039;, players will only have their charge bar refilled on respawn if they were killed by an enemy player, default 1, valid values 0 – 2...... 0 = Full recharge, 1 = If killed by enemy, then full recharge, otherwise normal recharge, 2 = Normal recharge no matter how you died, Normal recharge = Gradually filling as if you weren’t killed.&lt;br /&gt;
b_sv_hitsounds;Controls whether clients are allowed use hit sounds, default 1, enabled.&lt;br /&gt;
b_watermark;Specifies the location of the watermark file, default &amp;quot;&amp;quot;, disabled. Automatically prepends &amp;quot;watermark/&amp;quot;. Links to more info at bottom of page.&lt;br /&gt;
b_watermarkFadeAfter;Determines how long the watermark will stay on the screen before fading away. A value of  -1 and the watermark will not fade off, default -1, valid values -1, 0, n, where n = the length of time in seconds before the watermark starts fading.&lt;br /&gt;
b_watermarkFadeTime;Determines the duration the watermark image takes to actually fade away, default 1.5, valid values: 0 - n, where n = the length of time in seconds before the watermark fades out.&lt;br /&gt;
b_wolfrof;Controls whether the SMG rate of fire is equal to that of RTCW&#039;s Thompson (much faster), default 0...... 0 = ET Standard SMG Rate of fire, 1 = RTCW Standard SMG Rate of fire.&lt;br /&gt;
b_xpstopwatch;Controls whether XP remains over stopwatch rounds, default 0, disabled. If set to 1 XP gained in the first round remains in the concluding round.&lt;br /&gt;
config;Used for loading an ETPro style config file (i.e. config clanwar, would load clanwar.config).&lt;br /&gt;
forcecvar;Used to force cvars to a specified value for all connected clients, (i.e. command &amp;quot;forcecvar r_drawfoliage 0&amp;quot;, commonly used for the map Radar). Link for more info at bottom of page.&lt;br /&gt;
lua_allowedmodules;If set, only lua modules with the matching sha1 signatures listed in this cvar will be allowed to load, default &amp;quot;&amp;quot;, disabled.&lt;br /&gt;
lua_modules;Space separated list of lua modules for ETPro to load, modules will be run in the order listed, default &amp;quot;&amp;quot;, disabled. Links for more info on Lua&#039;s at bottom of page.&lt;br /&gt;
p;Replaces Players_Allies and Players_axis. Goto link at bottom of page for better explanation.&lt;br /&gt;
sv_cvar;Used for ETPro cvar restrictions. Goto Link at bottom of page for an explanation on how to use them.&lt;br /&gt;
team_maxCovertops;Determines the max number of covert ops allowed on each team, default –1, unlimited&lt;br /&gt;
team_maxEngineers;Determines the max number of engineers allowed on each team, default –1, unlimited.&lt;br /&gt;
team_maxFieldops;Determines the max number of field ops allowed on each team, default –1, unlimited.&lt;br /&gt;
team_maxFlamers;Determines the max number of flamers allowed for each team, default –1, unlimited.&lt;br /&gt;
team_maxMedics;Determines the max number of medics allowed on each team, default –1, unlimited.&lt;br /&gt;
team_maxMg42s;Determines the max number of mobile MG&#039;s allowed for each team, default –1, unlimited.&lt;br /&gt;
team_maxMines;Determines the max number of mines available for each team, default 10, -1 unlimited&lt;br /&gt;
team_maxMortars;Determines the max number of mortars allowed for each team, default –1, unlimited.&lt;br /&gt;
team_maxPanzers;Determines the max number of panzerfausts allowed for each team, default –1, unlimited.&lt;br /&gt;
team_maxplayers;Determines the max number of players that can join each team.&lt;br /&gt;
team_maxriflegrenades;Determines the max number of riflegrenades allowed for each team, default –1, unlimited. See also b_riflegrenades.&lt;br /&gt;
team_maxSoldiers;Determines the max number of soldiers allowed on each team, default -1, unlimited.&lt;br /&gt;
vote_allow_cointoss;Controls the ability to vote for a cointoss.  0 = Disabled, 1 = Enabled (Default)&lt;br /&gt;
vote_allow_config;Specify config&#039;s that can be loaded by vote, default &amp;quot;&amp;quot;, disabled, &amp;quot;*&amp;quot; to allow all config&#039;s.&lt;br /&gt;
vote_allow_surrender;Controls whether teams can call a vote to surrender, default 1, enabled.&lt;br /&gt;
Commands;Action performed&lt;br /&gt;
b_cvarempty;Resets all ETPro cvars to their defaults. If using this in a cfg/config, make sure to place it at the start, anywhere else and all cvars adjusted before it will be reset to default.&lt;br /&gt;
&amp;lt;/pitatable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
&lt;br /&gt;
*[[IAC]]&lt;br /&gt;
*[[AntiWarp]]&lt;br /&gt;
*[[Cursefilter]]&lt;br /&gt;
*[[ETPro_CVARS | Fixedphysics]]&lt;br /&gt;
*[[SemiAdmin]]&lt;br /&gt;
*[[Shoutcasting]]&lt;br /&gt;
*[http://bani.anime.net/etpro/adminguide.html Watermark]&lt;br /&gt;
*[http://bani.anime.net/banimod/forums/viewtopic.php?t=2033 Watermark]&lt;br /&gt;
*[[Forced_Cvars]]&lt;br /&gt;
*[[Lua_Mod_API | Lua Mod]]&lt;br /&gt;
*[[ETPro:Lua_Sample_Code | Lua Sample Code]]&lt;br /&gt;
*[[Cvar_Restrictions | sv_cvar Restrictions]]&lt;br /&gt;
*[[ETPro:Server_Configuration]]&lt;br /&gt;
*[[Extended_ASCII]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Originally by Birdman &amp;amp; =FF=im2good4u&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;&lt;br /&gt;
If there is any ETPro server cvars/commands that you think we have omitted or any that you think the description is wrong then pm me [http://bani.anime.net/banimod/forums/profile.php?mode=viewprofile&amp;amp;u=3475 here]. Before pm’ing are you sure it’s a ETPro cvar/command and not another mods or an ETmain one, if it is ETPro then let me know what cvar/command we’ve omitted, adding a short description of what it’s use if known to you. If you think a description is wrong, quote the cvar/command and it’s description adding your description of it.&lt;br /&gt;
&lt;br /&gt;
[[Category:ETPro:Server_Cvars]]&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=Category_talk:ETPro:Server_Cvars&amp;diff=2371</id>
		<title>Category talk:ETPro:Server Cvars</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=Category_talk:ETPro:Server_Cvars&amp;diff=2371"/>
		<updated>2006-07-05T01:56:09Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;Dersaidin&amp;gt;&lt;br /&gt;
Perhaps the table should be split into game settings and adminstrative settings. Ie: &lt;br /&gt;
b_defaultskills, b_noskillupgrades, b_shove, team_max&amp;lt;weapon&amp;gt; would be examples of game settings &lt;br /&gt;
b_semiAdminLevels, b_watermark, b_cheatlog would be adminstrative settings (dont effect gameplay)&lt;br /&gt;
&lt;br /&gt;
This list should really be on the [[Server_cvar_list]] page, so I&#039;m going to move it and link it.  Next time try previewing, though, since a mess like [[Special:Recentchanges|this]] happens.&lt;br /&gt;
:--[[User:WeblionX|WeblionX]] 18:56, 4 July 2006 (PDT)&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=Server_Configuration&amp;diff=2313</id>
		<title>Server Configuration</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=Server_Configuration&amp;diff=2313"/>
		<updated>2006-06-15T15:38:45Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Installation==&lt;br /&gt;
File installation:&lt;br /&gt;
Note that the &amp;lt;tt&amp;gt;etpro&amp;lt;/tt&amp;gt; directory should be in the same directory as &amp;lt;tt&amp;gt;etmain&amp;lt;/tt&amp;gt;.  &amp;lt;i&amp;gt;Do &amp;lt;b&amp;gt;NOT&amp;lt;/b&amp;gt; extract the files to etmain&amp;lt;/i&amp;gt;&lt;br /&gt;
:Linux:&lt;br /&gt;
Unzip the server archive to &amp;lt;tt&amp;gt;enemy-territory/etpro/&amp;lt;/tt&amp;gt;&lt;br /&gt;
:Windows:&lt;br /&gt;
Unzip the server archive to &amp;lt;tt&amp;gt;Wolfenstein - Enemy Territory\etpro&amp;lt;/tt&amp;gt;&lt;br /&gt;
Starting an ETPro server requires &amp;lt;tt&amp;gt;+set fs_game etpro&amp;lt;/tt&amp;gt; to be appended to the end of the command line.&lt;br /&gt;
:Linux example:&lt;br /&gt;
::&amp;lt;tt&amp;gt;  ./etded +set fs_game etpro&amp;lt;/tt&amp;gt;&lt;br /&gt;
:Windows:&lt;br /&gt;
::&amp;lt;tt&amp;gt;  etded.exe +set fs_game etpro&amp;lt;/tt&amp;gt;&lt;br /&gt;
:Windows Shortcut:&lt;br /&gt;
::Right click on the shortcut for Enemy Territory and select &amp;quot;Properties.&amp;quot; In the &amp;quot;Target&amp;quot; Box (Top text box) add &amp;lt;tt&amp;gt;+set fs_game etpro&amp;lt;/tt&amp;gt; to the end, after the quotes.&lt;br /&gt;
::&amp;lt;tt&amp;gt;  &amp;quot;C:\Program Files\Wolfenstein - Enemy Territory\et.exe&amp;quot; +set fs_game etpro&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note&#039;&#039;: Starting from version ET 2.60, the Windows executables are et.exe for the game and etded.exe for the server. If you want to run a listen server on Windows start your game with et.exe, otherwise use etded.exe for a dedicated server.&lt;br /&gt;
&lt;br /&gt;
If you want to run 2.56 or earlier servers on Windows, you can only use et.exe and append &amp;lt;tt&amp;gt;+set dedicated 1&amp;lt;/tt&amp;gt; (or 2).&lt;br /&gt;
&lt;br /&gt;
==Warnings==&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;u&amp;gt;WARNING: Server improperly installed! Incorrect fs_game setting! Please notify administrator.&amp;lt;/u&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
:Incorrect &amp;lt;tt&amp;gt;+set fs_game&amp;lt;/tt&amp;gt; string.  Make sure it is set to &amp;lt;tt&amp;gt;+set fs_game etpro&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;u&amp;gt;fs_game is write protected.&amp;lt;/u&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
:You must start your server via the command line (Or by changing the shortcut) with the &amp;lt;tt&amp;gt;+set fs_game etpro&amp;lt;/tt&amp;gt; command.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;u&amp;gt;Client .pk3 missing!&amp;lt;/u&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
:The PK3 file that is contained in the server install file is missing.  Download the [http://bani.anime.net/etpro/download.html server install] again and place the PK3 file in the server&#039;s ETPro directory.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;u&amp;gt;Incorrect client .pk3 installed on server!&amp;lt;/u&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
:The PK3 file mentioned above does not match the version of the server.  Download the PK3 (And possibly updated server) from the [http://bani.anime.net/etpro/download.html download page].&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;u&amp;gt;Multiple client .pk3 versions installed on server!&amp;lt;/u&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
:This means that the server has more than one ETPro client PK3.  Remove the older versions from the server&#039;s ETPro directory.&lt;br /&gt;
:This can also happen from having fs_game set twice in your shortcut or config.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;u&amp;gt;Incorrect ET version!&amp;lt;/u&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
:This happens when you are attempting to install ETPro on a non-patched ET server.  Download the [http://games.activision.com/games/wolfenstein patch] and try again.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;u&amp;gt;Cvar dedicated is 0! Some features will break!&amp;lt;/u&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
:ETPro is meant to be installed on a dedicated server.  Set the server to dedicated by using &amp;lt;tt&amp;gt;+set dedicated 2&amp;lt;/tt&amp;gt; in the command-line used to start the server.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;u&amp;gt;etpro_cheats.dat is corrupt or missing!&amp;lt;/u&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
:The ETPro database file for positively identifying cheats has either been corrupted or does not exist on the server.  Download a recent version of [http://etpro.anime.net/etpro_cheats.dat the database].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Other Errors==&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;u&amp;gt;Server sends users the ETPro PK3 file over and over.&amp;lt;/u&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:If you are using download redirects, make sure that the download path is set correctly if changed between versions.  eg: If the old PK3 was in &amp;lt;tt&amp;gt;server/etpro2&amp;lt;/tt&amp;gt; and the new version is in &amp;lt;tt&amp;gt;server/etpro3&amp;lt;/tt&amp;gt; and the redirect path in the server configuration was not changed, it would send the old ETPro 2.x files; which not being what the server is using, it would cause the download to start again.&amp;lt;br&amp;gt;&lt;br /&gt;
:If you are redirecting to an http or ftp server, make sure the pk3 on the http/ftp server exactly matches the pk3 on the game server.&lt;br /&gt;
:Some http servers may incorrectly try to send pk3 files as text/plain, which will corrupt downloads. Make sure they are sent as application/octet-stream:&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;u&amp;gt;*WARNING*: PunkBuster Reports PB Server Running Old Version Cx.xxx&amp;lt;/u&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Windows:&lt;br /&gt;
:Run &amp;lt;tt&amp;gt;\Wolfenstein - Enemy territory\pb\pbweb.exe&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Linux:&lt;br /&gt;
:Run &amp;lt;tt&amp;gt;/path_to_et_server/pb/pbweb.x86&amp;lt;/tt&amp;gt; (first chmod +x pbweb.x86)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration:==&lt;br /&gt;
[[:Category:ETPro|ETPro CVAR Explanations]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;[http://bani.anime.net/banimod/forums/viewforum.php?f=13 Server Admin Forums]&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://rtcw.jolt.co.uk/content/enemy_territory/server_guide/index.html DG&#039;s Advanced Server Guide]&lt;br /&gt;
&lt;br /&gt;
[http://et.d1p.de/etadmin_mod/wiki/index.php/User:Phats#Advanced_Campaign_Structure_-_Using_etadmin_mod____.28Prototype.29  Advanced Campaign Structure - Using etadmin_mod (Prototype)]&lt;br /&gt;
&lt;br /&gt;
[[Category:ETPro]]&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=MullET&amp;diff=2309</id>
		<title>MullET</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=MullET&amp;diff=2309"/>
		<updated>2006-06-10T23:20:18Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
[[MullET]] is a parody modification being created by Rain from the [[ETPro]] team and various members of the community.  It has a planned release date of around April or May, 2008.  (Vote for |Rain| for president!)&lt;br /&gt;
&lt;br /&gt;
== Planned Features ==&lt;br /&gt;
===New ===&lt;br /&gt;
* Mantle system for realistic fence-jumping action!&lt;br /&gt;
* Maps with realistic hurricane damage&lt;br /&gt;
* Weaponslot for a variety of new map-spawned weapons&lt;br /&gt;
** Duct tape&lt;br /&gt;
** 2x4&lt;br /&gt;
** Slingshot&lt;br /&gt;
** Poltergeist Grenades - A very rare weapon that can go through walls.  Looks like a white egg.&lt;br /&gt;
** Rotten Eggs - Does 1HP damage per second to anyone in a close proximity.&lt;br /&gt;
** Guillotine Arrow - Slices heads off small animals&lt;br /&gt;
* Shotguns&lt;br /&gt;
* Drivable Camaro for vehicle-based gameplay&lt;br /&gt;
* Great new vsays featuring the voice of Ben Winslow&lt;br /&gt;
* Rabbits (and maybe dogs and birds)&lt;br /&gt;
* Additional Gametypes&lt;br /&gt;
* Farm animals poop spawn points&lt;br /&gt;
* MulletCam \ő/&lt;br /&gt;
* Radios (Both in-car and others) can be set to stream OGG audio from an Internet radio station.&lt;br /&gt;
===Changed ===&lt;br /&gt;
* Allied and Axis teams are now Mullets and Rednecks&lt;br /&gt;
* Camaro turbo-charger unit instead of command posts (Engineers required to assemble)&lt;br /&gt;
* Cinderblocks for disabling enemy Camaro units&lt;br /&gt;
* Artillery is replaced by tornados&lt;br /&gt;
===More ===&lt;br /&gt;
*http://weblionx.no-ip.org/cowbell.png&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=MullET&amp;diff=2308</id>
		<title>MullET</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=MullET&amp;diff=2308"/>
		<updated>2006-06-10T22:53:45Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
[[MullET]] is a parody modification being created by Rain from the [[ETPro]] team and various members of the community.  It has a planned release date of around April or May, 2008.  (Vote for |Rain| for president!)&lt;br /&gt;
&lt;br /&gt;
== Planned Features ==&lt;br /&gt;
===New ===&lt;br /&gt;
* Mantle system for realistic fence-jumping action!&lt;br /&gt;
* Maps with realistic hurricane damage&lt;br /&gt;
* Weaponslot for a variety of new map-spawned weapons&lt;br /&gt;
** Duct tape&lt;br /&gt;
** 2x4&lt;br /&gt;
** Slingshot&lt;br /&gt;
** Poltergeist Grenades - A very rare weapon that can go through walls.  Looks like a white egg.&lt;br /&gt;
** Rotten Eggs - Does 1HP damage per second to anyone in a close proximity.&lt;br /&gt;
** Guillotine Arrow - Slices heads off small animals&lt;br /&gt;
* Shotguns&lt;br /&gt;
* Drivable Camaro for vehicle-based gameplay&lt;br /&gt;
* Great new vsays featuring the voice of Ben Winslow&lt;br /&gt;
* Rabbits (and maybe dogs and birds)&lt;br /&gt;
* Additional Gametypes&lt;br /&gt;
* Farm animals poop spawn points&lt;br /&gt;
* MulletCam \ő/&lt;br /&gt;
===Changed ===&lt;br /&gt;
* Allied and Axis teams are now Mullets and Rednecks&lt;br /&gt;
* Camaro turbo-charger unit instead of command posts (Engineers required to assemble)&lt;br /&gt;
* Cinderblocks for disabling enemy Camaro units&lt;br /&gt;
* Artillery is replaced by tornados&lt;br /&gt;
===More ===&lt;br /&gt;
*http://weblionx.no-ip.org/cowbell.png&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
	<entry>
		<id>https://wolfwiki.anime.net/index.php?title=MullET&amp;diff=2307</id>
		<title>MullET</title>
		<link rel="alternate" type="text/html" href="https://wolfwiki.anime.net/index.php?title=MullET&amp;diff=2307"/>
		<updated>2006-06-10T22:51:54Z</updated>

		<summary type="html">&lt;p&gt;WeblionX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
[[MullET]] is a parody modification being created by Rain from the [[ETPro]] team and various members of the community.  It has a planned release date of around April or May, 2006.&lt;br /&gt;
&lt;br /&gt;
== Planned Features ==&lt;br /&gt;
===New ===&lt;br /&gt;
* Mantle system for realistic fence-jumping action!&lt;br /&gt;
* Maps with realistic hurricane damage&lt;br /&gt;
* Weaponslot for a variety of new map-spawned weapons&lt;br /&gt;
** Duct tape&lt;br /&gt;
** 2x4&lt;br /&gt;
** Slingshot&lt;br /&gt;
** Poltergeist Grenades - A very rare weapon that can go through walls.  Looks like a white egg.&lt;br /&gt;
** Rotten Eggs - Does 1HP damage per second to anyone in a close proximity.&lt;br /&gt;
** Guillotine Arrow - Slices heads off small animals&lt;br /&gt;
* Shotguns&lt;br /&gt;
* Drivable Camaro for vehicle-based gameplay&lt;br /&gt;
* Great new vsays featuring the voice of Ben Winslow&lt;br /&gt;
* Rabbits (and maybe dogs and birds)&lt;br /&gt;
* Additional Gametypes&lt;br /&gt;
* Farm animals poop spawn points&lt;br /&gt;
* MulletCam \ő/&lt;br /&gt;
===Changed ===&lt;br /&gt;
* Allied and Axis teams are now Mullets and Rednecks&lt;br /&gt;
* Camaro turbo-charger unit instead of command posts (Engineers required to assemble)&lt;br /&gt;
* Cinderblocks for disabling enemy Camaro units&lt;br /&gt;
* Artillery is replaced by tornados&lt;br /&gt;
===More ===&lt;br /&gt;
*http://weblionx.no-ip.org/cowbell.png&lt;/div&gt;</summary>
		<author><name>WeblionX</name></author>
	</entry>
</feed>