<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.minegoboom.com/index.php?action=history&amp;feed=atom&amp;title=MERVBot_Example_Code</id>
		<title>MERVBot Example Code - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.minegoboom.com/index.php?action=history&amp;feed=atom&amp;title=MERVBot_Example_Code"/>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=MERVBot_Example_Code&amp;action=history"/>
		<updated>2026-05-25T17:10:43Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.28.2</generator>

	<entry>
		<id>http://wiki.minegoboom.com/index.php?title=MERVBot_Example_Code&amp;diff=5257&amp;oldid=prev</id>
		<title>Cyan~Fire: category</title>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=MERVBot_Example_Code&amp;diff=5257&amp;oldid=prev"/>
				<updated>2005-07-28T15:12:21Z</updated>
		
		<summary type="html">&lt;p&gt;category&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='en'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 15:12, 28 July 2005&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l770&quot; &gt;Line 770:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 770:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;tell(makeSendPosition(true));	//update bot's position on server&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;tell(makeSendPosition(true));	//update bot's position on server&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Guides]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mgb_assswiki:diff:version:1.11a:oldid:3537:newid:5257 --&gt;
&lt;/table&gt;</summary>
		<author><name>Cyan~Fire</name></author>	</entry>

	<entry>
		<id>http://wiki.minegoboom.com/index.php?title=MERVBot_Example_Code&amp;diff=3537&amp;oldid=prev</id>
		<title>Cyan~Fire: headings, etc</title>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=MERVBot_Example_Code&amp;diff=3537&amp;oldid=prev"/>
				<updated>2005-02-26T05:53:31Z</updated>
		
		<summary type="html">&lt;p&gt;headings, etc&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='en'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 05:53, 26 February 2005&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;==Example Code==&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Here are a few code examples that show how to do common tasks in MERVBot plugins. You should not simply copy and paste this code, but try to understand and emulate it.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Here are a few code examples that show how to do common tasks in MERVBot plugins. You should not simply copy and paste this code, but try to understand and emulate it.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l51&quot; &gt;Line 51:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 48:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;=== No antiwarp in center of the map &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== No antiwarp in center of the map ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;!-- EXAMPLE A: BEGIN --&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;'''Example A''': No &lt;/del&gt;antiwarp &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;in center of map. Warn the player &lt;/del&gt;and revoke the prize.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;This code demonstrates how to check players for whether their &lt;/ins&gt;antiwarp &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;is on, and then warn &lt;/ins&gt;and revoke the prize &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;if the player is in violation of the rules&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;''Requirements:'' Bot must have smod+ privilages. abs() function defined.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;''Requirements:'' Bot must have smod+ privilages. abs() function defined.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l100&quot; &gt;Line 100:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 97:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Just as a word of caution, players may be flooded with *prize #-20, and *warn statements under certain conditions.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Just as a word of caution, players may be flooded with *prize #-20, and *warn statements under certain conditions.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;!-- EXAMPLE A: END&amp;#160;  --&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;=== Setting freq size depending on pilot count &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Setting freq size depending on pilot count ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This code shows how to change the maximum freq size depending on how many players are in ships.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This code shows how to change the maximum freq size depending on how many players are in ships.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l151&quot; &gt;Line 151:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 147:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;=== Tracking and announcing kill sprees &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Tracking and announcing kill sprees ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This code shows how to track the kills of a pilot and then announce when the pilot gets 10 kills in a row (without dying).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This code shows how to track the kills of a pilot and then announce when the pilot gets 10 kills in a row (without dying).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l174&quot; &gt;Line 174:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 170:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;=== Warp points &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Warp points ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This code will warp a pilot to a coord when they are in a certain region.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This code will warp a pilot to a coord when they are in a certain region.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l199&quot; &gt;Line 199:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 195:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Of course, this is a very simple example. Real warping plugins, like [http://catid.ssihosting.com/files/plugins/TM_Baw.zip TM Baw], will have a list of warp points set through an INI file. See its source for an example of this method.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Of course, this is a very simple example. Real warping plugins, like [http://catid.ssihosting.com/files/plugins/TM_Baw.zip TM Baw], will have a list of warp points set through an INI file. See its source for an example of this method.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;=== Tracking flag data &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Tracking flag data ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This example demonstrates how to track plag data.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This example demonstrates how to track plag data.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l286&quot; &gt;Line 286:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 282:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;=== A simple !spam feature &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== A simple !spam feature ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This example shows how to implement a !spam command, which allows a standard player to announce something to the zone every 60s. (In reality, the delay might need to be increased.)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This example shows how to implement a !spam command, which allows a standard player to announce something to the zone every 60s. (In reality, the delay might need to be increased.)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l362&quot; &gt;Line 362:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 358:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;=== Implementing a simple queue for several &amp;quot;boxes&amp;quot; &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Implementing a simple queue for several &amp;quot;boxes&amp;quot; ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This code demonstrates how to have a queue of players for dueling boxes.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This code demonstrates how to have a queue of players for dueling boxes.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l396&quot; &gt;Line 396:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 392:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;=== Reading text from a file and printing it to a player &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Reading text from a file and printing it to a player ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This example demonstrates how to read text from a file line-by-line and print it to a pilot. It uses a staff text file, but the input file could be anything.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This example demonstrates how to read text from a file line-by-line and print it to a pilot. It uses a staff text file, but the input file could be anything.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l420&quot; &gt;Line 420:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 416:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;=== Printing a player stats table &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Printing a player stats table ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This example demonstrates how to print the statistics stored in the example structures at the beginning of this section to the various freqs.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This example demonstrates how to print the statistics stored in the example structures at the beginning of this section to the various freqs.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l486&quot; &gt;Line 486:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 482:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;=== Checking for pilots in a region &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Checking for pilots in a region ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This example demonstrates how to detect whether any pilot from a specific freq is in a region.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This example demonstrates how to detect whether any pilot from a specific freq is in a region.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l513&quot; &gt;Line 513:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 509:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;=== Creating logfiles using date and squad names &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Creating logfiles using date and squad names ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This example shows how to name logfiles descriptively, depending on variables such as squad names and the date.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This example shows how to name logfiles descriptively, depending on variables such as squad names and the date.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l538&quot; &gt;Line 538:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 534:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;=== Sending and logging messages to playing freqs or public &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Sending and logging messages to playing freqs or public ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This example simply directs a message to freqs or the arena depending on a setting, and logs the messages depending on status.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This example simply directs a message to freqs or the arena depending on a setting, and logs the messages depending on status.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l570&quot; &gt;Line 570:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 566:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;=== Parsing player list and reading into struct data &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Parsing player list and reading into struct data ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This example demonstrates how to parse the playerlist and add all pilots and freqs to the example structures.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This example demonstrates how to parse the playerlist and add all pilots and freqs to the example structures.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l681&quot; &gt;Line 681:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 677:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;=== Finding MVP from struct data &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Finding MVP from struct data ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This example demonstrates how to parse the example structures to find the Most Valuable Player using the formula (2 * kills - deaths).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This example demonstrates how to parse the example structures to find the Most Valuable Player using the formula (2 * kills - deaths).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l705&quot; &gt;Line 705:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 701:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;=== Tracking and displaying player weapon damage stats &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Tracking and displaying player weapon damage stats ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This example shows how to track weapon damage using the weapon structure for clientprot.h and player tags.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This example shows how to track weapon damage using the weapon structure for clientprot.h and player tags.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l762&quot; &gt;Line 762:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 758:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;=== Making bot spectate coordinates &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Making bot spectate coordinates ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This example demonstrates how to make the bot spectate certain coordinates (512, 600 in this case). This will allow the bot to receive more position packets and weapons packets for players in the area.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This example demonstrates how to make the bot spectate certain coordinates (512, 600 in this case). This will allow the bot to receive more position packets and weapons packets for players in the area.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mgb_assswiki:diff:version:1.11a:oldid:1366:newid:3537 --&gt;
&lt;/table&gt;</summary>
		<author><name>Cyan~Fire</name></author>	</entry>

	<entry>
		<id>http://wiki.minegoboom.com/index.php?title=MERVBot_Example_Code&amp;diff=1366&amp;oldid=prev</id>
		<title>Cyan~Fire: moved example code from MERVBot Tutorial here.</title>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=MERVBot_Example_Code&amp;diff=1366&amp;oldid=prev"/>
				<updated>2005-02-26T05:50:36Z</updated>
		
		<summary type="html">&lt;p&gt;moved example code from &lt;a href=&quot;/index.php/MERVBot_Tutorial&quot; title=&quot;MERVBot Tutorial&quot;&gt;MERVBot Tutorial&lt;/a&gt; here.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
==Example Code==&lt;br /&gt;
&lt;br /&gt;
Here are a few code examples that show how to do common tasks in MERVBot plugins. You should not simply copy and paste this code, but try to understand and emulate it.&lt;br /&gt;
&lt;br /&gt;
Note that some of the examples require the following inline function to be defined:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
inline int abs(int n)&lt;br /&gt;
{&lt;br /&gt;
	return (n &amp;lt; 0) -n : n;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some examples also require the following structs to be defined:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct playerstats&lt;br /&gt;
{&lt;br /&gt;
	char name[20];	// pilot name&lt;br /&gt;
&lt;br /&gt;
	int kills, deaths;&lt;br /&gt;
	Uint16 points, flagpoints;&lt;br /&gt;
	int flagtime, cflagtime;&lt;br /&gt;
	int flags;&lt;br /&gt;
	int flagkills;&lt;br /&gt;
	int cplaying_time;	// time stamp for playing time&lt;br /&gt;
	int ship;		// player ship&lt;br /&gt;
&lt;br /&gt;
	int dmgdealt, dmgtaken;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct freqdata&lt;br /&gt;
{&lt;br /&gt;
	playerstats pilots[100];&lt;br /&gt;
&lt;br /&gt;
	int freqpoints;&lt;br /&gt;
	char freqname[20];&lt;br /&gt;
	int freqflagpoints;&lt;br /&gt;
	Uint16 freqteam;&lt;br /&gt;
	int freqflagtime;&lt;br /&gt;
&lt;br /&gt;
	int flags;&lt;br /&gt;
	int kills;&lt;br /&gt;
	int deaths;&lt;br /&gt;
	int flagkills;&lt;br /&gt;
&lt;br /&gt;
	int dmgdealt;&lt;br /&gt;
	int dmgtaken;&lt;br /&gt;
&lt;br /&gt;
	int playercount;	// number of pilots on freq counted so far&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== No antiwarp in center of the map ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE A: BEGIN --&amp;gt;&lt;br /&gt;
'''Example A''': No antiwarp in center of map. Warn the player and revoke the prize.&lt;br /&gt;
&lt;br /&gt;
''Requirements:'' Bot must have smod+ privilages. abs() function defined.&lt;br /&gt;
&lt;br /&gt;
Let's first implement a generic function which we will need:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bool closeto(Player *p, int x, int y, int tolerance)&lt;br /&gt;
{&lt;br /&gt;
	int x_dist = abs(p-&amp;gt;tile.x - x);&lt;br /&gt;
	int y_dist = abs(p-&amp;gt;tile.y - y);&lt;br /&gt;
	return (x_dist &amp;lt; tolerance) &amp;amp;&amp;amp; (y_dist &amp;lt; tolerance);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we declare a variable in '''spawn.h''' for the radius that defines the &amp;quot;center&amp;quot; of the map. For simplicity's sake, we will just define it in the botInfo constructor, but it can also be set via a command, INI, etc.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class botInfo&lt;br /&gt;
{&lt;br /&gt;
//	...&lt;br /&gt;
&lt;br /&gt;
	// Put bot data here&lt;br /&gt;
	int radius;&lt;br /&gt;
&lt;br /&gt;
public:&lt;br /&gt;
	botInfo(CALL_HANDLE given)&lt;br /&gt;
	{&lt;br /&gt;
//	...&lt;br /&gt;
	// Put initial values here&lt;br /&gt;
		radius = 35;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now let's put the actual checking in '''spawn.cpp''' under EVENT_PlayerMove. This way, every time a player moves, the bot will check for a violation of the rule.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
case EVENT_PlayerMove:&lt;br /&gt;
{&lt;br /&gt;
	Player *p = (Player*)event.p[0];&lt;br /&gt;
&lt;br /&gt;
	// no anti in center&lt;br /&gt;
	if (p-&amp;gt;awarp &amp;amp;&amp;amp; closeto(p, 512, 512, radius))&lt;br /&gt;
	{&lt;br /&gt;
		sendPrivate(p, &amp;quot;*warn Antiwarp is not allowed in center.&amp;quot;);&lt;br /&gt;
		sendPrivate(p, &amp;quot;*prize #-20&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just as a word of caution, players may be flooded with *prize #-20, and *warn statements under certain conditions.&lt;br /&gt;
&amp;lt;!-- EXAMPLE A: END   --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Setting freq size depending on pilot count ====&lt;br /&gt;
&lt;br /&gt;
This code shows how to change the maximum freq size depending on how many players are in ships.&lt;br /&gt;
&lt;br /&gt;
''Requirements:'' The bot must have Sysop or Arena-Owner privilages. Constructor must initialize countdown[0] to &amp;gt; 0 and freqchange to 0 in '''spawn.h'''.&lt;br /&gt;
&lt;br /&gt;
In '''spawn.cpp''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
case EVENT_Tick:&lt;br /&gt;
{&lt;br /&gt;
//	...&lt;br /&gt;
	if (countdown[0] == 0)&lt;br /&gt;
	{&lt;br /&gt;
		_listnode &amp;lt;Player&amp;gt; *parse = playerlist-&amp;gt;head;&lt;br /&gt;
		int count = 0;&lt;br /&gt;
&lt;br /&gt;
		while (parse)&lt;br /&gt;
		{&lt;br /&gt;
			Player *p = parse-&amp;gt;item;&lt;br /&gt;
&lt;br /&gt;
			if (p-&amp;gt;ship != SHIP_Spectator)&lt;br /&gt;
				count++;&lt;br /&gt;
&lt;br /&gt;
			parse = parse-&amp;gt;next;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if ((count &amp;gt; 24) &amp;amp;&amp;amp; (freqchange != 4))&lt;br /&gt;
		{&lt;br /&gt;
			sendPublic(&amp;quot;?set Team:MaxPerTeam:4&amp;quot;); //Sysop command to modify arena config.&lt;br /&gt;
			freqchange = 4;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if ((count &amp;lt; 25) &amp;amp;&amp;amp; (count &amp;gt; 14) &amp;amp;&amp;amp; (freqchange != 3))&lt;br /&gt;
		{&lt;br /&gt;
			sendPublic(&amp;quot;?set Team:MaxPerTeam:3&amp;quot;); //Sysop command to modify arena config.&lt;br /&gt;
			freqchange = 3;&lt;br /&gt;
	 	}&lt;br /&gt;
&lt;br /&gt;
		String s(&amp;quot;Max freq size &amp;quot;);&lt;br /&gt;
		s += freqchange;&lt;br /&gt;
		s += &amp;quot; (&amp;quot;;&lt;br /&gt;
		s += count;&lt;br /&gt;
		s += &amp;quot; pilots in game)&amp;quot;;&lt;br /&gt;
		sendPublic(s.msg);&lt;br /&gt;
&lt;br /&gt;
		countdown[0] = 120; // reset timer to 120 seconds.&lt;br /&gt;
	 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Tracking and announcing kill sprees ====&lt;br /&gt;
&lt;br /&gt;
This code shows how to track the kills of a pilot and then announce when the pilot gets 10 kills in a row (without dying).&lt;br /&gt;
&lt;br /&gt;
''Requirements:'' The bot must have smod+ privilages.&lt;br /&gt;
&lt;br /&gt;
Simply add the following code into '''spawn.cpp''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EVENT_PlayerDeath:&lt;br /&gt;
{&lt;br /&gt;
	Player *p = (Player*)event.p[0],&lt;br /&gt;
		 *k = (Player*)event.p[1];&lt;br /&gt;
	Uint16 bounty = (Uint16)(Uint32)event.p[2];&lt;br /&gt;
	Uint16 flags = (Uint16)event.p[3];&lt;br /&gt;
&lt;br /&gt;
	set_tag(p, KILLS, 0);  // Reset KILLS to 0 on death.&lt;br /&gt;
	set_tag(k, KILLS, get_tag(k, KILLS) + 1);  // Increment killer's KILLS by 1.&lt;br /&gt;
&lt;br /&gt;
	if (get_tag(k, KILLS) == 10)&lt;br /&gt;
		sendPublic(&amp;quot;*arena &amp;quot; + (String)k-&amp;gt;name + &amp;quot; has gotten 10 kills.&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Warp points ====&lt;br /&gt;
&lt;br /&gt;
This code will warp a pilot to a coord when they are in a certain region.&lt;br /&gt;
&lt;br /&gt;
''Requirements:'' The bot must have smod+ privilages. The abs() function must be defined.&lt;br /&gt;
&lt;br /&gt;
Let's first implement a generic function which we will need:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bool closeto(Player *p, int x, int y, int tolerance)&lt;br /&gt;
{&lt;br /&gt;
	return (abs(p-&amp;gt;tile.x - x) &amp;lt; tolerance) &amp;amp;&amp;amp; (abs(p-&amp;gt;tile.y - y) &amp;lt; tolerance);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in '''spawn.cpp''', we just check every time a player moves to see if he has entered the warp point area. If he has, then warp him with the *warpto command to the warp destination.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
case EVENT_PlayerMove: &lt;br /&gt;
{&lt;br /&gt;
	Player *p = (Player*)event.p[0];&lt;br /&gt;
&lt;br /&gt;
	if (closeto(p, 509, 509, 2)) // if pilot within 2 tiles of map coord 509,509&lt;br /&gt;
		sendPrivate(p, &amp;quot;*warpto 509 504&amp;quot;);  // warp to coord 509,504&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Of course, this is a very simple example. Real warping plugins, like [http://catid.ssihosting.com/files/plugins/TM_Baw.zip TM Baw], will have a list of warp points set through an INI file. See its source for an example of this method.&lt;br /&gt;
&lt;br /&gt;
==== Tracking flag data ====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to track plag data.&lt;br /&gt;
&lt;br /&gt;
''Requirements:'' Example freq/pilot structures must be defined.&lt;br /&gt;
&lt;br /&gt;
''Note'': case EVENT_FlagDrop: {} gets called anytime theres a teamkill.&lt;br /&gt;
&lt;br /&gt;
First, let's define a function to determine whether a pilot is in the structure list:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bool botInfo::GetPilot(Player *p)&lt;br /&gt;
{&lt;br /&gt;
	// first find the freq index for the pilot's freq&lt;br /&gt;
	for (freq = 0; freq &amp;lt; freqcount; freq++)&lt;br /&gt;
	{&lt;br /&gt;
		if (p-&amp;gt;team == freqs[freq].freqteam)&lt;br /&gt;
			break;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// then find the pilot in the freq struct&lt;br /&gt;
	for (pilot = 0; pilot &amp;lt; freqs[freq].playercount; pilot++)&lt;br /&gt;
		if (strcmp(p-&amp;gt;name,freqs[freq].pilots[pilot].name)==0)&lt;br /&gt;
			return true;&lt;br /&gt;
&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To track flag data using above struct/functions, in '''spawn.cpp''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
case EVENT_FlagGrab:&lt;br /&gt;
{&lt;br /&gt;
    //...&lt;br /&gt;
&lt;br /&gt;
    if (GetPilot(p))  // function&lt;br /&gt;
    {&lt;br /&gt;
        freqs[freq].pilots[pilot].flags++;&lt;br /&gt;
        freqs[freq].flags++;&lt;br /&gt;
&lt;br /&gt;
        if (freqs[freq].pilots[pilot].flags &amp;lt; 2) // didnt have a flag before, first flag&lt;br /&gt;
            freqs[freq].pilots[pilot].cflagtime = GetTickCount();  // time stamp when picked up flag&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    //...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To track flag data using built-in get/set tag, in '''spawn.cpp''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
case EVENT_FlagGrab:&lt;br /&gt;
{&lt;br /&gt;
 //...&lt;br /&gt;
&lt;br /&gt;
  set_tag(p, TAG_STAT_FS, get_tag(p, TAG_STAT_FS) + 1);&lt;br /&gt;
  set_tag(p, TAG_FLAGTIMER, GetTickCount());&lt;br /&gt;
&lt;br /&gt;
 //...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''Source:'' Catid's flagbot.&lt;br /&gt;
&lt;br /&gt;
Get current flag times using struct format:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void botInfo::SetFlagTimes()&lt;br /&gt;
{&lt;br /&gt;
	// set current flagtime for pilots/freqs&lt;br /&gt;
	_listnode &amp;lt;Player&amp;gt; *parse = playerlist-&amp;gt;head;&lt;br /&gt;
   &lt;br /&gt;
	while (parse)&lt;br /&gt;
	{&lt;br /&gt;
		Player *p = parse-&amp;gt;item;&lt;br /&gt;
&lt;br /&gt;
		if (GetPilot(p) &amp;amp;&amp;amp; freqs[freq].pilots[pilot].flags &amp;gt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			int time = (GetTickCount() - freqs[freq].pilots[pilot].cflagtime)/1000;&lt;br /&gt;
&lt;br /&gt;
			if (PilotOnSquad(p))&lt;br /&gt;
				freqs[freq].freqflagtime += time;&lt;br /&gt;
&lt;br /&gt;
			freqs[freq].pilots[pilot].flagtime += time;&lt;br /&gt;
			freqs[freq].pilots[pilot].cflagtime = GetTickCount();&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		parse = parse-&amp;gt;next;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A simple !spam feature ====&lt;br /&gt;
&lt;br /&gt;
This example shows how to implement a !spam command, which allows a standard player to announce something to the zone every 60s. (In reality, the delay might need to be increased.)&lt;br /&gt;
&lt;br /&gt;
First, let's declare a constant and a variable we will need in '''spawn.h''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#define SPAM_TIME 1	//in minutes&lt;br /&gt;
class botInfo&lt;br /&gt;
{&lt;br /&gt;
	//...&lt;br /&gt;
&lt;br /&gt;
	// Put bot data here&lt;br /&gt;
	bool spamready;	//whether bot is ready to make another announcement&lt;br /&gt;
&lt;br /&gt;
	//...&lt;br /&gt;
&lt;br /&gt;
public:&lt;br /&gt;
	botInfo(CALL_HANDLE given)&lt;br /&gt;
	{&lt;br /&gt;
	//...&lt;br /&gt;
&lt;br /&gt;
	// Put initial values here&lt;br /&gt;
	spamready = true;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, let's create the !spam command in '''commands.cpp''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
case OP_Player: // Player-level commands&lt;br /&gt;
{    &lt;br /&gt;
	//...&lt;br /&gt;
	if (c-&amp;gt;check(&amp;quot;spam&amp;quot;))&lt;br /&gt;
	{&lt;br /&gt;
		// zone announcement &amp;quot;Need pilots to duel in ?go [arena] - [pilotname]&amp;quot;&lt;br /&gt;
		if (spamready == true)&lt;br /&gt;
		{&lt;br /&gt;
			char s[128];&lt;br /&gt;
&lt;br /&gt;
			sprintf(s, &amp;quot;*zone Need pilots to duel in ?go %s - %s&amp;quot;,&lt;br /&gt;
				arena,&lt;br /&gt;
				p-&amp;gt;name);&lt;br /&gt;
&lt;br /&gt;
			sendPublic(s);&lt;br /&gt;
		  &lt;br /&gt;
			spamready=false;&lt;br /&gt;
			countdown[0] = SPAM_TIME * 60; // set the timer for 60s&lt;br /&gt;
		}&lt;br /&gt;
		else if (countdown[0] &amp;lt; 0)&lt;br /&gt;
		{&lt;br /&gt;
		     sendPrivate(p, &amp;quot;Spam ability disabled.&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			char s[128];&lt;br /&gt;
&lt;br /&gt;
			sprintf(s,&lt;br /&gt;
				&amp;quot;%d minute timer between announcements. %dm:%2ds before next spam.&amp;quot;,&lt;br /&gt;
				SPAM_TIME,&lt;br /&gt;
				countdown[0] / 60,&lt;br /&gt;
				countdown[0] % 60);&lt;br /&gt;
&lt;br /&gt;
			sendPrivate(p, s);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in '''spawn.cpp''', mark spamready as true when countdown[0] hits 0:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
case EVENT_Tick:&lt;br /&gt;
{&lt;br /&gt;
	//...&lt;br /&gt;
&lt;br /&gt;
	if (countdown[0] == 0)&lt;br /&gt;
		spamready = true;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Implementing a simple queue for several &amp;quot;boxes&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
This code demonstrates how to have a queue of players for dueling boxes.&lt;br /&gt;
&lt;br /&gt;
In '''spawn.h''', define a constant and declare a couple variables we'll need:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#define MAX_NEXT 8&lt;br /&gt;
class botInfo&lt;br /&gt;
{&lt;br /&gt;
	//...&lt;br /&gt;
&lt;br /&gt;
	// Put bot data here&lt;br /&gt;
	Player *next[99][MAX_NEXT];&lt;br /&gt;
	int nextcount[99];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In '''spawn.cpp''', implement a fuction to move up the queue when a person enters a box or simply leaves the queue:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void botInfo::MoveUp(int pos, int box_id)&lt;br /&gt;
{&lt;br /&gt;
	Player **box = next[box_id];	//define a pointer because we'll be accessing this a lot&lt;br /&gt;
&lt;br /&gt;
	// decrement box's nextcount&lt;br /&gt;
	if (nextcount[box_id] &amp;gt; 0)&lt;br /&gt;
		nextcount[box_id]--;&lt;br /&gt;
&lt;br /&gt;
	// move up the line for that box&lt;br /&gt;
	for (pos; pos &amp;lt; MAX_NEXT - 1; pos++)&lt;br /&gt;
		box[pos] = box[pos + 1];&lt;br /&gt;
&lt;br /&gt;
	box[MAX_NEXT] = 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Reading text from a file and printing it to a player ====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to read text from a file line-by-line and print it to a pilot. It uses a staff text file, but the input file could be anything.&lt;br /&gt;
&lt;br /&gt;
''Requirements:'' Include &amp;lt;fstream.h&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Simply implement the following code in '''commands.cpp''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
case OP_Player:&lt;br /&gt;
{&lt;br /&gt;
	//...&lt;br /&gt;
&lt;br /&gt;
	if (c-&amp;gt;check(&amp;quot;staff&amp;quot;))&lt;br /&gt;
	{&lt;br /&gt;
		ifstream file(&amp;quot;staff.txt&amp;quot;);&lt;br /&gt;
		char line[256];	//max length 255&lt;br /&gt;
&lt;br /&gt;
		while (file.getline(line, 256))&lt;br /&gt;
			sendPrivate(p, line);&lt;br /&gt;
&lt;br /&gt;
		file.close();&lt;br /&gt;
	} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Printing a player stats table ====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to print the statistics stored in the example structures at the beginning of this section to the various freqs.&lt;br /&gt;
&lt;br /&gt;
''Requirements:'' The example structures must be defined. Function sendFreqs() must be defined.&lt;br /&gt;
&lt;br /&gt;
In '''spawn.cpp''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void botInfo::DisplayPlayers(int freqcount)&lt;br /&gt;
{&lt;br /&gt;
	// Display Match player/freq stats in this format&lt;br /&gt;
	// ---------------------------------------------------&lt;br /&gt;
	// Squad: squad_name_1          K  D TK DMG DEALT TAKEN&lt;br /&gt;
	// ---------------------------------------------------&lt;br /&gt;
	// Player_1                     0  0  0         0     0&lt;br /&gt;
	// Player_2                     0  0  0         0     0&lt;br /&gt;
	// TOTAL:                       0  0  0         0     0&lt;br /&gt;
	// ---------------------------------------------------&lt;br /&gt;
	// Squad: squad_name_2          K  D TK DMG DEALT TAKEN&lt;br /&gt;
	// ---------------------------------------------------&lt;br /&gt;
	// Player_3                     0  0  0         0     0&lt;br /&gt;
	// Player_4                     0  0  0         0     0&lt;br /&gt;
	// Player_5                     0  0  0         0     0&lt;br /&gt;
	// TOTAL:                       0  0  0         0     0&lt;br /&gt;
	// ---------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	char str[255];&lt;br /&gt;
	freqdata *freq = freqs;	//pointer for efficiency&lt;br /&gt;
&lt;br /&gt;
	while (freqcount--)&lt;br /&gt;
	{&lt;br /&gt;
		sendFreqs(&amp;quot;---------------------------------------------------&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		sprintf(str, &amp;quot;Squad: %-20s K  D TK DMG DEALT TAKEN&amp;quot;, freq-&amp;gt;freqname);&lt;br /&gt;
		sendFreqs(str);&lt;br /&gt;
&lt;br /&gt;
		sendFreqs(&amp;quot;---------------------------------------------------&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		for (pilot = 0; pilot &amp;lt; freq-&amp;gt;playercount; pilot++)&lt;br /&gt;
		{&lt;br /&gt;
		  sprintf(str, &amp;quot;%-20s %8d %2d %2d %9d %5d&amp;quot;, //use sprintf() to space output evenly&lt;br /&gt;
		           freq-&amp;gt;pilots[pilot].name,&lt;br /&gt;
		           freq-&amp;gt;pilots[pilot].kills,&lt;br /&gt;
		           freq-&amp;gt;pilots[pilot].deaths,&lt;br /&gt;
		           freq-&amp;gt;pilots[pilot].teamkills,&lt;br /&gt;
		           freq-&amp;gt;pilots[pilot].dmgdealt,&lt;br /&gt;
		           freq-&amp;gt;pilots[pilot].dmgtaken&lt;br /&gt;
		         );&lt;br /&gt;
		  sendFreqs(str);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		sprintf(str, &amp;quot;TOTAL:                     %2d %2d %2d %9d %5d&amp;quot;,&lt;br /&gt;
		        freq-&amp;gt;kills, freq-&amp;gt;deaths,&lt;br /&gt;
		        freq-&amp;gt;teamkills,&lt;br /&gt;
		        freq-&amp;gt;dmgdealt,&lt;br /&gt;
		        freq-&amp;gt;dmgtaken&lt;br /&gt;
		       );&lt;br /&gt;
		sendFreqs(str);&lt;br /&gt;
&lt;br /&gt;
		freq++;	//increment the pointer to next on the list&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	sendFreqs(&amp;quot;---------------------------------------------------&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Checking for pilots in a region ====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to detect whether any pilot from a specific freq is in a region.&lt;br /&gt;
&lt;br /&gt;
''Requirements:'' User-defined function ''closeto'' needs to be implemented. See prior examples.&lt;br /&gt;
&lt;br /&gt;
Just define the following function in '''spawn.cpp''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bool botInfo::FreqInBox(int freq)&lt;br /&gt;
{&lt;br /&gt;
	_listnode &amp;lt;Player&amp;gt; *parse = playerlist-&amp;gt;head;&lt;br /&gt;
&lt;br /&gt;
	while (parse)	//parse the playerlist&lt;br /&gt;
	{&lt;br /&gt;
		Player *p = parse-&amp;gt;item;&lt;br /&gt;
&lt;br /&gt;
		if (p-&amp;gt;team == freq)	//only check players on specified freq&lt;br /&gt;
		if (closeto(p, coordX, coordY, 73) &amp;amp;&amp;amp; (p-&amp;gt;ship != SHIP_Spectator))&lt;br /&gt;
			return true;	//return true once player found&lt;br /&gt;
&lt;br /&gt;
		parse = parse-&amp;gt;next;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return false;	//return false if loop exits without finding a player&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Creating logfiles using date and squad names ====&lt;br /&gt;
&lt;br /&gt;
This example shows how to name logfiles descriptively, depending on variables such as squad names and the date.&lt;br /&gt;
&lt;br /&gt;
Format: &amp;quot;[yeah]y[month]m[day]d [squadA] vs [squadB] [hour]h[minute]m.txt&amp;quot; (ex: 03y01m27d BLACKDRaGON vs Integral 05h08m.txt).&lt;br /&gt;
&lt;br /&gt;
''Note'': Assuming squadA and squadB variables exist as char[20] or String.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	String logname;&lt;br /&gt;
	char u[100];&lt;br /&gt;
	time_t t;&lt;br /&gt;
	time(&amp;amp;t);	//get the local time&lt;br /&gt;
	tm *tmp = localtime(&amp;amp;t);	//then convert to the tm struct&lt;br /&gt;
&lt;br /&gt;
	strftime(u, 99, &amp;quot;%yy%mm%dd &amp;quot;, tmp);	//&amp;quot;[year]y[month]m[day]d &amp;quot;&lt;br /&gt;
	logname = u;&lt;br /&gt;
	logname += squadA;&lt;br /&gt;
	logname += &amp;quot; vs &amp;quot;;&lt;br /&gt;
	logname += squadB;&lt;br /&gt;
	strftime(u, 99, &amp;quot;%Ih%Mm&amp;quot;, tmp);	//&amp;quot;[hour]h[minute]m&amp;quot;&lt;br /&gt;
	logname += u;&lt;br /&gt;
	logname += &amp;quot;.txt&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Sending and logging messages to playing freqs or public ====&lt;br /&gt;
&lt;br /&gt;
This example simply directs a message to freqs or the arena depending on a setting, and logs the messages depending on status.&lt;br /&gt;
&lt;br /&gt;
''Requirements:'' You must include &amp;lt;fstream.h&amp;gt;. You must have String logname declared as a global variable; and teammsgs, gameon, teamA, and teamB as members of the botInfo class.&lt;br /&gt;
&lt;br /&gt;
In '''spawn.cpp''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void botInfo::sendFreqs(char *msg)&lt;br /&gt;
{&lt;br /&gt;
	if (teammsgs)&lt;br /&gt;
	{&lt;br /&gt;
		sendTeamPrivate(8025,msg);&lt;br /&gt;
		sendTeamPrivate(teamA,msg);&lt;br /&gt;
		sendTeamPrivate(teamB,msg);&lt;br /&gt;
	}&lt;br /&gt;
	else&lt;br /&gt;
	{&lt;br /&gt;
		String s(msg);&lt;br /&gt;
		s.prepend(&amp;quot;*arena &amp;quot;,7);&lt;br /&gt;
		sendPublic(s.msg);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (gameon)&lt;br /&gt;
	{&lt;br /&gt;
		ofstream outf(logname.msg, ios::app);&lt;br /&gt;
		outf &amp;lt;&amp;lt; msg &amp;lt;&amp;lt; endl;&lt;br /&gt;
		outf.close();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Parsing player list and reading into struct data ====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to parse the playerlist and add all pilots and freqs to the example structures.&lt;br /&gt;
&lt;br /&gt;
''Requirements:'' Example structures must be defined.&lt;br /&gt;
&lt;br /&gt;
To get freqs in a game where there are several freqs:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// read pilots into freq struct data from ingame and on playing freqs&lt;br /&gt;
void botInfo::GetFreqs()&lt;br /&gt;
{&lt;br /&gt;
	_listnode &amp;lt;Player&amp;gt; *parse = playerlist-&amp;gt;head;&lt;br /&gt;
   &lt;br /&gt;
	while (parse)&lt;br /&gt;
	{&lt;br /&gt;
		Player *p = parse-&amp;gt;item;&lt;br /&gt;
&lt;br /&gt;
		if (p-&amp;gt;ship != SHIP_Spectator &amp;amp;&amp;amp; closeto(p, coordX, coordY, 73))&lt;br /&gt;
		{&lt;br /&gt;
			bool foundfreq = false;&lt;br /&gt;
&lt;br /&gt;
			// look for freq in struct&lt;br /&gt;
			for (freq = 0; freq &amp;lt; freqcount &amp;amp;&amp;amp; !foundfreq; freq++)&lt;br /&gt;
			{&lt;br /&gt;
				freqdata *freqd = freqs + freq;&lt;br /&gt;
				if (p-&amp;gt;team == freqd-&amp;gt;freqteam)&lt;br /&gt;
				{&lt;br /&gt;
					int p_index = freqd-&amp;gt;playercount++;	//get player's index&lt;br /&gt;
					foundfreq = true;&lt;br /&gt;
					strncpy(freqd-&amp;gt;pilots[p_index].name, p-&amp;gt;name, 20);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// didnt find freq in struct so add new freq&lt;br /&gt;
			if (!foundfreq)&lt;br /&gt;
			{&lt;br /&gt;
				freqdata *freqd = freqs[freqcount];&lt;br /&gt;
&lt;br /&gt;
				if (manualsquads)&lt;br /&gt;
				{&lt;br /&gt;
					if (p-&amp;gt;team == teamA)&lt;br /&gt;
						strncpy(freqd-&amp;gt;freqname,squadA,20);&lt;br /&gt;
					else if (p-&amp;gt;team == teamB)&lt;br /&gt;
						strncpy(freqd-&amp;gt;freqname,squadB,20);&lt;br /&gt;
				}&lt;br /&gt;
				else&lt;br /&gt;
				{&lt;br /&gt;
					strncpy(freqd-&amp;gt;freqname, p-&amp;gt;squad, 20);&lt;br /&gt;
&lt;br /&gt;
					if (freqcount == 0)&lt;br /&gt;
					{&lt;br /&gt;
						teamA = p-&amp;gt;team;&lt;br /&gt;
						strncpy(squadA, p-&amp;gt;squad, 20);&lt;br /&gt;
					}&lt;br /&gt;
					else&lt;br /&gt;
					{&lt;br /&gt;
						teamB = p-&amp;gt;team;&lt;br /&gt;
						strncpy(squadB, p-&amp;gt;squad, 20);&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				 &lt;br /&gt;
				freqd-&amp;gt;freqteam = p-&amp;gt;team;&lt;br /&gt;
&lt;br /&gt;
				strncpy(freqd-&amp;gt;pilots[0].name, p-&amp;gt;name, 20);&lt;br /&gt;
&lt;br /&gt;
				freqd-&amp;gt;playercount++;&lt;br /&gt;
				freqcount++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		parse = parse-&amp;gt;next;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To get freqs in a game where there are only two teams:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// read pilots into freq struct data from ingame and on playing freqs&lt;br /&gt;
void botInfo::GetFreqs()&lt;br /&gt;
{&lt;br /&gt;
	_listnode &amp;lt;Player&amp;gt; *parse = playerlist-&amp;gt;head;&lt;br /&gt;
   &lt;br /&gt;
	while (parse)&lt;br /&gt;
	{&lt;br /&gt;
		Player *p = parse-&amp;gt;item;&lt;br /&gt;
&lt;br /&gt;
		if ((p-&amp;gt;ship != SHIP_Spectator) &amp;amp;&amp;amp; ((p-&amp;gt;team == teamA) || (p-&amp;gt;team == teamB)))&lt;br /&gt;
		{&lt;br /&gt;
			freqdata *freqd = freqs;	//assume teamA&lt;br /&gt;
&lt;br /&gt;
			if (p-&amp;gt;team == teamB)&lt;br /&gt;
				freqd++;	//increment to teamB&lt;br /&gt;
&lt;br /&gt;
			//copy player data&lt;br /&gt;
			pilot = freqd-&amp;gt;playercount++;	//read, then increment&lt;br /&gt;
			strncpy(freqd-&amp;gt;pilots[pilot].name, p-&amp;gt;name, 20);&lt;br /&gt;
			freqd-&amp;gt;pilots[pilot].cplaying_time = GetTickCount();&lt;br /&gt;
			freqd-&amp;gt;pilots[pilot].ship = p-&amp;gt;ship + 1;&lt;br /&gt;
&lt;br /&gt;
			// slot name&lt;br /&gt;
			if (freqd-&amp;gt;playercount &amp;lt; NUMBER_PILOTS)&lt;br /&gt;
				strncpy(freqd-&amp;gt;slotname[pilot], p-&amp;gt;name, 20);&lt;br /&gt;
&lt;br /&gt;
			// if freq doesn't already have name, give it player squad name&lt;br /&gt;
			if (!manualsquads &amp;amp;&amp;amp; (*p-&amp;gt;squad != '\0'))&lt;br /&gt;
				strncpy(freqd-&amp;gt;freqname, p-&amp;gt;squad, 20);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		parse = parse-&amp;gt;next;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Finding MVP from struct data ====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to parse the example structures to find the Most Valuable Player using the formula (2 * kills - deaths).&lt;br /&gt;
&lt;br /&gt;
''Requirements:'' Example structs defined.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int highest = -20;&lt;br /&gt;
int mvp = 0;&lt;br /&gt;
&lt;br /&gt;
freqdata *freqd = freqs + mvpteam;	//pointer to save repeated indexing&lt;br /&gt;
&lt;br /&gt;
for (pilot = 0; pilot &amp;lt; freqd-&amp;gt;playercount; pilot++)&lt;br /&gt;
{&lt;br /&gt;
	int score = 2 * freqd-&amp;gt;pilots[pilot].kills - freqd-&amp;gt;pilots[pilot].deaths;&lt;br /&gt;
	if (score &amp;gt; highest)&lt;br /&gt;
	{&lt;br /&gt;
		mvp = pilot;&lt;br /&gt;
		highest = score;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Tracking and displaying player weapon damage stats ====&lt;br /&gt;
&lt;br /&gt;
This example shows how to track weapon damage using the weapon structure for clientprot.h and player tags.&lt;br /&gt;
&lt;br /&gt;
In '''spawn.cpp''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
case EVENT_WatchDamage:&lt;br /&gt;
{&lt;br /&gt;
//...&lt;br /&gt;
	if (PLAYING &amp;amp;&amp;amp; p != k)  // if tracking stats and player isn't hurting self&lt;br /&gt;
	{&lt;br /&gt;
		if (wi.type == PROJ_PBomb)&lt;br /&gt;
		{&lt;br /&gt;
			set_tag(k, DMG_BOMB_DEALT, get_tag(k, DMG_BOMB_DEALT) + damage);&lt;br /&gt;
			set_tag(p, DMG_BOMB_TAKEN, get_tag(p, DMG_BOMB_TAKEN) + damage);&lt;br /&gt;
		}&lt;br /&gt;
		else if (wi.type == PROJ_BBullet)&lt;br /&gt;
		{&lt;br /&gt;
			set_tag(k, DMG_BULLET_DEALT, get_tag(k, DMG_BULLET_DEALT) + damage);&lt;br /&gt;
			set_tag(p, DMG_BULLET_TAKEN, get_tag(k, DMG_BULLET_TAKEN) + damage);&lt;br /&gt;
		}&lt;br /&gt;
		set_tag(k, DMG_TOTAL_DEALT, get_tag(k, DMG_TOTAL_DEALT) + damage);&lt;br /&gt;
		set_tag(p, DMG_TOTAL_TAKEN, get_tag(p, DMG_TOTAL_TAKEN) + damage);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To print those statistics, just use the sprintf function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendPublic(&amp;quot;Showing stats:&amp;quot;);&lt;br /&gt;
		 &lt;br /&gt;
_listnode &amp;lt;Player&amp;gt; *parse = playerlist-&amp;gt;head;				 &lt;br /&gt;
	&lt;br /&gt;
while (parse) &lt;br /&gt;
{&lt;br /&gt;
	Player *p = parse-&amp;gt;item;&lt;br /&gt;
	 &lt;br /&gt;
	if (get_tag(p, DMG_TOTAL_DEALT) &amp;gt; 0)&lt;br /&gt;
	{&lt;br /&gt;
		char str[256];&lt;br /&gt;
		sendPublic(p-&amp;gt;name);&lt;br /&gt;
		sprintf(str, &amp;quot;Dmg Dealt: Total %04d, Bomb %04d, Bullet %04d  &amp;quot;,&lt;br /&gt;
			get_tag(p,DMG_TOTAL_DEALT),&lt;br /&gt;
			get_tag(p,DMG_BOMB_DEALT),&lt;br /&gt;
			get_tag(p,DMG_BULLET_DEALT),&lt;br /&gt;
		);&lt;br /&gt;
		sendPublic(str);&lt;br /&gt;
		sprintf(str, &amp;quot;Dmg TAKEN: Total %04d, Bomb %04d, Bullet %04d&amp;quot;,&lt;br /&gt;
			get_tag(p,DMG_TOTAL_TAKEN),&lt;br /&gt;
			get_tag(p,DMG_BOMB_TAKEN),&lt;br /&gt;
			get_tag(p,DMG_BULLET_TAKEN)&lt;br /&gt;
			);&lt;br /&gt;
		sendPublic(str);&lt;br /&gt;
	}&lt;br /&gt;
	parse = parse-&amp;gt;next;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Making bot spectate coordinates ====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to make the bot spectate certain coordinates (512, 600 in this case). This will allow the bot to receive more position packets and weapons packets for players in the area.&lt;br /&gt;
&lt;br /&gt;
'''Warning:''' Put &amp;quot;tell(makeSendPosition(false));&amp;quot; in the EVENT_PositionHook handling or bad things may happen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tell(makeFollowing(false));	//make sure bot is not following anyone&lt;br /&gt;
tell(makeFlying(true));		//turn over positioning to DLL&lt;br /&gt;
me-&amp;gt;move(512 * 16, 600 * 16);	//move the bot to specified coordinates&lt;br /&gt;
tell(makeSendPosition(true));	//update bot's position on server&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cyan~Fire</name></author>	</entry>

	</feed>