<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.minegoboom.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=D1st0rt</id>
		<title>ASSS Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.minegoboom.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=D1st0rt"/>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php/Special:Contributions/D1st0rt"/>
		<updated>2026-05-10T03:23:46Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.28.2</generator>

	<entry>
		<id>http://wiki.minegoboom.com/index.php?title=Main_Page&amp;diff=6141</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=Main_Page&amp;diff=6141"/>
				<updated>2010-09-18T14:11:22Z</updated>
		
		<summary type="html">&lt;p&gt;D1st0rt: Undo revision 6140 by Francisco21 (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;border: 1px solid #c6c9ff; background-color: #f0f0ff; text-align: center; font-variant: small-caps;&amp;quot;&amp;gt;&lt;br /&gt;
Quicklinks:&lt;br /&gt;
[[:Category:ASSS|ASSS Documents]] | [[:Category:FAQ|Frequently Asked Questions]] | [[:Category:Guides|Guides]] | [[:Category:Definitions|Glossary]] | [[:Category:Utilities|Utilities]] | [[Special:Categories|More...]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellspacing=10&amp;gt;&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;What is ASSS?&amp;lt;/h3&amp;gt;&lt;br /&gt;
[[ASSS]] (A Small Subspace Server) is an open source server, created by [[User:grelminar|grelminar]], that facilitates games among [[Continuum]] users. It's a replacement, not a clone, of [[Subgame]], which was the old server created by [[VIE]] and later upgraded by [[PriitK|Priit Kasesalu]], a freelance [[Subspace]] programmer who also wrote Continuum with the assistance of [[Mr Ekted]]. &lt;br /&gt;
&lt;br /&gt;
ASSS allows many advanced features never before offered by Subgame nor user-made [[Bots]]. Within this wiki, you'll find documents about how to use some of these advanced features, and documentation on how to create your own extensions to the server software.  There is also an [[ASSS Commands Cheatsheet]] to help you get started.&lt;br /&gt;
&lt;br /&gt;
To start finding answers, try the quicklinks (above) or check out the [[Special:Categories|Categories]]. If you're having problems with your server, try reading the [[Server Troubleshooting]] guide. If you would like to contribute see [[ASSS_Wiki:Community Portal|Community Portal]]. For further assistance or questions, please visit the [http://forums.minegoboom.com Server Help Forums] where other users will be able to respond to your questions. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;External Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*[http://asss.minegoboom.com/ Official ASSS Site]&lt;br /&gt;
*[http://www.shanky.com/server/ Server Help]&lt;br /&gt;
*[http://forums.minegoboom.com/ Server Help Forums]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width: 30%; border: 1px solid #c6c9ff; padding: 5px&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Current Events&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ASSS version 1.4.4 has been released as of September 7, 2007. This version addresses several bug fixes, and now requires Continuum 0.40.&lt;br /&gt;
&lt;br /&gt;
'''Download'''&lt;br /&gt;
*[http://asss.yi.org/files/asss-1.4.4.tar.gz Linux]&lt;br /&gt;
*[http://asss.yi.org/files/asss-1.4.4-srconly.tar.gz Source Only]&lt;br /&gt;
*[http://asss.yi.org/files/asss-1.4.4.zip Windows]&lt;br /&gt;
*[http://bitbucket.org/grelminar/asss/overview/ Change Log]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Current events|More Events...]]&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Wiki]]&lt;/div&gt;</summary>
		<author><name>D1st0rt</name></author>	</entry>

	<entry>
		<id>http://wiki.minegoboom.com/index.php?title=TWCore&amp;diff=4964</id>
		<title>TWCore</title>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=TWCore&amp;diff=4964"/>
				<updated>2006-11-06T23:17:08Z</updated>
		
		<summary type="html">&lt;p&gt;D1st0rt: Website down notice&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TWCore is an open source bot core written in Java. Widely used in [[Trench Wars]] (TW) and [[Redstar]].&lt;br /&gt;
&lt;br /&gt;
== Plugins ==&lt;br /&gt;
Source: http://forums.minegoboom.com/viewtopic.php?p=54919#54919&lt;br /&gt;
&lt;br /&gt;
'''[[User:D1st0rt|D1st0rt]] says:'''&lt;br /&gt;
----&lt;br /&gt;
Acrobot runs acromania or whatever its called&amp;lt;br&amp;gt;&lt;br /&gt;
AlertBot sends alerts to players&amp;lt;br&amp;gt;&lt;br /&gt;
basicbot is just a blank bot&amp;lt;br&amp;gt;&lt;br /&gt;
bouncerbot kicks people out of arenas when they enter if they aren't allowed&amp;lt;br&amp;gt;&lt;br /&gt;
enigmabot runs enigma&amp;lt;br&amp;gt;&lt;br /&gt;
f1bot I assume does some type of racing&amp;lt;br&amp;gt;&lt;br /&gt;
mrarrogant kicks idlers and multiclienters&amp;lt;br&amp;gt;&lt;br /&gt;
purepubbot runs pure pubs&amp;lt;br&amp;gt;&lt;br /&gt;
robohelp does various administrative things&amp;lt;br&amp;gt;&lt;br /&gt;
staffbot does stuff involving potential staff considerations and viewing warnings current staff has made&amp;lt;br&amp;gt;&lt;br /&gt;
triviabot runs trivia&amp;lt;br&amp;gt;&lt;br /&gt;
twbot can be loaded with a ton of different modules for various things&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
*[http://www.ssdownloads.com/download.php?fid=1053 Version 0.89]&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
*[http://twcore.twzone.net/core/ Official Website] &lt;br /&gt;
'''''Note''': The official website is currently down and has been for some time. A partially archived copy exists [http://web.archive.org/web/20050207064935/twcore.twzone.net/core/ here], and [http://www.google.com/search?q=twcore.twzone.net&amp;amp;filter=0 Google] has cached a few of the forum posts''&lt;br /&gt;
&lt;br /&gt;
[[Category: Bots]]&lt;/div&gt;</summary>
		<author><name>D1st0rt</name></author>	</entry>

	<entry>
		<id>http://wiki.minegoboom.com/index.php?title=Talk:Search_Phrases&amp;diff=3623</id>
		<title>Talk:Search Phrases</title>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=Talk:Search_Phrases&amp;diff=3623"/>
				<updated>2005-10-17T22:04:19Z</updated>
		
		<summary type="html">&lt;p&gt;D1st0rt: search topics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Mine GO BOOM|Mine GO BOOM]] 20:15, Oct 14, 2005 (EDT): Yes, that big asss joke is funny, but I put this here because it is interesting in finding what people are searching major search engines for, and what we could expand upon to include what some people want to find.&lt;br /&gt;
&lt;br /&gt;
[[User:D1st0rt|D1st0rt]] 18:04, Oct 17, 2005 (EDT): By that token, we should put up a page on how to cheat and how to bypass bans :p It seems like the other main thing was how to set up specific game modes in asss, like how to set up a soccer or turf zone. I thought &amp;quot;pump that asss&amp;quot; was better than &amp;quot;big asss&amp;quot;&lt;/div&gt;</summary>
		<author><name>D1st0rt</name></author>	</entry>

	<entry>
		<id>http://wiki.minegoboom.com/index.php?title=Talk:Latency&amp;diff=5287</id>
		<title>Talk:Latency</title>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=Talk:Latency&amp;diff=5287"/>
				<updated>2005-03-27T14:39:10Z</updated>
		
		<summary type="html">&lt;p&gt;D1st0rt: link for sync&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:D1st0rt|D1st0rt]]: This doesn't mean anything to me since I only skimmed through it, but might be useful to somebody else&lt;br /&gt;
http://catid.ssihosting.com/files/sync.txt&lt;/div&gt;</summary>
		<author><name>D1st0rt</name></author>	</entry>

	<entry>
		<id>http://wiki.minegoboom.com/index.php?title=Talk:UDP_Game_Protocol&amp;diff=3912</id>
		<title>Talk:UDP Game Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=Talk:UDP_Game_Protocol&amp;diff=3912"/>
				<updated>2005-03-13T04:49:01Z</updated>
		
		<summary type="html">&lt;p&gt;D1st0rt: protocol link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Smong|Smong]]: Can you explain how to use the handler offsets. Which versions of Subspace they are valid for with MD5's of the binaries, and possible a link to the latest version.&lt;br /&gt;
&lt;br /&gt;
[[User:D1st0rt|D1st0rt]]:I got [http://d1st0rt.sscentral.com/packets.html this one] from kirk's site, its a bit more in depth and include the directory server protocol&lt;/div&gt;</summary>
		<author><name>D1st0rt</name></author>	</entry>

	<entry>
		<id>http://wiki.minegoboom.com/index.php?title=Talk:Ship_Settings&amp;diff=1558</id>
		<title>Talk:Ship Settings</title>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=Talk:Ship_Settings&amp;diff=1558"/>
				<updated>2005-03-06T15:36:25Z</updated>
		
		<summary type="html">&lt;p&gt;D1st0rt: rotation units&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Isn't this kinda a pointless page? I mean, all this information is in [[Complete Settings]] and is dispersed in greater detail in each section's page. --[[User:Cyan~Fire|Cyan~Fire]]&lt;br /&gt;
&lt;br /&gt;
[[User:Pests|Pests]]: This and Complete Settings are two different things. Theres a section in the template.sss named &amp;quot;All&amp;quot; and Complete Settings has EVERY section, including this &amp;quot;All&amp;quot; section.&lt;br /&gt;
&lt;br /&gt;
That's pretty confusing, especially considering the section name &amp;quot;All&amp;quot; never appears in an actual config file. It's just a shorthand that means there are eight sections these settings can go in, one for each ship type. Futhermore, it would be good to differentiate between settings that apply to subgame, settings that apply to asss, and settings that apply to both, before just mindlessly dumping the contents of template.sss on here. --[[User:grelminar|grelminar]]&lt;br /&gt;
&lt;br /&gt;
== my updates ==&lt;br /&gt;
&lt;br /&gt;
OK, I don't think I have any questions on this one. But I do have a comment.&lt;br /&gt;
&lt;br /&gt;
I'm pretty sure that energy and speed are Energy / 1000 * hundredths of seconds and Pixels / 1000 * hundredths of seconds, respectively. I also made a marginally tested educated guess that weapon speed units are the same as ship speed units. I also figured that Energy / seconds / 10 is a much easier to read format (I sure don't have to think so much), although a bit less standard. Any comments/questions/suggestions/curses? --[[User:Cyan~Fire|Cyan~Fire]]&lt;br /&gt;
&lt;br /&gt;
[[User:Smong|Smong]]: I don't understand this: '90Â°/hundredths of seconds'.&lt;br /&gt;
&lt;br /&gt;
I would think it would be 9Â°, since that is the rotation increment --[[User:D1st0rt|D1st0rt]]&lt;/div&gt;</summary>
		<author><name>D1st0rt</name></author>	</entry>

	<entry>
		<id>http://wiki.minegoboom.com/index.php?title=Prize&amp;diff=1470</id>
		<title>Prize</title>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=Prize&amp;diff=1470"/>
				<updated>2005-03-06T15:33:44Z</updated>
		
		<summary type="html">&lt;p&gt;D1st0rt: elaborated on #-13 and #-14&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A '''Prize''' is an upgrade to a ship in [[SubSpace]] which can either be picked up in a Green (a floating prize box), bought, or randomly given at spawn.&lt;br /&gt;
&lt;br /&gt;
Each prize has an identifiying number, with the negative taking away the prize. Here they are:&lt;br /&gt;
*1 = Recharge&lt;br /&gt;
*2 = Energy&lt;br /&gt;
*3 = Rotation&lt;br /&gt;
*4 = Stealth&lt;br /&gt;
*5 = Cloak&lt;br /&gt;
*6 = XRadar&lt;br /&gt;
*7 = Warp&lt;br /&gt;
*8 = Guns&lt;br /&gt;
*9 = Bombs&lt;br /&gt;
*10 = Bouncing Bullets&lt;br /&gt;
*11 = Thruster&lt;br /&gt;
*12 = Top Speed&lt;br /&gt;
*13 = Full Charge (-13 is Energy Depleted)&lt;br /&gt;
*14 = Engine Shutdown (-14 is Severe Shutdown, lasts longer)&lt;br /&gt;
*15 = MultiFire&lt;br /&gt;
*16 = Proximity&lt;br /&gt;
*17 = Super!&lt;br /&gt;
*18 = Shields&lt;br /&gt;
*19 = Shrapnel&lt;br /&gt;
*20 = AntiWarp&lt;br /&gt;
*21 = Repel&lt;br /&gt;
*22 = Burst&lt;br /&gt;
*23 = Decoy&lt;br /&gt;
*24 = Thor&lt;br /&gt;
*25 = Multi&lt;br /&gt;
*26 = Brick&lt;br /&gt;
*27 = Rocket&lt;br /&gt;
*28 = Portal&lt;/div&gt;</summary>
		<author><name>D1st0rt</name></author>	</entry>

	<entry>
		<id>http://wiki.minegoboom.com/index.php?title=MERVBot_Tutorial&amp;diff=1300</id>
		<title>MERVBot Tutorial</title>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=MERVBot_Tutorial&amp;diff=1300"/>
				<updated>2005-02-17T20:59:20Z</updated>
		
		<summary type="html">&lt;p&gt;D1st0rt: don't need subspace.bin anymore&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial is based on the ever-popular MERVBot Tutorial by Underlord. It has since been updated to reflect new changes with MervBot.&lt;br /&gt;
&lt;br /&gt;
This tutorial also assumes that you have a basic knowledge of C++. If you don't, check out cplusplus.com's great [http://www.cplusplus.com/doc documentation].&lt;br /&gt;
&lt;br /&gt;
==Setting up a MERVBot (plugin)==&lt;br /&gt;
&lt;br /&gt;
[http://catid.sscentral.com/ MERVBot download site]&lt;br /&gt;
&lt;br /&gt;
[http://www.ssforum.net/ MERVBot Forum] (Development - MervBot forum)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Obtaining MERVBot===&lt;br /&gt;
&lt;br /&gt;
* Download the [http://catid.ssihosting.com/files/MERVBot.rar latest build].&lt;br /&gt;
* Unrar MERVBot.rar into a new folder. (example c:\program files\continuum\mervbot)&lt;br /&gt;
* Unzip src.zip into &amp;amp;quot;src&amp;amp;quot; subfolder of that new folder (example c:\program files\continuum\mervbot\src)&lt;br /&gt;
&lt;br /&gt;
===Preparing to write a plugin===&lt;br /&gt;
&lt;br /&gt;
''Note:'' if you only want to execute someone's premade plugin (.dll), skip to [[MERVBot Tutorial#Run your bot dll|step 4]], otherwise continue to learn how to make your own bot&lt;br /&gt;
&lt;br /&gt;
Download [http://catid.sscentral.com/files/Tutorial.zip DLL-plugin Tutorial] and unzip Tutorial.zip (containing spawn.h, spawn.cpp, and command.cpp) into a &amp;amp;quot;tutorial&amp;amp;quot; subfolder of that new folder. (example c:\program files\continuum\mervbot\src\tutorial).&lt;br /&gt;
&lt;br /&gt;
''File descriptions:''&lt;br /&gt;
* spawn.h = declare/initialize globals&lt;br /&gt;
* command.cpp = code for commands coming into bot (ie /!help, /!play, etc)&lt;br /&gt;
* spawn.cpp = code that interacts with bot spawns&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Microsoft Visual c++===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Start Visual Studios 6.0.&lt;br /&gt;
&amp;lt;li&amp;gt;Click the Drop Down Menu labeled &amp;amp;quot;File&amp;amp;quot; at the top left of your screen.&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;amp;quot;New&amp;amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt;On the next screen that comes up, choose from the Project tab, then Win32 Dynamic-Link Library&lt;br /&gt;
&amp;lt;li&amp;gt;Select the &amp;amp;quot;/src&amp;amp;quot; folder as the base folder (example c:\program files\continuum\mervbot\src)&lt;br /&gt;
&amp;lt;li&amp;gt;Name your project &amp;amp;quot;mybot&amp;amp;quot;. This will make a &amp;amp;quot;mybot&amp;amp;quot; subfolder in your &amp;amp;quot;src&amp;amp;quot; folder. Click OK. (example creates c:\program files\continuum\mervbot\src\mybot)&lt;br /&gt;
&amp;lt;li&amp;gt;Choose to create an &amp;amp;quot;Empty DLL project&amp;amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;amp;quot;Finish&amp;amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt;Click the Drop Down Menu labbled &amp;amp;quot;Project&amp;amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;amp;quot;Add To Project Files&amp;amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy only spawn.h, spawn.cpp, and command.cpp from the &amp;amp;quot;tutorial&amp;amp;quot; folder into the this new folder. (example from c:\program files\continuum\mervbot\src\tutorial to c:\program files\continuum\mervbot\src\mybot)&lt;br /&gt;
&amp;lt;li&amp;gt;Click the Drop Down Menu labelled &amp;amp;quot;Build&amp;amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;amp;quot;Build (dll name)&amp;amp;quot; - where (dll name) is &amp;amp;quot;mybot&amp;amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;Go into your &amp;amp;quot;mybot&amp;amp;quot; folder and look for a folder named &amp;amp;quot;Debug&amp;amp;quot;&lt;br /&gt;
(example c:\program files\continuum\mervbot\src\mybot\debug)&lt;br /&gt;
&amp;lt;li&amp;gt;Your new DLL will be in that folder. (example mybot.dll)&lt;br /&gt;
&amp;lt;li&amp;gt;Copy mybot.dll to your base folder that has mervbot.exe in it (example c:\program files\continuum\mervbot)&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Run your bot dll===&lt;br /&gt;
&lt;br /&gt;
To run your bot you need your DLL (mybot.dll), Commands.txt, MERVBot.exe, MERVBot.ini, Operators.txt, Spawns.txt, and zlib.dll all in one folder (example c:\program files\continuum\mervbot).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit spawns.txt. '''Read every word of spawns.txt to find out what needs to go in there.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Example:''&lt;br /&gt;
&amp;lt;pre&amp;gt;2v2-Bot-League : botpw : 2v2a : 2v2league : staffpw&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Note:'' The bot will attempt to create the name if it doesn't exist already.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Edit MERVBot.ini&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[Login]&lt;br /&gt;
Zone=216.33.98.254:21000	// make that your zone IP:PORT available from zone.dat in Continuum dir&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Edit operators.txt. '''Read every word of operators.txt to find out what needs to go in there.'''&amp;lt;br /&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
''Example:''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
4:my_name:&lt;br /&gt;
4:another_sysop:&lt;br /&gt;
3:other_person:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure the bot is on vip.txt or has smod+ access, then run MERVBot.exe.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;You can now edit your plugin code by opening &amp;amp;quot;mybot.dsw&amp;amp;quot; (example c:\program files\continuum\mervbot\src\mybot\mybot.dsw) in Microsoft Visual C++. Edit the spawn.h, spawn.cpp, and command.cpp to create your plugin, then build, copy your updated DLL to your MERVBot.exe folder and then execute the bot. Use the tutorial to get ideas on how to implement certain types of features into the bot.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Player Commands - (command.cpp)==&lt;br /&gt;
&lt;br /&gt;
This section describes how to implement player commands into your plugin. Commands are sent to the botInfo::gotCommand function in command.cpp.&lt;br /&gt;
&lt;br /&gt;
Example (makes bot reply to !test with &amp;quot;hi&amp;quot;):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void botInfo::gotCommand(Player *p, Command *c) {&lt;br /&gt;
	switch (p-&amp;gt;access)&lt;br /&gt;
	{&lt;br /&gt;
        case OP_Moderator:&lt;br /&gt;
                {&lt;br /&gt;
                     // handle moderator-operator commands here.&lt;br /&gt;
                }&lt;br /&gt;
	case OP_Player: //appropriate staff rank here.&lt;br /&gt;
		{&lt;br /&gt;
			if (c-&amp;gt;check(&amp;quot;test&amp;quot;)) //replace &amp;quot;test&amp;quot; with whatever command you want&lt;br /&gt;
			{&lt;br /&gt;
				//put your command code here&lt;br /&gt;
				sendPrivate(p,&amp;quot;hi&amp;quot;); //example&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===How to have commands with numerical parameters===&lt;br /&gt;
Example (!test #):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	if (c-&amp;gt;check(&amp;quot;test&amp;quot;)) { // reads in test #, default to 1 if invalid number input&lt;br /&gt;
		int temp = 1;&lt;br /&gt;
&lt;br /&gt;
		if (isNumeric(c-&amp;gt;final))&lt;br /&gt;
			temp = atoi(c-&amp;gt;final);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===How to have player name as input===&lt;br /&gt;
Example (!rank player):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	if (c-&amp;gt;check(&amp;quot;rank&amp;quot;))&lt;br /&gt;
	{&lt;br /&gt;
		String player_name = c-&amp;gt;final;&lt;br /&gt;
&lt;br /&gt;
		if (player_name.IsEmpty()) // default name to self if invalid name&lt;br /&gt;
			player_name = p-&amp;gt;name;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===How to have multi-parameter input===&lt;br /&gt;
&lt;br /&gt;
Use the CRT function sscanf() to scan the string for the values.&lt;br /&gt;
&lt;br /&gt;
Example (!squads squadA vs squadB ''or'' !squads teamA:squadA:teamB:squadB):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
else if (c-&amp;gt;check(&amp;quot;squads&amp;quot;))&lt;br /&gt;
{&lt;br /&gt;
	char squadA[20], squadB[20];&lt;br /&gt;
	int teamA, teamB;&lt;br /&gt;
&lt;br /&gt;
	strncpy(squadA, &amp;quot;&amp;quot;, 20);&lt;br /&gt;
	strncpy(squadB, &amp;quot;&amp;quot;, 20);&lt;br /&gt;
&lt;br /&gt;
	int n_found;&lt;br /&gt;
&lt;br /&gt;
	//Note: %[A-Za-z ] is equivalent to %s, but allows an internal space.&lt;br /&gt;
&lt;br /&gt;
	//scan the string for the two squads separated by &amp;quot; vs &amp;quot;&lt;br /&gt;
	n_found = sscanf(c-&amp;gt;final, &amp;quot;%[A-Za-z ] vs %[A-Za-z ]&amp;quot;, squadA, squadB);&lt;br /&gt;
&lt;br /&gt;
	//if that fails, scan the string for freqA:squadA:freqB:squadB&lt;br /&gt;
	if (n_found &amp;lt; 2)&lt;br /&gt;
		sscanf(c-&amp;gt;final, &amp;quot;%d:%[A-Za-z ]:%d:%[A-Za-z ]&amp;quot;, &amp;amp;teamA, squadA, &amp;amp;teamB, squadB);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Help Menu===&lt;br /&gt;
When a player sends !help to the bot, MERVBot calls botInfo::gotHelp() in each plugin loaded.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void botInfo::gotHelp(Player *p, Command *c)&lt;br /&gt;
{&lt;br /&gt;
	if (!*c-&amp;gt;final)&lt;br /&gt;
	{&lt;br /&gt;
	sendPrivate(p, &amp;quot;4v4 Bot General Commands:&amp;quot;);&lt;br /&gt;
	sendPrivate(p, &amp;quot;------------------------&amp;quot;);&lt;br /&gt;
	sendPrivate(p, &amp;quot;!caps - get captain names&amp;quot;);&lt;br /&gt;
	sendPrivate(p, &amp;quot;!roster &amp;lt;squad&amp;gt; - get roster of a squad&amp;quot;);&lt;br /&gt;
	sendPrivate(p, &amp;quot;!schedule- get current schedule&amp;quot;);&lt;br /&gt;
	sendPrivate(p, &amp;quot;!score - get current score&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Event Calls==&lt;br /&gt;
&lt;br /&gt;
MERVBot is event based, so when making a bot you need to decide what will happen at certain events. Normal plugins need to consider what happens when bot enters arena, player enters arena, player leaves arena, player events like kill, shipchange, teamchange, spec, move then any other relevant events to your bot. Just worry about events that are relevant to the tasks your bot is doing.&lt;br /&gt;
&lt;br /&gt;
MERVBot sends events to botInfo::gotEvent() in spawn.cpp. Each supported event is already present and categorized in gotEvent(), along with the paramters that MERVBot sends with the event. When a plugin wants the bot to do something, it sends tell(event) to the bot.&lt;br /&gt;
&lt;br /&gt;
See dllcore.h for a list of current events and their descriptions. Dllcore.h also contains functions (like makeFollowing) to make events to send back to the bot via tell().&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tell(makeFollowing(false));&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==The Messaging System==&lt;br /&gt;
&lt;br /&gt;
Private message - void sendPrivate(Player *player, char *msg);&lt;br /&gt;
&lt;br /&gt;
''Examples:''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendPrivate(p,&amp;quot;hi&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
String s=&amp;quot;test&amp;quot;;&lt;br /&gt;
sendPrivate(p,s);&lt;br /&gt;
&lt;br /&gt;
String s=&amp;quot;test&amp;quot;;&lt;br /&gt;
s += &amp;quot;ing&amp;quot;;&lt;br /&gt;
sendPrivate(p,s);&lt;br /&gt;
&lt;br /&gt;
char captain1[20];&lt;br /&gt;
char captain2[20];&lt;br /&gt;
strncpy(captain1,&amp;quot;&amp;quot;,20);&lt;br /&gt;
strncpy(captain2,&amp;quot;&amp;quot;,20);&lt;br /&gt;
sendPrivate(p,(String) captain1 + &amp;quot; and &amp;quot; + (String) captain2 + &amp;quot; are the captains.&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Team message - void sendTeamPrivate(Uint16 team, char *msg);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Examples: &amp;lt;br /&amp;gt;&lt;br /&gt;
a) sendTeamPrivate(8025,&amp;amp;quot;hi spec freq&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
b) Uint16 test=0; sendTeamPrivate(test,&amp;amp;quot;hi freq 0&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Public message - void sendPublic(char *msg);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Example: sendPublic(&amp;amp;quot;*arena &amp;amp;quot; + (String) p-&amp;amp;gt;name + &amp;amp;quot; is now a captain&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
Chat channel message - void sendChannel(char *msg);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Example: sendChannel(&amp;amp;quot;hi chat channel&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
Remote private message - void sendRemotePrivate(char *name, char *msg);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Example: sendRemotePrivate(&amp;amp;quot;Player01&amp;amp;quot;, &amp;amp;quot;hi&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: to have bot print several lines of text fast it needs sysop in the&lt;br /&gt;
arena (sysop in arena bot first spawns to also) otherwise it'll print slow to avoid being&lt;br /&gt;
kicked for spam&lt;br /&gt;
&lt;br /&gt;
===Output of data in messages===&lt;br /&gt;
&amp;lt;p&amp;gt;An example of using normal strings to output data/messages.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 // does *arena X pilots left in game&lt;br /&gt;
 // NOTE: variable temp needs to be defined with some value&lt;br /&gt;
&lt;br /&gt;
 String s = &amp;quot;*arena &amp;quot;;&lt;br /&gt;
       s += temp;&lt;br /&gt;
       s += &amp;quot; pilots left in the game.&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 sendPublic(s);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 //NOTE: this can be considered inefficient.&lt;br /&gt;
&lt;br /&gt;
 sendPublic(&amp;quot;*arena &amp;quot; + (String)temp + &amp;quot; pilots left in the game&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;An example using sprintf to align/space data, where output data will be in this approximate format.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// output data will be in this approximate format (not lined up perfectly because of html)&lt;br /&gt;
// --------------------------------------------------------------------------------------&lt;br /&gt;
// Squad: squadname       PTS     FPTS    K    D  DMG DEALT TAKEN   F  FK    FLT&lt;br /&gt;
// --------------------------------------------------------------------------------------&lt;br /&gt;
// PlayerA              10000      500  116  101       9999 99999  10 150 980:55&lt;br /&gt;
// PlayerB                500      200    7    5       9999 99999   5   3   0:04&lt;br /&gt;
&lt;br /&gt;
char str[255];&lt;br /&gt;
sendPublic(&amp;quot;*arena--------------------------------------------------------------------------------&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
sprintf(str, &amp;quot;*arena Squad: %-20s   PTS     FPTS   K   D  DMG DEALT  TAKEN  F  FK  FLT&amp;quot;,&lt;br /&gt;
         freqs[freq].freqname&lt;br /&gt;
        );&lt;br /&gt;
&lt;br /&gt;
sendPublic(str);&lt;br /&gt;
&lt;br /&gt;
sendPublic(&amp;quot;*arena--------------------------------------------------------------------------------&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            // assuming existing freqs struct with data&lt;br /&gt;
            for (pilot=freqs[freq].playercount-1; pilot&amp;gt;=0; pilot--)&lt;br /&gt;
            {&lt;br /&gt;
                // on freq squad so print stats&lt;br /&gt;
                char outString[255];&lt;br /&gt;
&lt;br /&gt;
                sprintf(outString, &amp;quot;*arena %-20s %12d %8d %3d %3d %10d %6d %2d %3d %3d:%02d&amp;quot;,&lt;br /&gt;
                       freqs[freq].pilots[pilot].name,&lt;br /&gt;
                       freqs[freq].pilots[pilot].points,&lt;br /&gt;
                       freqs[freq].pilots[pilot].flagpoints,&lt;br /&gt;
                       freqs[freq].pilots[pilot].kills,&lt;br /&gt;
                       freqs[freq].pilots[pilot].deaths,&lt;br /&gt;
                       freqs[freq].pilots[pilot].dmgdealt,&lt;br /&gt;
                       freqs[freq].pilots[pilot].dmgtaken,&lt;br /&gt;
                       freqs[freq].pilots[pilot].flags,&lt;br /&gt;
                       freqs[freq].pilots[pilot].flagkills,&lt;br /&gt;
                       freqs[freq].pilots[pilot].flagtime /60,&lt;br /&gt;
                       freqs[freq].pilots[pilot].flagtime %60&lt;br /&gt;
                       );&lt;br /&gt;
                &lt;br /&gt;
                sendPublic(outString);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            // Notes: sprintf format = sprintf(output char string, spacing, variables)&lt;br /&gt;
            // Notes: s = chars, d = integer, - = left align, right align default&lt;br /&gt;
            // Notes: doing %02d = put 0 in front if not 2 digits, %3d:%02d makes 0:04 format&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Timer - How to use the timing function==&lt;br /&gt;
&lt;br /&gt;
Each time MERVBot sends an EVENT_Tick to a plugin (once a second), the default handler code decrements each value in an array of countdowns. You can modify the number of countdowns and add code to occur at a specific value for one of the countdowns.&lt;br /&gt;
&lt;br /&gt;
Setup number of timers and initialize in spawn.h:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class botInfo&lt;br /&gt;
{&lt;br /&gt;
	#define COUNTDOWNS 10 		// how many countdowns you want&lt;br /&gt;
	int countdown[COUNTDOWNS];	// this gives you 10 timers&lt;br /&gt;
&lt;br /&gt;
// unrelated code&lt;br /&gt;
 &lt;br /&gt;
	public:&lt;br /&gt;
	botInfo(CALL_HANDLE given)&lt;br /&gt;
	{&lt;br /&gt;
	countdown[0] = 0;&lt;br /&gt;
	countdown[1] = 60; // 60 seconds&lt;br /&gt;
	//&lt;br /&gt;
	// initialize values&lt;br /&gt;
	//&lt;br /&gt;
	countdown[9] = 5*60; // 5 minutes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Using timer functions in spawn.cpp:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
case EVENT_Tick:&lt;br /&gt;
{&lt;br /&gt;
	for (int i = 0; i &amp;lt; COUNTDOWNS; ++i) //cycles through each countdown you have&lt;br /&gt;
		--countdown[i]; //note that countdowns will continue decrementing past 0.&lt;br /&gt;
&lt;br /&gt;
	if (countdown[1] == 2) // when timer #1 hits two seconds&lt;br /&gt;
	{&lt;br /&gt;
	// do stuff here when timer #1 hits 2 seconds&lt;br /&gt;
	// example: sendPublic(&amp;quot;two seconds left, setting timer to 1 minute&amp;quot;);&lt;br /&gt;
	// example: countdown[1] = 60; // change timer #1 value&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can then have events (such as EVENT_PlayerDeath) change the value of a countdown to make the bot do something a set time after an event occurs.&lt;br /&gt;
&lt;br /&gt;
==Writing Functions==&lt;br /&gt;
&amp;lt;!-- begin of functions. --&amp;gt;&lt;br /&gt;
For this example, we will take the function called closeto, which determines&lt;br /&gt;
if a player exists in an specific radius around a point. Now to apply this function to a MervBot plugin, you need to write it into the spawn.cpp - at the top of the file in the //////// DLL &amp;amp;quot;import&amp;amp;quot; //////// setion, as below:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//////// DLL &amp;quot;import&amp;quot; ////////&lt;br /&gt;
&lt;br /&gt;
bool closeto(Player *p, int x, int y, int tolerance) &lt;br /&gt;
{&lt;br /&gt;
	// Requires the function abs() to be declared elsewhere.&lt;br /&gt;
	// Return if player p is in area of square with center x, y&lt;br /&gt;
	//   and radius = tolerance&lt;br /&gt;
	return (abs((p-&amp;gt;tile.x) - x) - tolerance) &amp;amp;&amp;amp; (abs((p-&amp;gt;tile.y) - y) - tolerance);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want your function to have access to the data from spawn.h botInfo class, you make the function apart of it. To do this, we add the '''botInfo::''' infront of the function name, in spawn.cpp.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//////// DLL &amp;quot;import&amp;quot; ////////&lt;br /&gt;
&lt;br /&gt;
bool botInfo::closeto(Player *p, int x, int y, int tolerance) &lt;br /&gt;
    {&lt;br /&gt;
	 ...&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In '''spawn.h''', add your method's prototype without botInfo::, it will look&lt;br /&gt;
like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//...&lt;br /&gt;
botInfo(CALL_HANDLE given)&lt;br /&gt;
 {&lt;br /&gt;
//  ...&lt;br /&gt;
 } &lt;br /&gt;
  bool closeto(Player *p, int x, int y, int tolerance); // Your function prototype.&lt;br /&gt;
&lt;br /&gt;
  void clear_objects(); //provided by Catid, and already exists.&lt;br /&gt;
  void object_target(Player *p); //provided by Catid, and already exists.&lt;br /&gt;
//  ...&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you're not familiar with prototypes, notice it is similar to that in your spawn.cpp, but without the botInfo::, and a trailing ;.&lt;br /&gt;
&lt;br /&gt;
===Function notes===&lt;br /&gt;
&lt;br /&gt;
Remember that you can pass variables [http://www.cplusplus.com/doc/tutorial/tut2-3.html by reference]. If variables are passed by reference, any changes a function makes to the variables will remain after the function returns.&lt;br /&gt;
&lt;br /&gt;
From time to time you will need to pass an array to a function. An example illustrating this is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	int freqs[5]; // declare our example data.&lt;br /&gt;
&lt;br /&gt;
	// call function - notice freqs and not freqs[5] or freqs[].&lt;br /&gt;
	my_function(freqs); //You're not passing the array itself, just a pointer to the array.&lt;br /&gt;
&lt;br /&gt;
	// function - notice freqs[] and not freqs[5] or freqs&lt;br /&gt;
	void my_function(int freqs[]) {} //You're specifying that the freqs parameter is an array&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Cycling through players==&lt;br /&gt;
&lt;br /&gt;
MERVBot stores player-related data in a linked list. A linked list is a datatype that stores its data in a series of structures linked to each other, hence the name.&lt;br /&gt;
&lt;br /&gt;
To search through the players in the arena, just start at the first link, then continue through all the following links until you reach the end:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
_listnode &amp;lt;Player&amp;gt; *parse = playerlist-&amp;gt;head;	//set to first link of the player linked list&lt;br /&gt;
&lt;br /&gt;
while (parse)	//parse will be NULL when we reach the last link&lt;br /&gt;
{&lt;br /&gt;
	Player *p = parse-&amp;gt;item;	//item is the actual data stored in the link&lt;br /&gt;
&lt;br /&gt;
	// do functionality here&lt;br /&gt;
	// Example 1: sendPrivate(p,&amp;quot;*watchdamage&amp;quot;); // turns on all pilot's watchdamage&lt;br /&gt;
	// Example 2: if (p-&amp;gt;safety != 0) sendPrivate(p,&amp;quot;*spec&amp;quot;); // spec all pilots in safe zone&lt;br /&gt;
&lt;br /&gt;
	parse = parse-&amp;gt;next;	//set parse to the next link&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, assuming our bot has smod+ privilages, the following code will set all non-spectator players to a specific ship. First begin by adding the following function prototype to the spawn.h in the botInfo class:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 void handleCmdSetShip(enum Ship_Types ship);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In spawn.cpp add:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void botInfo::handleCmdSetShip(enum Ship_Types ship)&lt;br /&gt;
{&lt;br /&gt;
	//Note that the parameter ship is of the Ship_Types enum,&lt;br /&gt;
	//so its value is hopefully restricted to the proper types.&lt;br /&gt;
&lt;br /&gt;
	_listnode &amp;lt;Player&amp;gt; *parse = playerlist-&amp;gt;head;&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 &amp;amp;&amp;amp; p-&amp;gt;ship != SHIP_Spectator )&lt;br /&gt;
				sendPrivate(p, &amp;quot;*setship &amp;quot; + (String)ship);&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;
To use, just call the function with the appropriate Ship_Type from the enum in clientprot.h:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 handleCmdSetShip(SHIP_Warbird);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Random numbers==&lt;br /&gt;
&lt;br /&gt;
===Generating a random number===&lt;br /&gt;
&lt;br /&gt;
To use this method, these two includes must be used:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;quot;time.h&amp;quot;    //provides time() function.&lt;br /&gt;
#include &amp;quot;stdlib.h&amp;quot;  //provides srand() and rand() functions.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    srand(time(NULL)); // seed random number generator.&lt;br /&gt;
&lt;br /&gt;
    rand(); // randomize.&lt;br /&gt;
&lt;br /&gt;
    int temp = (int) (51 * ((float)rand()/RAND_MAX));&lt;br /&gt;
       // the above line returns a random integer between 0 and 51.&lt;br /&gt;
       // Note: RAND_MAX is a global constant defined in stdlib.h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Picking a random pilot===&lt;br /&gt;
&lt;br /&gt;
''Note:'' A required user-defined function, getInGame(), must be created for this example to work.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int temp = GetTickCount() % getInGame();  // getInGame() = how many pilots in arena&lt;br /&gt;
&lt;br /&gt;
Player *rabbit = NULL;&lt;br /&gt;
&lt;br /&gt;
_listnode &amp;lt;Player&amp;gt; *parse = playerlist-&amp;gt;head;&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) // if player is not a spectator&lt;br /&gt;
	if ( !(--temp) ) // and if we've hit the randomly-selected pilot&lt;br /&gt;
	{&lt;br /&gt;
		rabbit = p;&lt;br /&gt;
		break;&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;
==Tracking time not using countdown[n]==&lt;br /&gt;
&lt;br /&gt;
This is a solution to a common problem of determining the amount of time it takes for something to occur. Using basic math, we record a start-time B, and an end-time E, both in the unit of seconds, we calculate the time elapsed by E-B.&lt;br /&gt;
&lt;br /&gt;
Lucky for us, Windows provides a function called GetTickCount() that is a measurement of time (milliseconds) that we can use for such cases.&lt;br /&gt;
&lt;br /&gt;
So:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	int begin = GetTickCount();&lt;br /&gt;
&lt;br /&gt;
	// do some code here.&lt;br /&gt;
&lt;br /&gt;
	int end = GetTickCount();&lt;br /&gt;
  &lt;br /&gt;
	int delta = (end - begin) / 1000;  // elapsed time converted to seconds from milliseconds&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Storing data for pilots==&lt;br /&gt;
&lt;br /&gt;
There are several ways to store data for pilots (ie tracking flagtime or kills in a period of time). Note that these methods are all purely internal to the bot, and don't effect anything beyond the plugin in any way.&lt;br /&gt;
&lt;br /&gt;
# Built-in get/setTag: Tracks data until player leaves the arena, then automatically deletes data.&lt;br /&gt;
# Modified perm get/setTag: Tracks data until bot leaves arena, then automatically deletes data. (Advantage: easier to sort by player)&lt;br /&gt;
# Custom Structs: Tracks data until plugin deletes it. (Advantage: easier to sort by freqs)&lt;br /&gt;
&lt;br /&gt;
''Note:'' 2 and 3 are similar in effect, mostly the difference is in how you are able to search through data you need to decide which method of storing data is best for each bot depending on what it does.&lt;br /&gt;
&lt;br /&gt;
===Built-in get/setTag method===&lt;br /&gt;
&lt;br /&gt;
Player tags simply tag a player with a number. Define the wanted values in '''spawn.h''' at the top:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#define DMG_DEALT        0&lt;br /&gt;
#define DMG_TAKEN        1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In spawn.cpp, initialize the values on ArenaEnter and PlayerEnter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
case EVENT_ArenaEnter:&lt;br /&gt;
{&lt;br /&gt;
	// ...&lt;br /&gt;
&lt;br /&gt;
	// do for all pilots in arena when bot enters&lt;br /&gt;
	_listnode &amp;lt;Player&amp;gt; *parse = playerlist-&amp;gt;head;&lt;br /&gt;
	while (parse)&lt;br /&gt;
	{&lt;br /&gt;
	   Player *p = parse-&amp;gt;item;  // get pilot&lt;br /&gt;
&lt;br /&gt;
	   set_tag(p, DMG_DEALT, 0); // initialize to 0&lt;br /&gt;
	   set_tag(p, DMG_TAKEN, 0);&lt;br /&gt;
	   sendPrivate(p, &amp;quot;*watchdamage&amp;quot;);  // optionally turn on player *watchdamage&lt;br /&gt;
&lt;br /&gt;
	   parse = parse-&amp;gt;next;  // get next pilot&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
case EVENT_PlayerEntering:&lt;br /&gt;
{&lt;br /&gt;
//	...&lt;br /&gt;
	set_tag(p, DMG_DEALT, 0); // initialize to 0&lt;br /&gt;
	set_tag(p, DMG_TAKEN, 0);&lt;br /&gt;
	sendPrivate(p,&amp;quot;*watchdamage&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then somewhere edit the tag values:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
case EVENT_WatchDamage:&lt;br /&gt;
{&lt;br /&gt;
	// sets tag for k (shooter) to be old value plus damage currently dealt&lt;br /&gt;
&lt;br /&gt;
	int old_damage = get_tag(k, DMG_BOMB_DEALT);&lt;br /&gt;
	set_tag(k, DMG_BOMB_DEALT, old_damage + damage);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following demonstrates how to retrieve the tag values as a command in command.cpp:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (c-&amp;gt;check(&amp;quot;showstats&amp;quot;))&lt;br /&gt;
{&lt;br /&gt;
	int temp = get_tag(p, DMG_TOTAL_DEALT);&lt;br /&gt;
&lt;br /&gt;
	String s = &amp;quot;You've done &amp;quot;;&lt;br /&gt;
	s += temp;&lt;br /&gt;
	s += &amp;quot; damage so far!&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	sendPrivate(p,s);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Modified permanent get/setTag method===&lt;br /&gt;
&lt;br /&gt;
This method is the same as get/setTag with some modifications to the tag code to retain them after the player leaves. Beware of using this method if bot is in an arena for long periods of time, linkedlist could get huge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// spawn.h, add char name[20]; into struct PlayerTag&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct PlayerTag&lt;br /&gt;
{&lt;br /&gt;
	Player *p;&lt;br /&gt;
	char name[20];&lt;br /&gt;
	int index;&lt;br /&gt;
	int data;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In spawn.cpp:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	case EVENT_PlayerLeaving:&lt;br /&gt;
	{&lt;br /&gt;
	    Player *p = (Player*)event.p[0];&lt;br /&gt;
&lt;br /&gt;
	    // killTags(p);  // remove so tag not deleted on arena exit&lt;br /&gt;
&lt;br /&gt;
//	...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Locate in spawn.cpp and modify accordingly:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int botInfo::get_tag(Player *p, int index)&lt;br /&gt;
{&lt;br /&gt;
    _listnode &amp;lt;PlayerTag&amp;gt; *parse = taglist.head;&lt;br /&gt;
    PlayerTag *tag;&lt;br /&gt;
&lt;br /&gt;
    while (parse)&lt;br /&gt;
    {&lt;br /&gt;
      tag = parse-&amp;gt;item;&lt;br /&gt;
&lt;br /&gt;
      // if (tag-&amp;gt;p == p)&lt;br /&gt;
      if (strcmp(tag-&amp;gt;name,p-&amp;gt;name)==0)  // now tracking by player name, not pointer&lt;br /&gt;
      if (tag-&amp;gt;index == index)&lt;br /&gt;
        return tag-&amp;gt;data;&lt;br /&gt;
&lt;br /&gt;
      parse = parse-&amp;gt;next;&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void botInfo::set_tag(Player *p, int index, int data)&lt;br /&gt;
{&lt;br /&gt;
    _listnode &amp;lt;PlayerTag&amp;gt; *parse = taglist.head;&lt;br /&gt;
    PlayerTag *tag;&lt;br /&gt;
&lt;br /&gt;
    while (parse)&lt;br /&gt;
    {&lt;br /&gt;
      tag = parse-&amp;gt;item;&lt;br /&gt;
&lt;br /&gt;
      //if (tag-&amp;gt;p == p)&lt;br /&gt;
      if (strcmp(tag-&amp;gt;name,p-&amp;gt;name)==0) // now tracking by player name, not pointer&lt;br /&gt;
      if (tag-&amp;gt;index == index)&lt;br /&gt;
      {&lt;br /&gt;
        tag-&amp;gt;data = data;&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
      parse = parse-&amp;gt;next;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    tag = new PlayerTag;&lt;br /&gt;
    // tag-&amp;gt;p = p; // not tracking by pointer anymore&lt;br /&gt;
    strncpy(tag-&amp;gt;name, p-&amp;gt;name, 20); // tracking by player name&lt;br /&gt;
    tag-&amp;gt;index = index;&lt;br /&gt;
    tag-&amp;gt;data = data;&lt;br /&gt;
    taglist.append(tag);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Using structs, implement in spawn.h:===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class botInfo&lt;br /&gt;
{&lt;br /&gt;
	struct freqdata &lt;br /&gt;
	{&lt;br /&gt;
		int kills, deaths;&lt;br /&gt;
	};&lt;br /&gt;
// ...&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make use of this structure, implement accordingly:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	freqdata freqs[100]; // 100 of those structs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Access the data in spawn.cpp using&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
freqs[56].kills = 1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Input/Output to files==&lt;br /&gt;
&lt;br /&gt;
For reading and/or writing to files with C++ you must have the required include statement as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
using namespace std; // not a good practice, but works.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Note'': neither example shows how to properly handle possible error-exceptions.&lt;br /&gt;
&lt;br /&gt;
===File stream input===&lt;br /&gt;
The following example will show you how to read a file, duel.ini, line by line.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#include &amp;quot;stdlib.h&amp;quot; // for atoi()&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ifstream file(&amp;quot;duel.ini&amp;quot;);&lt;br /&gt;
  char line[256];&lt;br /&gt;
&lt;br /&gt;
  // read in MaxBoxes=X&lt;br /&gt;
  while (file.getline(line, 256))&lt;br /&gt;
   {&lt;br /&gt;
     &lt;br /&gt;
     if (CMPSTART(&amp;quot;MaxBoxes=&amp;quot;, line)) //Does the line begin with MaxBoxes= ?&lt;br /&gt;
     {&lt;br /&gt;
       MAX_BOXES = atoi(&amp;amp;(line[9]));  //If so, read the value into an integer, using atio.&lt;br /&gt;
       break;&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
  file.close();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File stream output===&lt;br /&gt;
The following code example will demonstrate how to append to a file, duelleaguestat.inc.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ofstream file(&amp;quot;duelleaguestat.inc&amp;quot;, ios::app);   // app = put all data at end of file&lt;br /&gt;
 file &amp;lt;&amp;lt; squad1&amp;lt;&amp;lt; endl;  // squad1 = char[20]&lt;br /&gt;
 file &amp;lt;&amp;lt; &amp;quot; vs &amp;quot;&amp;lt;&amp;lt; endl;&lt;br /&gt;
 file &amp;lt;&amp;lt; squad2&amp;lt;&amp;lt; endl;  // squad2 = char[20]&lt;br /&gt;
 file.close();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similarly, you are able to write an output of a String to a file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 // key is converting String to (char*) to file write&lt;br /&gt;
 String str = freqs[freq].slotname[slot];&lt;br /&gt;
 str += &amp;quot;, Repels: &amp;quot; + (String)(int) t-&amp;gt;repel;&lt;br /&gt;
 file &amp;lt;&amp;lt; endl;&lt;br /&gt;
 file &amp;lt;&amp;lt; (char*) str;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Input with GetPrivateProfileString===&lt;br /&gt;
&lt;br /&gt;
GetPrivateProfileString(), a function provided by Windows for reading INI files, will automatically find an INI key (like &amp;quot;MaxBoxes=&amp;quot;) in a file for you. See the [http://msdn.microsoft.com/library MSDN Library] for help on this function. This next example will show how to read input using GetPrivateProfileString() based on the rampage plugin.&lt;br /&gt;
&lt;br /&gt;
The file format for rampage.ini is like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 7=is on a killing spree! (6:0)&lt;br /&gt;
 10=is opening a can of booya! (9:0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In '''rampageini.cpp''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;quot;rampageini.h&amp;quot;&lt;br /&gt;
#define WIN32_LEAN_AND_MEAN&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define NUM_RANKS 10&lt;br /&gt;
#define BUFFER_LEN 256&lt;br /&gt;
&lt;br /&gt;
struct RampageSettings&lt;br /&gt;
{&lt;br /&gt;
	char quotes[NUM_RANKS][BUFFER_LEN];&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
void LoadSettings(RampageSettings &amp;amp;setts);&lt;br /&gt;
&lt;br /&gt;
static char path[BUFFER_LEN];&lt;br /&gt;
&lt;br /&gt;
char *rank_type[NUM_RANKS] = { &amp;quot;7&amp;quot;, &amp;quot;10&amp;quot; };&lt;br /&gt;
&lt;br /&gt;
void LoadSettings(RampageSettings &amp;amp;setts)&lt;br /&gt;
{&lt;br /&gt;
	GetCurrentDirectory(BUFFER_LEN - 64, path);&lt;br /&gt;
	strcat(path, &amp;quot;\rampage.ini&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	for (int i = 0; i &amp;lt; NUM_RANKS; ++i)&lt;br /&gt;
	{&lt;br /&gt;
		GetPrivateProfileString(&amp;quot;Comments&amp;quot;, rank_type[i], &amp;quot;-ERROR-&amp;quot;,&lt;br /&gt;
					setts.quotes[i], BUFFER_LEN, path);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Player data==&lt;br /&gt;
&lt;br /&gt;
As stated earlier in the tutorial, MervBot stores useful player data internally as Player objects, see player.h for implementation details.&lt;br /&gt;
&lt;br /&gt;
* p-&amp;gt;name = player name stored as char[20] (''Note:'' SubSpace protocol allows for usernames to be 19+ in length, do not rely on this for player-name comparisions.)&lt;br /&gt;
* p-&amp;gt;squad = player squad stored as char[20]&lt;br /&gt;
* p-&amp;gt;ship = ship (0-9) enumerated as SHIP_Warbird, SHIP_Spectator, etc..&lt;br /&gt;
* p-&amp;gt;safety = whether ship is in safety zone (boolean)&lt;br /&gt;
* p-&amp;gt;bounty = player bounty&lt;br /&gt;
* p-&amp;gt;energy = player energy (have bot with *energy on to get accurate readings)&lt;br /&gt;
* p-&amp;gt;flagCount = how many flags player is holding&lt;br /&gt;
* p-&amp;gt;team = player frequency&lt;br /&gt;
* p-&amp;gt;(burst, repel, thor, brick, decoy, rocket, portal) = how many items of that type player has&lt;br /&gt;
* p-&amp;gt;(stealth, cloak, xradar, awarp, ufo, flash, safety, shields, supers) = if player has that item on (boolean)&lt;br /&gt;
* p-&amp;gt;score.killPoints = player kill points&lt;br /&gt;
* p-&amp;gt;score.flagPoints = player flag points&lt;br /&gt;
* p-&amp;gt;score.wins = player kills from f2&lt;br /&gt;
* p-&amp;gt;score.losses = player deaths from f2&lt;br /&gt;
&lt;br /&gt;
Just access the respective member of the Player class to check the player's property.&lt;br /&gt;
&lt;br /&gt;
For example, in spawn.cpp, to check whether a player is in a safety zone:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EVENT_PlayerMove:&lt;br /&gt;
{&lt;br /&gt;
   Player *p = (Player*)event.p[0];&lt;br /&gt;
&lt;br /&gt;
   if ( p-&amp;gt;safety ) // player is in safe zone.&lt;br /&gt;
     {&lt;br /&gt;
        // do something.&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
   if ( !p-&amp;gt;safety ) // player NOT in safe zone.&lt;br /&gt;
     {&lt;br /&gt;
        // do something.&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Bot built in functions==&lt;br /&gt;
&lt;br /&gt;
Here are some useful MervBot commands to control what the bot is doing.&lt;br /&gt;
&lt;br /&gt;
Player.cpp:&lt;br /&gt;
* Player::move(Sint32 x, Sint32 y) moves a player to the coordinates specified by x and y&lt;br /&gt;
* Player::clone(Player *p) clones a player into a player class&lt;br /&gt;
&lt;br /&gt;
Look in Commands.txt , command.cpp (core), or /!help to bot to see all bot external commands (example /!go &amp;amp;lt;arena&amp;amp;gt;).&lt;br /&gt;
&lt;br /&gt;
''LVZ Object toggling commands in plugins are to go here.''&lt;br /&gt;
&lt;br /&gt;
==Example Code==&lt;br /&gt;
&amp;lt;!-- Example Code Sections have specific     --&amp;gt;&lt;br /&gt;
&amp;lt;!-- internal commenting system That         --&amp;gt;&lt;br /&gt;
&amp;lt;!-- go like this:                           --&amp;gt;&lt;br /&gt;
&amp;lt;!-- .equals.x4 &amp;lt;TITLE&amp;gt; .equals.x4           --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;!-- EXAMPLE L: BEGIN --&amp;gt;               --&amp;gt;&lt;br /&gt;
&amp;lt;!-- CODE / ETC HERE.                        --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE L: END   --&amp;gt;         --&amp;gt;&lt;br /&gt;
==== No antiwarp in center of the map ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE A: BEGIN --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example A''': No antiwarp in center of map. Warn the player, and revoke the prize.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In order for this code to work correctly, the bot must have smod+ privilages.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Lets first implement two functions which we will need to accomplish this task:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 bool closeto(Player *p, int x, int y, int tolerance) {&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;
 inline int abs(int n) {&lt;br /&gt;
    if (n &amp;lt; 0)    return -n;&lt;br /&gt;
    else        return n; }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We should define the radius of antiwarp checking, this can be done several ways, for sake of simplicity, here is a quick-plop-in for '''spawn.h''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class botInfo&lt;br /&gt;
{&lt;br /&gt;
	bool CONNECTION_DENIED;&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;
         ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Locate and add into '''spawn.cpp''' accordingly:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
case EVENT_PlayerMove:&lt;br /&gt;
{&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;ship != SHIP_Spectator) &amp;amp;&amp;amp; (p-&amp;gt;awarp)) {&lt;br /&gt;
        if (closeto(p, 512, 512, radius)){&lt;br /&gt;
            sendPrivate(p, &amp;quot;*prize #-20&amp;quot;);&lt;br /&gt;
            sendPrivate(p, &amp;quot;*warn Antiwarp is not allowed in center.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Just as a word of caution, players may at times be flooded with *prize #-20, and *warn statements under certain conditions.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE A: END   --&amp;gt;&lt;br /&gt;
==== Setting freq size depending on how many pilots in game ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE B: BEGIN --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example B''': Setting freq size depending on how many pilots in game.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In order for this code to work correctly, the bot must have Sysop or Arena-Owner privilages.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In '''spawn.cpp''' (Note: this source code has assumptions, please review comments before implementing.):&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;
  // NOTE: assuming countdown[0] initialized to &amp;gt; 0  in spawn.h, freqchange=0;&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;
            String s;&lt;br /&gt;
            s = &amp;quot;Max freq size 4  (&amp;quot;;&lt;br /&gt;
            s += count;&lt;br /&gt;
            s += &amp;quot; pilots in game)&amp;quot;;&lt;br /&gt;
            sendPublic(s);&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;
            String s;&lt;br /&gt;
            s = &amp;quot;Max freq size 3  (&amp;quot;;&lt;br /&gt;
            s += count;&lt;br /&gt;
            s += &amp;quot; pilots in game)&amp;quot;;&lt;br /&gt;
            sendPublic(s);&lt;br /&gt;
            freqchange = 3;&lt;br /&gt;
        }&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;&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE B: END   --&amp;gt;&lt;br /&gt;
==== Tracking kills and announcing when pilot gets 10 kills in a row without dying ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE C: BEGIN --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example C''': Tracking kills and announcing when pilot gets 10 kills in a row without&lt;br /&gt;
dying.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In order for this code to work correctly, the bot must have smod+ privilages.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Locate EVENT_PlayerDeath in '''spawn.cpp''' (see note.):&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;
    // NOTE: assuming tags are setup (see storing data section).&lt;br /&gt;
    set_tag(p, KILLS, 0);  // pilot died, reset to 0 kills in a row&lt;br /&gt;
    set_tag(k, KILLS, get_tag(k, KILLS) + 1);  // pilot killed someone, increment kills in a row by 1&lt;br /&gt;
&lt;br /&gt;
    if (get_tag(k, KILLS) == 10)&lt;br /&gt;
        sendPublic(&amp;quot;*arena (String) k-&amp;gt;name + &amp;quot; has gotten 10 kills.&amp;quot;);&lt;br /&gt;
 ...&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE C: END   --&amp;gt;&lt;br /&gt;
==== Warp pilot to coord when they are in a certain region ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE D: BEGIN --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example D''': Warp pilot to coord when they are in a certain region.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In order for this code to work correctly, the bot must have smod+ privilages.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Lets first implement two functions which we will need to accomplish this task:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 bool closeto(Player *p, int x, int y, int tolerance) {&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;
 inline int abs(int n) {&lt;br /&gt;
    if (n &amp;lt; 0)    return -n;&lt;br /&gt;
    else        return n; }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In '''spawn.cpp''', EVENT_PlayerMove:&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 of map coord 509,509&lt;br /&gt;
      {  &lt;br /&gt;
         sendPrivate(p, &amp;quot;*warpto 509 504&amp;quot;);  // warp to coord 509,504&lt;br /&gt;
      }&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE D: END   --&amp;gt;&lt;br /&gt;
==== Structures within structures ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE E: START   --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example E''': Structures within structures (spawn.h botinfo).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Implement the following in the spawn.h:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct playerstats&lt;br /&gt;
 {&lt;br /&gt;
   char name[20];&lt;br /&gt;
&lt;br /&gt;
   int kills;&lt;br /&gt;
   int deaths;&lt;br /&gt;
   Uint16 points;&lt;br /&gt;
   Uint16 flagpoints;&lt;br /&gt;
   int flagtime;&lt;br /&gt;
   int cflagtime;&lt;br /&gt;
   int flags;&lt;br /&gt;
   int flagkills;&lt;br /&gt;
&lt;br /&gt;
   int dmgdealt;&lt;br /&gt;
   int 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;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
 //... (large jump down in spawn.h)&lt;br /&gt;
&lt;br /&gt;
 // Put bot data here &amp;lt;- locate and add after:&lt;br /&gt;
 freqdata freqs[100];&lt;br /&gt;
&lt;br /&gt;
 //... &amp;lt;- perhaps some other variables.. scroll down past the next }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void Clear(); // A user-defined function. Add this.&lt;br /&gt;
&lt;br /&gt;
 void clear_objects(); //already exists, provided by Catid.&lt;br /&gt;
 void object_target(Player *p); //already exists, provided by Catid.&lt;br /&gt;
&lt;br /&gt;
 // ...  spawn.h continues.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Implement the following in '''spawn.cpp''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void botInfo::Clear()&lt;br /&gt;
{&lt;br /&gt;
  // initialize/clear struct data&lt;br /&gt;
  for (int n=99; n&amp;gt;=0; n--)&lt;br /&gt;
  {&lt;br /&gt;
    freqs[n].freqteam=-1;&lt;br /&gt;
    freqs[n].freqpoints=0;&lt;br /&gt;
    freqs[n].freqflagpoints=0;&lt;br /&gt;
    freqs[n].playercount=0;&lt;br /&gt;
    freqs[n].flags=0;&lt;br /&gt;
    freqs[n].kills=0;&lt;br /&gt;
    freqs[n].deaths=0;&lt;br /&gt;
    freqs[n].freqflagtime=0;&lt;br /&gt;
    freqs[n].flagkills=0;&lt;br /&gt;
    freqs[n].dmgdealt=0;&lt;br /&gt;
    freqs[n].dmgtaken=0;&lt;br /&gt;
&lt;br /&gt;
    for (int m = 99; m&amp;gt;=0; m--)&lt;br /&gt;
    {&lt;br /&gt;
      freqs[n].pilots[m].deaths=0;&lt;br /&gt;
      freqs[n].pilots[m].kills=0;&lt;br /&gt;
      freqs[n].pilots[m].points=0;&lt;br /&gt;
      freqs[n].pilots[m].flagpoints=0;&lt;br /&gt;
      freqs[n].pilots[m].flagtime=0;&lt;br /&gt;
      freqs[n].pilots[m].cflagtime=0;&lt;br /&gt;
      freqs[n].pilots[m].flags=0;&lt;br /&gt;
      freqs[n].pilots[m].flagkills=0;&lt;br /&gt;
      freqs[n].pilots[m].dmgdealt=0;&lt;br /&gt;
      freqs[n].pilots[m].dmgtaken=0;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;                                                                 &lt;br /&gt;
To access private data:&lt;br /&gt;
&amp;lt;pre&amp;gt;freqs[1].pilots[2].kills++;&amp;lt;/pre&amp;gt;&lt;br /&gt;
-OR-&lt;br /&gt;
&amp;lt;pre&amp;gt;int freq = p-&amp;gt;team;&lt;br /&gt;
freqs[freq].deaths++;&amp;lt;/pre&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE E: END   --&amp;gt;&lt;br /&gt;
==== Tracking flag data ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE F: START   --&amp;gt;&lt;br /&gt;
'''Example F''': Tracking flag data.&lt;br /&gt;
&lt;br /&gt;
'''Note''': This example relies on structs from example e.&lt;br /&gt;
&lt;br /&gt;
'''Note''': case EVENT_FlagDrop: {} gets called anytime theres a teamkill.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bool botInfo::GetPilot(Player *p)&lt;br /&gt;
{&lt;br /&gt;
    // get a pilots freq/pilot id from struct&lt;br /&gt;
    for (freq=freqcount-1; freq&amp;gt;=0; freq--)&lt;br /&gt;
       if (p-&amp;gt;team == freqs[freq].freqteam)&lt;br /&gt;
           for (pilot = freqs[freq].playercount-1; pilot&amp;gt;=0; pilot--)&lt;br /&gt;
               if (strcmp(p-&amp;gt;name,freqs[freq].pilots[pilot].name)==0)&lt;br /&gt;
                   return true;&lt;br /&gt;
    return false;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example way 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;
    //... existing code&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;
    //... continuing code&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example way to track flag data using built in get/set tag (from catid flagbot), in '''spawn.cpp''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
case EVENT_FlagGrab:&lt;br /&gt;
{&lt;br /&gt;
 //... existing code&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;
 //... existing code&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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))&lt;br /&gt;
		  if (freqs[freq].pilots[pilot].flags &amp;gt; 0)&lt;br /&gt;
		  {&lt;br /&gt;
		 		if (PilotOnSquad(p))&lt;br /&gt;
					freqs[freq].freqflagtime += (GetTickCount() - freqs[freq].pilots[pilot].cflagtime)/1000;&lt;br /&gt;
&lt;br /&gt;
				freqs[freq].pilots[pilot].flagtime += (GetTickCount() - freqs[freq].pilots[pilot].cflagtime)/1000;&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;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE F: END   --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example way to do simple /!spam feature (allowed 1x/60s) ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE G: START   --&amp;gt;&lt;br /&gt;
'''Example G''': Example way to do simple /!spam feature (allowed 1x/60s).&lt;br /&gt;
&lt;br /&gt;
Declare and initialize variables in spawn.h:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//...   extra code.&lt;br /&gt;
&lt;br /&gt;
class botInfo&lt;br /&gt;
{&lt;br /&gt;
  //...   extra code.&lt;br /&gt;
&lt;br /&gt;
  // Put bot data here&lt;br /&gt;
  bool spamready;&lt;br /&gt;
  int SPAM_TIME;&lt;br /&gt;
&lt;br /&gt;
  //...   perhaps more variables.&lt;br /&gt;
&lt;br /&gt;
public:&lt;br /&gt;
    botInfo(CALL_HANDLE given)&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
    //... extra code.&lt;br /&gt;
&lt;br /&gt;
    // Put initial values here&lt;br /&gt;
    spamready = true;&lt;br /&gt;
    SPAM_TIME = 60;&lt;br /&gt;
    &lt;br /&gt;
    //...  continuing code&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Spawn.cpp - mark as spamready=true when 60 seconds up:&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] == 1)&lt;br /&gt;
     spamready = true;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Command.cpp - handle !spam command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
case OP_Player: // Player-level commands&lt;br /&gt;
{    &lt;br /&gt;
 //...   continuing code ...&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;
            String s;&lt;br /&gt;
            s += &amp;quot;*zone Need pilots to duel in ?go &amp;quot;;&lt;br /&gt;
            s += arena;&lt;br /&gt;
            s += &amp;quot; - &amp;quot;;&lt;br /&gt;
            s += p-&amp;gt;name;&lt;br /&gt;
            sendPublic(s);&lt;br /&gt;
         &lt;br /&gt;
            spamready=false;&lt;br /&gt;
            countdown[0] = SPAM_TIME * 60; // next spam time limit&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;
            String s;&lt;br /&gt;
            s += SPAM_TIME;&lt;br /&gt;
            s += &amp;quot; Minute timer between announcements. &amp;quot;;&lt;br /&gt;
            s += countdown[0] / 60;&lt;br /&gt;
            s += &amp;quot;:&amp;quot;;&lt;br /&gt;
            if (countdown[0] % 60 &amp;lt; 10)&lt;br /&gt;
                s += &amp;quot;0&amp;quot;;&lt;br /&gt;
            s += countdown[0] % 60;&lt;br /&gt;
            s += &amp;quot; minutes left before next spam allowed.&amp;quot;;&lt;br /&gt;
            sendPrivate(p, s);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE G: END     --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Implementing a simple stack to do &amp;quot;next in line for several 'boxes' at once&amp;quot; ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE H: START   --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example H''': Example of implementing a simple stack to do &amp;quot;next in line for several 'boxes' at once&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In '''spawn.h''' declare the following variables and structs:&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  &amp;lt;- locate and add after&lt;br /&gt;
  Player *next[99][99];&lt;br /&gt;
  int MAX_NEXT;&lt;br /&gt;
  int nextcount[99];&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 &amp;lt;- locate and add after&lt;br /&gt;
    MAX_NEXT = 8; &lt;br /&gt;
&lt;br /&gt;
//... spawn.h continues on.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In '''spawn.cpp''' implement (remember to add the function prototype to spawn.h as well.):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void botInfo::MoveUp(int pos, int box)&lt;br /&gt;
{&lt;br /&gt;
    // moves up the next line for that box and decrement box's nextcount&lt;br /&gt;
    if (nextcount[box] &amp;gt; 0)&lt;br /&gt;
        nextcount[box]--;&lt;br /&gt;
&lt;br /&gt;
    for (pos = pos; pos &amp;lt; MAX_NEXT - 1; pos++)&lt;br /&gt;
    {&lt;br /&gt;
        next[box][pos] = next[box][pos + 1];&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    next[box][MAX_NEXT] = 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE H: END     --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example of reading any text from a .txt and printing it to pilot line by line ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE I: START   --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example I''': Example of reading any text from a .txt and printing it to pilot line by line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Required include:&lt;br /&gt;
&amp;lt;pre&amp;gt;#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
using namespace std;  // bad coding practice, but for ease of use, we'll use it.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Example of use, in command.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;
        // read in data line by line from the file staff.txt (max length 255)&lt;br /&gt;
        ifstream file(&amp;quot;staff.txt&amp;quot;);&lt;br /&gt;
        char line[256];&lt;br /&gt;
&lt;br /&gt;
        while (file.getline(line, 256))&lt;br /&gt;
        {&lt;br /&gt;
            sendPrivate(p, line);&lt;br /&gt;
        }&lt;br /&gt;
        file.close();&lt;br /&gt;
    } &lt;br /&gt;
&lt;br /&gt;
    //... command.cpp continues.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE I: END     --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example of printing player stats grid ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE J: START   --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example J''': Example of printing player stats grid.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note''': This example code relies on previously discussed material. Please see the section &amp;quot;structures within structures&amp;quot; example for variable declarations, varibale freqcount = # of freqs.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note''': User defined function ''sendFreqs'' is required.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In '''spawn.cpp''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void botInfo::DisplayPlayers()&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;
    for (freq=freqcount-1; freq&amp;gt;=0; freq--)&lt;br /&gt;
    {&lt;br /&gt;
      char str[255];&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;, freqs[freq].freqname);&lt;br /&gt;
&lt;br /&gt;
      sendFreqs(str);&lt;br /&gt;
&lt;br /&gt;
      sendFreqs(&amp;quot;---------------------------------------------------&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
      for (pilot=freqs[freq].playercount-1; pilot &amp;gt;= 0; pilot--)&lt;br /&gt;
      {&lt;br /&gt;
        sprintf(str, &amp;quot;%-20s %8d %2d %2d %9d %5d&amp;quot;,&lt;br /&gt;
                 freqs[freq].pilots[pilot].name,&lt;br /&gt;
                 freqs[freq].pilots[pilot].kills,&lt;br /&gt;
                 freqs[freq].pilots[pilot].deaths,&lt;br /&gt;
                 freqs[freq].pilots[pilot].teamkills,&lt;br /&gt;
                 freqs[freq].pilots[pilot].dmgdealt,&lt;br /&gt;
                 freqs[freq].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;
              freqs[freq].kills, freqs[freq].deaths,&lt;br /&gt;
              freqs[freq].teamkills,&lt;br /&gt;
              freqs[freq].dmgdealt,&lt;br /&gt;
              freqs[freq].dmgtaken&lt;br /&gt;
             );&lt;br /&gt;
      sendFreqs(str);&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;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE J: END     --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Checking if any pilots are within a region ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE K: START     --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example K''': Example of checking if any pilots are within a region.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note''': User-defined function ''GetPilotName'' is missing, and needs to be implemented.See prior examples.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note''': User-defined function ''closeto'' is missing, and needs to be implemented. See prior examples.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In spawn.cpp ('''Note''': you will also need to add the function prototype to spawn.h accordingly):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bool botInfo::FreqAInBox()&lt;br /&gt;
{&lt;br /&gt;
    // return true if teamA has a pilot in the box, otherwise false&lt;br /&gt;
    for (int tempplayercount = freqs[0].playercount-1; tempplayercount &amp;gt;= 0; tempplayercount--)&lt;br /&gt;
       if (GetPilotName(freqs[0].pilots[tempplayercount].name))&lt;br /&gt;
         if (closeto(TempPlayer, coordX, coordY, 73) &amp;amp;&amp;amp; (TempPlayer-&amp;gt;ship != SHIP_Spectator))&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;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE K: END       --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Functions to get a pilot's struct id info from a name or *player info ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE L: START     --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example L''': Example of functions to get a pilot's struct id info from a name or *player info.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note''': Required structures needed for this example to work. See structure examples for variable information.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note''': Remember to implement any function into the spawn.h accordingly.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note''': Using pilot names as vital comparisions should be used with caution. See [http://cypherjf.sscentral.com/articles/botsasclients.html Bot-Issues] by CypherJF.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note''' from Underlord: It is &amp;quot;better to implement these functions as passing values by reference instead of using global variables... [it is] just easier to not have to be declaring different int freq, int pilot all the time.&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In spawn.cpp:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// return struct freq/pilot id from *player info&lt;br /&gt;
bool botInfo::GetPilot(Player *p)&lt;br /&gt;
{&lt;br /&gt;
    // return freq, pilot of a player p&lt;br /&gt;
    for (freq=freqcount-1; freq&amp;gt;=0; freq--)&lt;br /&gt;
     if (p-&amp;gt;team == freqs[freq].freqteam)&lt;br /&gt;
        for (pilot = freqs[freq].playercount-1; pilot&amp;gt;=0; 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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// return *player as TempPlayer info from p-&amp;gt;name info&lt;br /&gt;
bool botInfo::GetPilotName(char *name)&lt;br /&gt;
{&lt;br /&gt;
    // get pilot from a name, return as TempPlayer&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;
        // convert both to lowercase to compare&lt;br /&gt;
        char pname[20];           &lt;br /&gt;
        strncpy(pname,p-&amp;gt;name,20);&lt;br /&gt;
&lt;br /&gt;
        char nname[20];           &lt;br /&gt;
        strncpy(nname,name,20);&lt;br /&gt;
&lt;br /&gt;
        tolower(pname);&lt;br /&gt;
        tolower(nname);&lt;br /&gt;
&lt;br /&gt;
        if (strcmp(pname,nname)==0)&lt;br /&gt;
        {&lt;br /&gt;
          TempPlayer = p;&lt;br /&gt;
          return true;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        parse = parse-&amp;gt;next;&lt;br /&gt;
    }&lt;br /&gt;
    return false;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE L: END       --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Creating a logfile name using date and squad names ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE M: START     --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example M''': Example of creating a logfile name using date and squad names.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Example Output: 03y01m27dBLACKDRaGON vs Integral05h08m.txt.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Format: year, month, day, squadA vs squadB, hour, minute.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note''': Assuming you define the following variables: squadA (String), squadB (String).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    // create log file name (squadA and squadB external char[20] variables)&lt;br /&gt;
    char u[100];&lt;br /&gt;
    time_t t=time(NULL);&lt;br /&gt;
    tm *tmp = localtime(&amp;amp;t);&lt;br /&gt;
    strftime(u,99,&amp;quot;%y&amp;quot;,tmp);&lt;br /&gt;
    logname = u;&lt;br /&gt;
    logname += &amp;quot;y&amp;quot;;&lt;br /&gt;
    strftime(u,99,&amp;quot;%m&amp;quot;,tmp);&lt;br /&gt;
    logname += u;&lt;br /&gt;
    logname += &amp;quot;m&amp;quot;;&lt;br /&gt;
    strftime(u,99,&amp;quot;%d&amp;quot;,tmp);&lt;br /&gt;
    logname += u;&lt;br /&gt;
    logname += &amp;quot;d&amp;quot;;&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;%I&amp;quot;,tmp);&lt;br /&gt;
    logname += u;&lt;br /&gt;
    logname += &amp;quot;h&amp;quot;;&lt;br /&gt;
    strftime(u,99,&amp;quot;%M&amp;quot;,tmp);&lt;br /&gt;
    logname += u;&lt;br /&gt;
    logname += &amp;quot;m&amp;quot;;&lt;br /&gt;
    logname += &amp;quot;.txt&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE M: END       --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Sending messages to playing freqs or public and logging depending on status ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE N: START     --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example N''': Example of sending messages to playing freqs or public and logging depending on status.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note''': Assumes you have the following variables declared: teamA (String), teamB (String), logname (String).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note''': Remember to implement the function prototypes into spawn.h&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Required include statements:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
using namespace std;  // bad coding practice, but it works.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In spawn.cpp:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// teamA, teamB, logname global variables&lt;br /&gt;
void botInfo::sendFreqs(char *msg)&lt;br /&gt;
{&lt;br /&gt;
  char *mmsg = &amp;quot;*arena&amp;quot;;&lt;br /&gt;
  String s = msg;&lt;br /&gt;
   &lt;br /&gt;
  if (teammsgs == false)&lt;br /&gt;
  {&lt;br /&gt;
    s.prepend(&amp;quot;*arena &amp;quot;,7);&lt;br /&gt;
    sendPublic(s);&lt;br /&gt;
  }&lt;br /&gt;
  else&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;
  if (gameon == true)&lt;br /&gt;
  {&lt;br /&gt;
    ofstream outf(logname, 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;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE N: END       --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Reading in all player/freqs to struct data ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE O: START     --&amp;gt;&lt;br /&gt;
'''Example O''': Example of reading in all player/freqs to struct data.&lt;br /&gt;
&lt;br /&gt;
'''Note''': see structures within structures example for freqs[] declaration.&lt;br /&gt;
&lt;br /&gt;
'''Note''': remember to add the function prototypes to spawn.h.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// to get freqs in a game where there are several freqs&lt;br /&gt;
void botInfo::GetFreqs()&lt;br /&gt;
{&lt;br /&gt;
    // read pilots into freq struct data from ingame and on playing freqs&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)&lt;br /&gt;
      if (closeto(p, coordX, coordY, 73))&lt;br /&gt;
      {&lt;br /&gt;
        // look for freq in struct&lt;br /&gt;
        bool foundfreq=false;&lt;br /&gt;
&lt;br /&gt;
        freq=freqcount-1;&lt;br /&gt;
&lt;br /&gt;
        while ((freq&amp;gt;=0) &amp;amp;&amp;amp; (foundfreq==false))&lt;br /&gt;
        {&lt;br /&gt;
            if (p-&amp;gt;team == freqs[freq].freqteam)&lt;br /&gt;
            {&lt;br /&gt;
               foundfreq=true;&lt;br /&gt;
               strncpy(freqs[freq].pilots[freqs[freq].playercount].name, p-&amp;gt;name, 20);&lt;br /&gt;
               freqs[freq].playercount++;   &lt;br /&gt;
            }&lt;br /&gt;
            freq--;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // didnt find freq in struct so add new freq&lt;br /&gt;
        if (foundfreq == false)&lt;br /&gt;
        {&lt;br /&gt;
            if (manualsquads == false)&lt;br /&gt;
            {&lt;br /&gt;
               strncpy(freqs[freqcount].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;
            else&lt;br /&gt;
            {&lt;br /&gt;
              if (p-&amp;gt;team == teamA)&lt;br /&gt;
                 strncpy(freqs[freqcount].freqname,squadA,20);&lt;br /&gt;
              else if (p-&amp;gt;team == teamB)&lt;br /&gt;
                 strncpy(freqs[freqcount].freqname,squadB,20);&lt;br /&gt;
            }&lt;br /&gt;
           &lt;br /&gt;
            freqs[freqcount].freqteam = p-&amp;gt;team;&lt;br /&gt;
&lt;br /&gt;
            strncpy(freqs[freqcount].pilots[0].name, p-&amp;gt;name, 20);&lt;br /&gt;
                       &lt;br /&gt;
            freqs[freqcount].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;
&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;
void botInfo::GetFreqs()&lt;br /&gt;
{&lt;br /&gt;
    // read pilots into freq struct data from ingame and on playing 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 ((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;
			// freq 100, team A&lt;br /&gt;
			// set freq&lt;br /&gt;
			freq = 0;&lt;br /&gt;
&lt;br /&gt;
			if (p-&amp;gt;team == teamB)&lt;br /&gt;
				freq = 1;&lt;br /&gt;
&lt;br /&gt;
			// number of pilots on freq counted so far, starts 0&lt;br /&gt;
			pilot = freqs[freq].playercount;&lt;br /&gt;
&lt;br /&gt;
			// pilot name&lt;br /&gt;
			strncpy(freqs[freq].pilots[pilot].name, p-&amp;gt;name, 20);&lt;br /&gt;
			// time stamp for playing time&lt;br /&gt;
			freqs[freq].pilots[pilot].cplaying_time = GetTickCount();&lt;br /&gt;
&lt;br /&gt;
			// slot name&lt;br /&gt;
			if (freqs[freq].playercount &amp;lt; NUMBER_PILOTS)&lt;br /&gt;
				strncpy(freqs[freq].slotname[pilot], p-&amp;gt;name, 20);&lt;br /&gt;
&lt;br /&gt;
			// increment freq player count&lt;br /&gt;
			freqs[freq].playercount++;&lt;br /&gt;
&lt;br /&gt;
			// if freq not already have name, give it player squad name&lt;br /&gt;
			if ((manualsquads == false) &amp;amp;&amp;amp; (strlen(p-&amp;gt;squad) &amp;gt; 0))&lt;br /&gt;
				strncpy(freqs[freq].freqname, p-&amp;gt;squad, 20);&lt;br /&gt;
&lt;br /&gt;
			// set player ship&lt;br /&gt;
			freqs[freq].pilots[pilot].ship = p-&amp;gt;ship + 1;&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;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE O: END       --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Finding MVP from struct data (2*kills - deaths formula) ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE P: BEGIN --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example P''': Example of finding MVP from struct data (2*kills - deaths formula).&amp;lt;/p&amp;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;
 for (pilot = freqs[mvpteam].playercount-1; pilot &amp;gt;=0; pilot--)&lt;br /&gt;
   {&lt;br /&gt;
     if (((freqs[mvpteam].pilots[pilot].kills * 2) - freqs[mvpteam].pilots[pilot].deaths) &amp;gt; highest)&lt;br /&gt;
      {&lt;br /&gt;
        mvp = pilot;&lt;br /&gt;
        highest = (freqs[mvpteam].pilots[pilot].kills * 2) - freqs[mvpteam].pilots[pilot].deaths;&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE P: END  --&amp;gt;&lt;br /&gt;
==== Print time stamp of event ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE Q: BEGIN --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example Q''': Print time stamp of event.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;pre&amp;gt;#include &amp;quot;time.h&amp;quot; // required include&amp;lt;/pre&amp;gt;Use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 char u[100];&lt;br /&gt;
 time_t t=time(NULL);&lt;br /&gt;
 tm *tmp = localtime(&amp;amp;t);&lt;br /&gt;
 strftime(u,99,&amp;quot;%c&amp;quot;,tmp);&lt;br /&gt;
 sendPublic(&amp;quot;Current date and time: &amp;quot; + (String) u);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE Q: END   --&amp;gt;&lt;br /&gt;
==== Simple way to track player bomb/bullet damage stats ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE R: BEGIN --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example R''': Simple way to track player bomb/bullet damage stats.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note''': see data section for how to setup set_tag.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note''': see clientprot.h for weapon information.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In '''spawn.cpp''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
case EVENT_WatchDamage:&lt;br /&gt;
{&lt;br /&gt;
    if (PLAYING)  // if tracking stats&lt;br /&gt;
    {&lt;br /&gt;
        if ((wi.type == PROJ_PBomb) &amp;amp;&amp;amp; (p-&amp;gt;name != k-&amp;gt;name))&lt;br /&gt;
        {&lt;br /&gt;
            set_tag(k, DMG_BOMB_DEALT, get_tag(k, DMG_BOMB_DEALT) + damage);&lt;br /&gt;
            set_tag(k, DMG_TOTAL_DEALT, get_tag(k, DMG_TOTAL_DEALT) + damage);&lt;br /&gt;
            set_tag(p, DMG_BOMB_TAKEN, get_tag(p, DMG_BOMB_TAKEN) + damage);&lt;br /&gt;
            set_tag(p, DMG_TOTAL_TAKEN, get_tag(p, DMG_TOTAL_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(k, DMG_TOTAL_DEALT, get_tag(k, DMG_TOTAL_DEALT) + damage);&lt;br /&gt;
            set_tag(p, DMG_BULLET_TAKEN, get_tag(k, DMG_BULLET_TAKEN) + damage);&lt;br /&gt;
            set_tag(p, DMG_TOTAL_TAKEN, get_tag(k, DMG_TOTAL_TAKEN) + damage);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;!-- EXAMPLE R: END   --&amp;gt; &lt;br /&gt;
==== Simple way to print those stats ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE S: START --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example S''': Simple way to print those stats.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
case OP_Moderator:&lt;br /&gt;
{&lt;br /&gt;
   if (c-&amp;gt;check(&amp;quot;showstats&amp;quot;))&lt;br /&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;
	     sprintf(str, &amp;quot;(%-20s Dmg Dealt: Total %0004d, Bomb %0004d, Bullet %0004d  Dmg TAKEN: Total %0004d, Bomb %0004d, Bullet %0004d)&amp;quot;,&lt;br /&gt;
	     p-&amp;gt;name,&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;
	     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;
&lt;br /&gt;
	     sendPublic(str);&lt;br /&gt;
	    }&lt;br /&gt;
	  parse = parse-&amp;gt;next;&lt;br /&gt;
	}&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;!-- EXAMPLE S: END   --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Make bot spectate specific coordinates ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE T: START   --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example T''': Make bot spectate specific coordinates.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// make bot spectate the coord 512,600&lt;br /&gt;
// possible use - capturing weapon packets in a specific region&lt;br /&gt;
&lt;br /&gt;
tell(makeFollowing(false));&lt;br /&gt;
tell(makeFlying(true));&lt;br /&gt;
me-&amp;gt;move(512 * 16, 600 * 16);&lt;br /&gt;
tell(makeSendPosition(true));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE T: END   --&amp;gt;&lt;/div&gt;</summary>
		<author><name>D1st0rt</name></author>	</entry>

	<entry>
		<id>http://wiki.minegoboom.com/index.php?title=MERVBot_Tutorial&amp;diff=1270</id>
		<title>MERVBot Tutorial</title>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=MERVBot_Tutorial&amp;diff=1270"/>
				<updated>2005-02-15T23:32:05Z</updated>
		
		<summary type="html">&lt;p&gt;D1st0rt: merv comes in .rar's&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial is based on the ever-popular MERVBot Tutorial by Underlord. It has since been updated to reflect new changes with MervBot.&lt;br /&gt;
&lt;br /&gt;
This tutorial also assumes that you have a basic knowledge of C++. If you don't, check out cplusplus.com's great [http://www.cplusplus.com/doc documentation].&lt;br /&gt;
&lt;br /&gt;
==Setting up a MERVBot (plugin)==&lt;br /&gt;
&lt;br /&gt;
[http://catid.sscentral.com/ MERVBot download site]&lt;br /&gt;
&lt;br /&gt;
[http://www.ssforum.net/ MERVBot Forum] (Development - MervBot forum)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Obtaining MERVBot===&lt;br /&gt;
&lt;br /&gt;
* Download the [http://catid.ssihosting.com/files/MERVBot.rar latest build].&lt;br /&gt;
* Unzip MERVBot.zip into a new folder. (example c:\program files\continuum\mervbot)&lt;br /&gt;
* Unzip src.zip into &amp;amp;quot;src&amp;amp;quot; subfolder of that new folder (example c:\program files\continuum\mervbot\src)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Preparing to write a plugin===&lt;br /&gt;
&lt;br /&gt;
''Note:'' if you only want to execute someone's premade plugin (.dll), skip to [[MERVBot Tutorial#Run your bot dll|step 4]], otherwise continue to learn how to make your own bot&lt;br /&gt;
&lt;br /&gt;
Download [http://catid.sscentral.com/files/Tutorial.zip DLL-plugin Tutorial] and unzip Tutorial.zip (containing spawn.h, spawn.cpp, and command.cpp) into a &amp;amp;quot;tutorial&amp;amp;quot; subfolder of that new folder. (example c:\program files\continuum\mervbot\src\tutorial).&lt;br /&gt;
&lt;br /&gt;
''File descriptions:''&lt;br /&gt;
* spawn.h = declare/initialize globals&lt;br /&gt;
* command.cpp = code for commands coming into bot (ie /!help, /!play, etc)&lt;br /&gt;
* spawn.cpp = code that interacts with bot spawns&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Microsoft Visual c++===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Start Visual Studios 6.0.&lt;br /&gt;
&amp;lt;li&amp;gt;Click the Drop Down Menu labeled &amp;amp;quot;File&amp;amp;quot; at the top left of your screen.&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;amp;quot;New&amp;amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt;On the next screen that comes up, choose from the Project tab, then Win32 Dynamic-Link Library&lt;br /&gt;
&amp;lt;li&amp;gt;Select the &amp;amp;quot;/src&amp;amp;quot; folder as the base folder (example c:\program files\continuum\mervbot\src)&lt;br /&gt;
&amp;lt;li&amp;gt;Name your project &amp;amp;quot;mybot&amp;amp;quot;. This will make a &amp;amp;quot;mybot&amp;amp;quot; subfolder in your &amp;amp;quot;src&amp;amp;quot; folder. Click OK. (example creates c:\program files\continuum\mervbot\src\mybot)&lt;br /&gt;
&amp;lt;li&amp;gt;Choose to create an &amp;amp;quot;Empty DLL project&amp;amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;amp;quot;Finish&amp;amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt;Click the Drop Down Menu labbled &amp;amp;quot;Project&amp;amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;amp;quot;Add To Project Files&amp;amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy only spawn.h, spawn.cpp, and command.cpp from the &amp;amp;quot;tutorial&amp;amp;quot; folder into the this new folder. (example from c:\program files\continuum\mervbot\src\tutorial to c:\program files\continuum\mervbot\src\mybot)&lt;br /&gt;
&amp;lt;li&amp;gt;Click the Drop Down Menu labelled &amp;amp;quot;Build&amp;amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;amp;quot;Build (dll name)&amp;amp;quot; - where (dll name) is &amp;amp;quot;mybot&amp;amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;Go into your &amp;amp;quot;mybot&amp;amp;quot; folder and look for a folder named &amp;amp;quot;Debug&amp;amp;quot;&lt;br /&gt;
(example c:\program files\continuum\mervbot\src\mybot\debug)&lt;br /&gt;
&amp;lt;li&amp;gt;Your new DLL will be in that folder. (example mybot.dll)&lt;br /&gt;
&amp;lt;li&amp;gt;Copy mybot.dll to your base folder that has mervbot.exe in it (example c:\program files\continuum\mervbot)&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Run your bot dll===&lt;br /&gt;
&lt;br /&gt;
To run your bot you need your DLL (mybot.dll), Commands.txt, MERVBot.exe, MERVBot.ini, Operators.txt, Spawns.txt, subspace.bin, and zlib.dll all in one folder (example c:\program files\continuum\mervbot).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit spawns.txt. '''Read every word of spawns.txt to find out what needs to go in there.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Example:''&lt;br /&gt;
&amp;lt;pre&amp;gt;2v2-Bot-League : botpw : 2v2a : 2v2league : staffpw&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Note:'' The bot will attempt to create the name if it doesn't exist already.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Edit MERVBot.ini&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[Login]&lt;br /&gt;
Zone=216.33.98.254:21000	// make that your zone IP:PORT available from zone.dat in Continuum dir&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Edit operators.txt. '''Read every word of operators.txt to find out what needs to go in there.'''&amp;lt;br /&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
''Example:''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
4:my_name:&lt;br /&gt;
4:another_sysop:&lt;br /&gt;
3:other_person:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure the bot is on vip.txt or has smod+ access, then run MERVBot.exe.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;You can now edit your plugin code by opening &amp;amp;quot;mybot.dsw&amp;amp;quot; (example c:\program files\continuum\mervbot\src\mybot\mybot.dsw) in Microsoft Visual C++. Edit the spawn.h, spawn.cpp, and command.cpp to create your plugin, then build, copy your updated DLL to your MERVBot.exe folder and then execute the bot. Use the tutorial to get ideas on how to implement certain types of features into the bot.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Player Commands - (command.cpp)==&lt;br /&gt;
&lt;br /&gt;
This section describes how to implement player commands into your plugin. Commands are sent to the botInfo::gotCommand function in command.cpp.&lt;br /&gt;
&lt;br /&gt;
Example (makes bot reply to !test with &amp;quot;hi&amp;quot;):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void botInfo::gotCommand(Player *p, Command *c) {&lt;br /&gt;
	switch (p-&amp;gt;access)&lt;br /&gt;
	{&lt;br /&gt;
        case OP_Moderator:&lt;br /&gt;
                {&lt;br /&gt;
                     // handle moderator-operator commands here.&lt;br /&gt;
                }&lt;br /&gt;
	case OP_Player: //appropriate staff rank here.&lt;br /&gt;
		{&lt;br /&gt;
			if (c-&amp;gt;check(&amp;quot;test&amp;quot;)) //replace &amp;quot;test&amp;quot; with whatever command you want&lt;br /&gt;
			{&lt;br /&gt;
				//put your command code here&lt;br /&gt;
				sendPrivate(p,&amp;quot;hi&amp;quot;); //example&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===How to have commands with numerical parameters===&lt;br /&gt;
Example (!test #):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	if (c-&amp;gt;check(&amp;quot;test&amp;quot;)) { // reads in test #, default to 1 if invalid number input&lt;br /&gt;
		int temp = 1;&lt;br /&gt;
&lt;br /&gt;
		if (isNumeric(c-&amp;gt;final))&lt;br /&gt;
			temp = atoi(c-&amp;gt;final);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===How to have player name as input===&lt;br /&gt;
Example (!rank player):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	if (c-&amp;gt;check(&amp;quot;rank&amp;quot;))&lt;br /&gt;
	{&lt;br /&gt;
		String player_name = c-&amp;gt;final;&lt;br /&gt;
&lt;br /&gt;
		if (player_name.IsEmpty()) // default name to self if invalid name&lt;br /&gt;
			player_name = p-&amp;gt;name;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===How to have multi-parameter input===&lt;br /&gt;
&lt;br /&gt;
Use the CRT function sscanf() to scan the string for the values.&lt;br /&gt;
&lt;br /&gt;
Example (!squads squadA vs squadB ''or'' !squads teamA:squadA:teamB:squadB):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
else if (c-&amp;gt;check(&amp;quot;squads&amp;quot;))&lt;br /&gt;
{&lt;br /&gt;
	char squadA[20], squadB[20];&lt;br /&gt;
	int teamA, teamB;&lt;br /&gt;
&lt;br /&gt;
	strncpy(squadA, &amp;quot;&amp;quot;, 20);&lt;br /&gt;
	strncpy(squadB, &amp;quot;&amp;quot;, 20);&lt;br /&gt;
&lt;br /&gt;
	int n_found;&lt;br /&gt;
&lt;br /&gt;
	//Note: %[A-Za-z ] is equivalent to %s, but allows an internal space.&lt;br /&gt;
&lt;br /&gt;
	//scan the string for the two squads separated by &amp;quot; vs &amp;quot;&lt;br /&gt;
	n_found = sscanf(c-&amp;gt;final, &amp;quot;%[A-Za-z ] vs %[A-Za-z ]&amp;quot;, squadA, squadB);&lt;br /&gt;
&lt;br /&gt;
	//if that fails, scan the string for freqA:squadA:freqB:squadB&lt;br /&gt;
	if (n_found &amp;lt; 2)&lt;br /&gt;
		sscanf(c-&amp;gt;final, &amp;quot;%d:%[A-Za-z ]:%d:%[A-Za-z ]&amp;quot;, &amp;amp;teamA, squadA, &amp;amp;teamB, squadB);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Help Menu===&lt;br /&gt;
When a player sends !help to the bot, MERVBot calls botInfo::gotHelp() in each plugin loaded.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void botInfo::gotHelp(Player *p, Command *c)&lt;br /&gt;
{&lt;br /&gt;
	if (!*c-&amp;gt;final)&lt;br /&gt;
	{&lt;br /&gt;
	sendPrivate(p, &amp;quot;4v4 Bot General Commands:&amp;quot;);&lt;br /&gt;
	sendPrivate(p, &amp;quot;------------------------&amp;quot;);&lt;br /&gt;
	sendPrivate(p, &amp;quot;!caps - get captain names&amp;quot;);&lt;br /&gt;
	sendPrivate(p, &amp;quot;!roster &amp;lt;squad&amp;gt; - get roster of a squad&amp;quot;);&lt;br /&gt;
	sendPrivate(p, &amp;quot;!schedule- get current schedule&amp;quot;);&lt;br /&gt;
	sendPrivate(p, &amp;quot;!score - get current score&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Event Calls==&lt;br /&gt;
&lt;br /&gt;
MERVBot is event based, so when making a bot you need to decide what will happen at certain events. Normal plugins need to consider what happens when bot enters arena, player enters arena, player leaves arena, player events like kill, shipchange, teamchange, spec, move then any other relevant events to your bot. Just worry about events that are relevant to the tasks your bot is doing.&lt;br /&gt;
&lt;br /&gt;
MERVBot sends events to botInfo::gotEvent() in spawn.cpp. Each supported event is already present and categorized in gotEvent(), along with the paramters that MERVBot sends with the event. &lt;br /&gt;
&lt;br /&gt;
See dllcore.h for a list of current events and their descriptions.&lt;br /&gt;
&lt;br /&gt;
==Messaging - How to use the messaging system==&lt;br /&gt;
&lt;br /&gt;
Private message - void sendPrivate(Player *player, char *msg);&lt;br /&gt;
&lt;br /&gt;
''Examples:''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendPrivate(p,&amp;quot;hi&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
String s=&amp;quot;test&amp;quot;;&lt;br /&gt;
sendPrivate(p,s);&lt;br /&gt;
&lt;br /&gt;
String s=&amp;quot;test&amp;quot;;&lt;br /&gt;
s += &amp;quot;ing&amp;quot;;&lt;br /&gt;
sendPrivate(p,s);&lt;br /&gt;
&lt;br /&gt;
char captain1[20];&lt;br /&gt;
char captain2[20];&lt;br /&gt;
strncpy(captain1,&amp;quot;&amp;quot;,20);&lt;br /&gt;
strncpy(captain2,&amp;quot;&amp;quot;,20);&lt;br /&gt;
sendPrivate(p,(String) captain1 + &amp;quot; and &amp;quot; + (String) captain2 + &amp;quot; are the captains.&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Team message - void sendTeamPrivate(Uint16 team, char *msg);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Examples: &amp;lt;br /&amp;gt;&lt;br /&gt;
a) sendTeamPrivate(8025,&amp;amp;quot;hi spec freq&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
b) Uint16 test=0; sendTeamPrivate(test,&amp;amp;quot;hi freq 0&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Public message - void sendPublic(char *msg);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Example: sendPublic(&amp;amp;quot;*arena &amp;amp;quot; + (String) p-&amp;amp;gt;name + &amp;amp;quot; is now a captain&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
Chat channel message - void sendChannel(char *msg);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Example: sendChannel(&amp;amp;quot;hi chat channel&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
Remote private message - void sendRemotePrivate(char *name, char *msg);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Example: sendRemotePrivate(&amp;amp;quot;Player01&amp;amp;quot;, &amp;amp;quot;hi&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: to have bot print several lines of text fast it needs sysop in the&lt;br /&gt;
arena (sysop in arena bot first spawns to also) otherwise it'll print slow to avoid being&lt;br /&gt;
kicked for spam&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Timer - How to use the timing function==&lt;br /&gt;
&lt;br /&gt;
Each time MERVBot sends an EVENT_Tick to a plugin (once a second), the default handler code decrements each value in an array of countdowns. You can modify the number of countdowns and add code to occur at a specific value for one of the countdowns.&lt;br /&gt;
&lt;br /&gt;
Setup number of timers and initialize in spawn.h:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class botInfo&lt;br /&gt;
{&lt;br /&gt;
	#define COUNTDOWNS 10 		// how many countdowns you want&lt;br /&gt;
	int countdown[COUNTDOWNS];	// this gives you 10 timers&lt;br /&gt;
&lt;br /&gt;
// unrelated code&lt;br /&gt;
 &lt;br /&gt;
	public:&lt;br /&gt;
	botInfo(CALL_HANDLE given)&lt;br /&gt;
	{&lt;br /&gt;
	countdown[0] = 0;&lt;br /&gt;
	countdown[1] = 60; // 60 seconds&lt;br /&gt;
	//&lt;br /&gt;
	// initialize values&lt;br /&gt;
	//&lt;br /&gt;
	countdown[9] = 5*60; // 5 minutes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Using timer functions in spawn.cpp:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
case EVENT_Tick:&lt;br /&gt;
{&lt;br /&gt;
	for (int i = 0; i &amp;lt; COUNTDOWNS; ++i) //cycles through each countdown you have&lt;br /&gt;
		--countdown[i]; //note that countdowns will continue decrementing past 0.&lt;br /&gt;
&lt;br /&gt;
	if (countdown[1] == 2) // when timer #1 hits two seconds&lt;br /&gt;
	{&lt;br /&gt;
	// do stuff here when timer #1 hits 2 seconds&lt;br /&gt;
	// example: sendPublic(&amp;quot;two seconds left, setting timer to 1 minute&amp;quot;);&lt;br /&gt;
	// example: countdown[1] = 60; // change timer #1 value&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can then have events (such as EVENT_PlayerDeath) change the value of a countdown to make the bot do something a set time after an event occurs.&lt;br /&gt;
&lt;br /&gt;
==Writing Functions==&lt;br /&gt;
&amp;lt;!-- begin of functions. --&amp;gt;&lt;br /&gt;
For this example, we will take the function called closeto, which determines&lt;br /&gt;
if a player exists in an specific radius around a point. Now to apply this function to a MervBot plugin, you need to write it into the spawn.cpp - at the top of the file in the //////// DLL &amp;amp;quot;import&amp;amp;quot; //////// setion, as below:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//////// DLL &amp;quot;import&amp;quot; ////////&lt;br /&gt;
&lt;br /&gt;
bool closeto(Player *p, int x, int y, int tolerance) &lt;br /&gt;
{&lt;br /&gt;
	// Requires the function abs() to be declared elsewhere.&lt;br /&gt;
	// Return if player p is in area of square with center x, y&lt;br /&gt;
	//   and radius = tolerance&lt;br /&gt;
	return (abs((p-&amp;gt;tile.x) - x) - tolerance) &amp;amp;&amp;amp; (abs((p-&amp;gt;tile.y) - y) - tolerance);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want your function to have access to the data from spawn.h botInfo class, you make the function apart of it. To do this, we add the '''botInfo::''' infront of the function name, in spawn.cpp.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//////// DLL &amp;quot;import&amp;quot; ////////&lt;br /&gt;
&lt;br /&gt;
bool botInfo::closeto(Player *p, int x, int y, int tolerance) &lt;br /&gt;
    {&lt;br /&gt;
	 ...&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In '''spawn.h''', add your method's prototype without botInfo::, it will look&lt;br /&gt;
like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//...&lt;br /&gt;
botInfo(CALL_HANDLE given)&lt;br /&gt;
 {&lt;br /&gt;
//  ...&lt;br /&gt;
 } &lt;br /&gt;
  bool closeto(Player *p, int x, int y, int tolerance); // Your function prototype.&lt;br /&gt;
&lt;br /&gt;
  void clear_objects(); //provided by Catid, and already exists.&lt;br /&gt;
  void object_target(Player *p); //provided by Catid, and already exists.&lt;br /&gt;
//  ...&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you're not familiar with prototypes, notice it is similar to that in your spawn.cpp, but without the botInfo::, and a trailing ;.&lt;br /&gt;
&lt;br /&gt;
===Function notes===&lt;br /&gt;
&lt;br /&gt;
Remember that you can pass variables [http://www.cplusplus.com/doc/tutorial/tut2-3.html by reference]. If variables are passed by reference, any changes a function makes to the variables will remain after the function returns.&lt;br /&gt;
&lt;br /&gt;
From time to time you will need to pass an array to a function. An example illustrating this is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	int freqs[5]; // declare our example data.&lt;br /&gt;
&lt;br /&gt;
	// call function - notice freqs and not freqs[5] or freqs[].&lt;br /&gt;
	my_function(freqs); //You're not passing the array itself, just a pointer to the array.&lt;br /&gt;
&lt;br /&gt;
	// function - notice freqs[] and not freqs[5] or freqs&lt;br /&gt;
	void my_function(int freqs[]) {} //You're specifying that the freqs parameter is an array&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Cycling through players==&lt;br /&gt;
&lt;br /&gt;
MERVBot stores player-related data in a linked list. A linked list is a datatype that stores its data in a series of structures linked to each other, hence the name.&lt;br /&gt;
&lt;br /&gt;
To search through the players in the arena, just start at the first link, then continue through all the following links until you reach the end:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
_listnode &amp;lt;Player&amp;gt; *parse = playerlist-&amp;gt;head;	//set to first link of the player linked list&lt;br /&gt;
&lt;br /&gt;
while (parse)	//parse will be NULL when we reach the last link&lt;br /&gt;
{&lt;br /&gt;
	Player *p = parse-&amp;gt;item;	//item is the actual data stored in the link&lt;br /&gt;
&lt;br /&gt;
	// do functionality here&lt;br /&gt;
	// Example 1: sendPrivate(p,&amp;quot;*watchdamage&amp;quot;); // turns on all pilot's watchdamage&lt;br /&gt;
	// Example 2: if (p-&amp;gt;safety != 0) sendPrivate(p,&amp;quot;*spec&amp;quot;); // spec all pilots in safe zone&lt;br /&gt;
&lt;br /&gt;
	parse = parse-&amp;gt;next;	//set parse to the next link&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, assuming our bot has smod+ privilages, the following code will set all non-spectator players to a specific ship. First begin by adding the following function prototype to the spawn.h in the botInfo class:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 void handleCmdSetShip(enum Ship_Types ship);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In spawn.cpp add:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void botInfo::handleCmdSetShip(enum Ship_Types ship)&lt;br /&gt;
{&lt;br /&gt;
	//Note that the parameter ship is of the Ship_Types enum,&lt;br /&gt;
	//so its value is hopefully restricted to the proper types.&lt;br /&gt;
&lt;br /&gt;
	_listnode &amp;lt;Player&amp;gt; *parse = playerlist-&amp;gt;head;&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 &amp;amp;&amp;amp; p-&amp;gt;ship != SHIP_Spectator )&lt;br /&gt;
				sendPrivate(p, &amp;quot;*setship &amp;quot; + (String)ship);&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;
To use, just call the function with the appropriate Ship_Type from the enum in clientprot.h:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 handleCmdSetShip(SHIP_Warbird);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Checking if pilot is in a safe zone==&lt;br /&gt;
&amp;lt;p&amp;gt;MervBot keeps track of whether a player is in safe or not by accessing a member of the Player class.&amp;lt;br /&amp;gt;&lt;br /&gt;
* if (p-&amp;gt;safety != 0)  // pilot is in a safe zone&amp;lt;br /&amp;gt;&lt;br /&gt;
* if (p-&amp;gt;safety == 0)  // pilot is NOT in a safe zone&amp;lt;br /&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;An example goes as follows, in spawn.cpp:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
EVENT_PlayerMove:&lt;br /&gt;
{&lt;br /&gt;
   Player *p = (Player*)event.p[0];&lt;br /&gt;
&lt;br /&gt;
   if ( p-&amp;gt;safety ) // player is in safe zone.&lt;br /&gt;
     {&lt;br /&gt;
        // do something.&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
   if ( !p-&amp;gt;safety ) // player NOT in safe zone.&lt;br /&gt;
     {&lt;br /&gt;
        // do something.&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Random numbers==&lt;br /&gt;
&lt;br /&gt;
===Generating a random number===&lt;br /&gt;
&lt;br /&gt;
To use this method, these two includes must be used:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;quot;time.h&amp;quot;    //provides time() function.&lt;br /&gt;
#include &amp;quot;stdlib.h&amp;quot;  //provides srand() and rand() functions.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    srand(time(NULL)); // seed random number generator.&lt;br /&gt;
&lt;br /&gt;
    rand(); // randomize.&lt;br /&gt;
&lt;br /&gt;
    int temp = (int) (51 * ((float)rand()/RAND_MAX));&lt;br /&gt;
       // the above line returns a random integer between 0 and 51.&lt;br /&gt;
       // Note: RAND_MAX is a global constant defined in stdlib.h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Picking a random pilot===&lt;br /&gt;
&lt;br /&gt;
''Note:'' A required user-defined function, getInGame(), must be created for this example to work.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int temp = GetTickCount() % getInGame();  // getInGame() = how many pilots in arena&lt;br /&gt;
&lt;br /&gt;
Player *rabbit = NULL;&lt;br /&gt;
&lt;br /&gt;
_listnode &amp;lt;Player&amp;gt; *parse = playerlist-&amp;gt;head;&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) // if player is not a spectator&lt;br /&gt;
	if ( !(--temp) ) // and if we've hit the randomly-selected pilot&lt;br /&gt;
	{&lt;br /&gt;
		rabbit = p;&lt;br /&gt;
		break;&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;
==Tracking time not using countdown[n]==&lt;br /&gt;
&lt;br /&gt;
This is a solution to a common problem of determining the amount of time it takes for something to occur. Using basic math, we record a start-time B, and an end-time E, both in the unit of seconds, we calculate the time elapsed by E-B.&lt;br /&gt;
&lt;br /&gt;
Lucky for us, Windows provides a function called GetTickCount() that is a measurement of time (milliseconds) that we can use for such cases.&lt;br /&gt;
&lt;br /&gt;
So:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	int begin = GetTickCount();&lt;br /&gt;
&lt;br /&gt;
	// do some code here.&lt;br /&gt;
&lt;br /&gt;
	int end = GetTickCount();&lt;br /&gt;
  &lt;br /&gt;
	int delta = (end - begin) / 1000;  // elapsed time converted to seconds from milliseconds&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Storing data for pilots==&lt;br /&gt;
&amp;lt;p&amp;gt;There are several ways to store data for pilots (ie tracking flagtime or kills in a period of time)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;1) get/setTag - use if you only want to track data until pilot leaves arena then its erased&amp;lt;br /&amp;gt;&lt;br /&gt;
built in tags track by an ID that is reset when pilot leaves/enters arena, so loses track of data once they leave arena&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;2) modified perm get/setTag - use if you want to track all pilots even if they leave (advantage - easier to sort by player)&amp;lt;br /&amp;gt;also can track near unlimited amount of pilots&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;3) structs - use to track all pilots even if they leave, (advantage -&lt;br /&gt;
easier to sort by freqs), have to specify bound of players&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;note: 2 and 3 are similar in effect, mostly the difference is in how you are able to search through data you need to decide which method of storing data is best for each bot depending on what it does beware using modified perm get/setTag if bot is in an arena for long periods of time, data is not reset so the linkedlist could get huge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Initialize these following values in '''spawn.h''' at the very top:&amp;lt;br /&amp;gt;&lt;br /&gt;
1.) '''Built in get/setTag method'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #define DMG_DEALT        0&lt;br /&gt;
 #define DMG_TAKEN        1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
// in spawn.cpp initialize the values on arena-enter and player-enter&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
case EVENT_ArenaEnter:&lt;br /&gt;
  {&lt;br /&gt;
   ...&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) // do for all pilots in arena when bot enters&lt;br /&gt;
     {&lt;br /&gt;
       Player *p = parse-&amp;gt;item;  // get pilot&lt;br /&gt;
&lt;br /&gt;
       set_tag(p, DMG_DEALT, 0); // initialize to 0&lt;br /&gt;
&lt;br /&gt;
       set_tag(p, DMG_TAKEN, 0);&lt;br /&gt;
&lt;br /&gt;
       sendPrivate(p,&amp;quot;*watchdamage&amp;quot;);  // optionally turn on player *watchdamage&lt;br /&gt;
&lt;br /&gt;
       parse = parse-&amp;gt;next;  // get next pilot&lt;br /&gt;
     }&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
case EVENT_PlayerEntering:&lt;br /&gt;
  {&lt;br /&gt;
     set_tag(p, DMG_DEALT, 0); // initialize to 0&lt;br /&gt;
 &lt;br /&gt;
     set_tag(p, DMG_TAKEN, 0);&lt;br /&gt;
  &lt;br /&gt;
     sendPrivate(p,&amp;quot;*watchdamage&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
// then somewhere edit the tag values&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
case EVENT_WatchDamage:&lt;br /&gt;
  {&lt;br /&gt;
      // sets tag for k (shooter) to be old value plus damage dealt currently&lt;br /&gt;
      set_tag(k, DMG_BOMB_DEALT, get_tag(k, DMG_BOMB_DEALT) + damage);&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The following demonstrates how to retrieve the tag values as a command in spawn.h.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 if (c-&amp;gt;check(&amp;quot;showstats&amp;quot;)) {&lt;br /&gt;
            int temp = get_tag(p, DMG_TOTAL_DEALT);&lt;br /&gt;
&lt;br /&gt;
            String s = &amp;quot;You've done &amp;quot;;&lt;br /&gt;
            s += temp;&lt;br /&gt;
            s += &amp;quot; damage so far!&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            sendPrivate(p,s);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Destroy the tags when the player leaves arena.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 case EVENT_PlayerLeaving:&lt;br /&gt;
  {&lt;br /&gt;
    killTags(p);&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2.) '''Modified permanent get/setTag method'''&amp;lt;br /&amp;gt;&lt;br /&gt;
// same as get/setTag with some modifications to the tag code, then can use tags exactly as above&lt;br /&gt;
&lt;br /&gt;
// spawn.h, add char name[20]; into struct PlayerTag&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct PlayerTag&lt;br /&gt;
{&lt;br /&gt;
    Player *p;&lt;br /&gt;
    char name[20];&lt;br /&gt;
    int index;&lt;br /&gt;
    int data;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In spawn.cpp:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    case EVENT_PlayerLeaving:&lt;br /&gt;
    {&lt;br /&gt;
        Player *p = (Player*)event.p[0];&lt;br /&gt;
&lt;br /&gt;
        // killTags(p);  // remove so tag not deleted on arena exit&lt;br /&gt;
&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Locate in spawn.cpp and modify accordingly:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    int botInfo::get_tag(Player *p, int index)&lt;br /&gt;
    {&lt;br /&gt;
        _listnode &amp;lt;PlayerTag&amp;gt; *parse = taglist.head;&lt;br /&gt;
        PlayerTag *tag;&lt;br /&gt;
&lt;br /&gt;
        while (parse)&lt;br /&gt;
        {&lt;br /&gt;
          tag = parse-&amp;gt;item;&lt;br /&gt;
&lt;br /&gt;
          // if (tag-&amp;gt;p == p)&lt;br /&gt;
          if (strcmp(tag-&amp;gt;name,p-&amp;gt;name)==0)  // now tracking by player name, not ID&lt;br /&gt;
          if (tag-&amp;gt;index == index)&lt;br /&gt;
            return tag-&amp;gt;data;&lt;br /&gt;
&lt;br /&gt;
          parse = parse-&amp;gt;next;&lt;br /&gt;
        }&lt;br /&gt;
        return 0;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    void botInfo::set_tag(Player *p, int index, int data)&lt;br /&gt;
    {&lt;br /&gt;
        _listnode &amp;lt;PlayerTag&amp;gt; *parse = taglist.head;&lt;br /&gt;
        PlayerTag *tag;&lt;br /&gt;
&lt;br /&gt;
        while (parse)&lt;br /&gt;
        {&lt;br /&gt;
          tag = parse-&amp;gt;item;&lt;br /&gt;
&lt;br /&gt;
          //if (tag-&amp;gt;p == p)&lt;br /&gt;
          if (strcmp(tag-&amp;gt;name,p-&amp;gt;name)==0) // now tracking by player name, not ID&lt;br /&gt;
          if (tag-&amp;gt;index == index)&lt;br /&gt;
          {&lt;br /&gt;
            tag-&amp;gt;data = data;&lt;br /&gt;
            return;&lt;br /&gt;
          }&lt;br /&gt;
          parse = parse-&amp;gt;next;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        tag = new PlayerTag;&lt;br /&gt;
        // tag-&amp;gt;p = p; // not tracking by ID anymore&lt;br /&gt;
        strncpy(tag-&amp;gt;name, p-&amp;gt;name, 20); // tracking by player name&lt;br /&gt;
        tag-&amp;gt;index = index;&lt;br /&gt;
        tag-&amp;gt;data = data;&lt;br /&gt;
        taglist.append(tag);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;3.) '''Using structs, implement in spawn.h:'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class botInfo&lt;br /&gt;
{&lt;br /&gt;
 struct freqdata &lt;br /&gt;
  {&lt;br /&gt;
   int kills;&lt;br /&gt;
   int deaths;&lt;br /&gt;
  };&lt;br /&gt;
...&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To make use of this structure, implement accordingly:&lt;br /&gt;
&amp;lt;pre&amp;gt;freqdata freqs[100]; // 100 of those structs&amp;lt;/pre&amp;gt;&lt;br /&gt;
Access the data in spawn.cpp using&lt;br /&gt;
&amp;lt;pre&amp;gt;freqs[56].kills = 1;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Output of data/messages==&lt;br /&gt;
&amp;lt;p&amp;gt;An example of using normal strings to output data/messages.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 // does *arena X pilots left in game&lt;br /&gt;
 // NOTE: variable temp needs to be defined with some value&lt;br /&gt;
&lt;br /&gt;
 String s = &amp;quot;*arena &amp;quot;;&lt;br /&gt;
       s += temp;&lt;br /&gt;
       s += &amp;quot; pilots left in the game.&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 sendPublic(s);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 //NOTE: this can be considered inefficient.&lt;br /&gt;
&lt;br /&gt;
 sendPublic(&amp;quot;*arena &amp;quot; + (String)temp + &amp;quot; pilots left in the game&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;An example using sprintf to align/space data, where output data will be in this approximate format.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// output data will be in this approximate format (not lined up perfectly because of html)&lt;br /&gt;
// --------------------------------------------------------------------------------------&lt;br /&gt;
// Squad: squadname       PTS     FPTS    K    D  DMG DEALT TAKEN   F  FK    FLT&lt;br /&gt;
// --------------------------------------------------------------------------------------&lt;br /&gt;
// PlayerA              10000      500  116  101       9999 99999  10 150 980:55&lt;br /&gt;
// PlayerB                500      200    7    5       9999 99999   5   3   0:04&lt;br /&gt;
&lt;br /&gt;
char str[255];&lt;br /&gt;
sendPublic(&amp;quot;*arena--------------------------------------------------------------------------------&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
sprintf(str, &amp;quot;*arena Squad: %-20s   PTS     FPTS   K   D  DMG DEALT  TAKEN  F  FK  FLT&amp;quot;,&lt;br /&gt;
         freqs[freq].freqname&lt;br /&gt;
        );&lt;br /&gt;
&lt;br /&gt;
sendPublic(str);&lt;br /&gt;
&lt;br /&gt;
sendPublic(&amp;quot;*arena--------------------------------------------------------------------------------&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            // assuming existing freqs struct with data&lt;br /&gt;
            for (pilot=freqs[freq].playercount-1; pilot&amp;gt;=0; pilot--)&lt;br /&gt;
            {&lt;br /&gt;
                // on freq squad so print stats&lt;br /&gt;
                char outString[255];&lt;br /&gt;
&lt;br /&gt;
                sprintf(outString, &amp;quot;*arena %-20s %12d %8d %3d %3d %10d %6d %2d %3d %3d:%02d&amp;quot;,&lt;br /&gt;
                       freqs[freq].pilots[pilot].name,&lt;br /&gt;
                       freqs[freq].pilots[pilot].points,&lt;br /&gt;
                       freqs[freq].pilots[pilot].flagpoints,&lt;br /&gt;
                       freqs[freq].pilots[pilot].kills,&lt;br /&gt;
                       freqs[freq].pilots[pilot].deaths,&lt;br /&gt;
                       freqs[freq].pilots[pilot].dmgdealt,&lt;br /&gt;
                       freqs[freq].pilots[pilot].dmgtaken,&lt;br /&gt;
                       freqs[freq].pilots[pilot].flags,&lt;br /&gt;
                       freqs[freq].pilots[pilot].flagkills,&lt;br /&gt;
                       freqs[freq].pilots[pilot].flagtime /60,&lt;br /&gt;
                       freqs[freq].pilots[pilot].flagtime %60&lt;br /&gt;
                       );&lt;br /&gt;
                &lt;br /&gt;
                sendPublic(outString);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            // Notes: sprintf format = sprintf(output char string, spacing, variables)&lt;br /&gt;
            // Notes: s = chars, d = integer, - = left align, right align default&lt;br /&gt;
            // Notes: doing %02d = put 0 in front if not 2 digits, %3d:%02d makes 0:04 format&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Input/Output to files==&lt;br /&gt;
For reading and/or writing to files with C++ you must have the required include &lt;br /&gt;
&lt;br /&gt;
statement as follows:&lt;br /&gt;
 #include &amp;lt;fstream&amp;gt;&lt;br /&gt;
 using namespace std; // not a good practice, but works.&lt;br /&gt;
&lt;br /&gt;
'''Note''': neither example shows how to properly handle possible &lt;br /&gt;
&lt;br /&gt;
error-exceptions.&lt;br /&gt;
&lt;br /&gt;
===Input to file===&lt;br /&gt;
The following example will show you how to read a file, duel.ini, line by line.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;stdlib.h&amp;quot; // for atoi()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ifstream file(&amp;quot;duel.ini&amp;quot;);&lt;br /&gt;
  char line[256];&lt;br /&gt;
&lt;br /&gt;
  // read in MaxBoxes=X&lt;br /&gt;
  while (file.getline(line, 256))&lt;br /&gt;
   {&lt;br /&gt;
     &lt;br /&gt;
     if (CMPSTART(&amp;quot;MaxBoxes=&amp;quot;, line)) //Does the line begin with MaxBoxes= ?&lt;br /&gt;
     {&lt;br /&gt;
       MAX_BOXES = atoi(&amp;amp;(line[9]));  //If so, read the value into an integer, using atio.&lt;br /&gt;
       break;&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
  file.close();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Output to file===&lt;br /&gt;
The following code example will demonstrate how to append to a file, &lt;br /&gt;
&lt;br /&gt;
duelleaguestat.inc.&lt;br /&gt;
&lt;br /&gt;
 ofstream file(&amp;quot;duelleaguestat.inc&amp;quot;, ios::app);   // app = put all data at end of file&lt;br /&gt;
 file &amp;lt;&amp;lt; squad1&amp;lt;&amp;lt; endl;  // squad1 = char[20]&lt;br /&gt;
 file &amp;lt;&amp;lt; &amp;quot; vs &amp;quot;&amp;lt;&amp;lt; endl;&lt;br /&gt;
 file &amp;lt;&amp;lt; squad2&amp;lt;&amp;lt; endl;  // squad2 = char[20]&lt;br /&gt;
 file.close();&lt;br /&gt;
&lt;br /&gt;
Similarly, you are able to write an output of a String to a file, which is &lt;br /&gt;
&lt;br /&gt;
similar to the previous example but rather do this:&lt;br /&gt;
&lt;br /&gt;
 // key is converting String to (char*) to file write&lt;br /&gt;
 String str = freqs[freq].slotname[slot];&lt;br /&gt;
 str += &amp;quot;, Repels: &amp;quot; + (String)(int) t-&amp;gt;repel;&lt;br /&gt;
 file &amp;lt;&amp;lt; endl;&lt;br /&gt;
 file &amp;lt;&amp;lt; (char*) str;&lt;br /&gt;
&lt;br /&gt;
===Practical I/O Example===&lt;br /&gt;
This next example will show how to read input from a file using &lt;br /&gt;
&lt;br /&gt;
&amp;quot;GetPrivateProfileString&amp;quot;; based on the rampage plugin.&lt;br /&gt;
&lt;br /&gt;
The file format for rampage.ini is like this:&lt;br /&gt;
 7=is on a killing spree! (6:0)&lt;br /&gt;
 10=is opening a can of booya! (9:0)&lt;br /&gt;
&lt;br /&gt;
Now to read input data,we begin by creating a '''rampageini.h''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#pragma once&lt;br /&gt;
&lt;br /&gt;
#ifndef RAMPAGEINI_H&lt;br /&gt;
&lt;br /&gt;
 #define RAMPAGEINI_H&lt;br /&gt;
 #define NUM_RANKS 10&lt;br /&gt;
 #define BUFFER_LEN 256&lt;br /&gt;
&lt;br /&gt;
 struct RampageSettings&lt;br /&gt;
  {&lt;br /&gt;
   char quotes[NUM_RANKS][BUFFER_LEN];&lt;br /&gt;
  };&lt;br /&gt;
 &lt;br /&gt;
 void LoadSettings(RampageSettings &amp;amp;setts);&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In '''rampageini.cpp''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;quot;rampageini.h&amp;quot;&lt;br /&gt;
static char buffer[BUFFER_LEN];&lt;br /&gt;
static char path[BUFFER_LEN];&lt;br /&gt;
#include &amp;quot;../algorithms.h&amp;quot;&lt;br /&gt;
#define WIN32_LEAN_AND_MEAN&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 char *rank_type[10] = {&lt;br /&gt;
        &amp;quot;7&amp;quot;,&lt;br /&gt;
        &amp;quot;10&amp;quot;,&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
 void LoadSettings(RampageSettings &amp;amp;setts)&lt;br /&gt;
  {&lt;br /&gt;
    GetCurrentDirectory(BUFFER_LEN - 64, path);&lt;br /&gt;
    strcat(path, &amp;quot;\rampage.ini&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    for (int i = 0; i &amp;lt; NUM_RANKS; ++i)&lt;br /&gt;
      {&lt;br /&gt;
        GetPrivateProfileString(&amp;quot;Comments&amp;quot;, rank_type[i], &amp;quot;-ERROR-&amp;quot;,&lt;br /&gt;
                                setts.quotes[i], BUFFER_LEN, path);&lt;br /&gt;
      }&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Useful Player data==&lt;br /&gt;
&amp;lt;p&amp;gt;As stated earlier in the tutorial, MervBot stores useful player data internally as Player objects, see player.h for implementation details.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
* p-&amp;gt;name = player name stored as char[20]&lt;br /&gt;
** '''Note:''' SubSpace protocol allows for usernames to be 19+ in length, do not rely on this for player-name comparisions.&lt;br /&gt;
* p-&amp;gt;squad = player squad stored as char[20]&lt;br /&gt;
* p-&amp;gt;ship = ship (0-9) enumerated as SHIP_Warbird, SHIP_Spectator, etc..&lt;br /&gt;
* p-&amp;gt;safety = if ship is in safety zone (boolean)&lt;br /&gt;
* p-&amp;gt;bounty = player bounty&lt;br /&gt;
* p-&amp;gt;energy = player energy (have bot with *energy on to get accurate readings)&lt;br /&gt;
* p-&amp;gt;flagCount = how many flags player is holding&lt;br /&gt;
* p-&amp;gt;team = player frequency&lt;br /&gt;
* p-&amp;gt;(burst, repel, thor, brick, decoy, rocket, portal) = how many items of that type player has&lt;br /&gt;
* p-&amp;gt;(stealth, cloak, xradar, awarp, ufo, flash, safety, shields, supers) = if player has that item on (boolean)&lt;br /&gt;
* p-&amp;gt;score.killPoints = player kill points&lt;br /&gt;
* p-&amp;gt;score.flagPoints = player flag points&lt;br /&gt;
* p-&amp;gt;score.wins = player kills from f2&lt;br /&gt;
* p-&amp;gt;score.losses = player deaths from f2&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Bot built in functions==&lt;br /&gt;
&amp;lt;blockquote&amp;gt;// useful MervBot commands to control what the bot is doing&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
// player.cpp&amp;lt;br /&amp;gt;&lt;br /&gt;
Player::move(Sint32 x, Sint32 y) &amp;amp;nbsp;// example &amp;amp;nbsp;me-&amp;amp;gt;move(512,512) - bot moves to coord 512 512&amp;lt;br /&amp;gt;&lt;br /&gt;
Player::clone(Player *p) // example &amp;amp;nbsp;me-&amp;amp;gt;clone(p) &amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
// dllcore.cpp (descriptions of functions in dllcore.h)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeEcho&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (char *m);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeSay&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (int t, int s, int i, char *m);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeShip&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (int s);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeTeam&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (int t);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeGrabFlag&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (int f);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeSendPosition&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (bool reliable);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeDropFlags&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; ();&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeDeath&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (Player *p);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeAttach&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (Player *p);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeDetach&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; ();&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeFollowing&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (bool f);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeFlying&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (bool f);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeBanner&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (BYTE *b);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeDropBrick&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; ();&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeFireWeapon&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (void *weapon_info);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeToggleObjects&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (Uint16 player, Uint16 *objects, int num_objects);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeSpawnBot&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
(char *name, char *password, char *staff, char *arena);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeChangeArena&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (char *name);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeChangeSettings&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (_linkedlist &amp;amp;lt;String&amp;amp;gt; *settings);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
// example how to use them:&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
tell(makeFollowing(false));&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                      &amp;lt;br /&amp;gt;&lt;br /&gt;
// look in Commands.txt , command.cpp (core), or /!help to bot to see all bot external commands (example /!go &amp;amp;lt;arena&amp;amp;gt;)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                      &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Example Code==&lt;br /&gt;
&amp;lt;!-- Example Code Sections have specific     --&amp;gt;&lt;br /&gt;
&amp;lt;!-- internal commenting system That         --&amp;gt;&lt;br /&gt;
&amp;lt;!-- go like this:                           --&amp;gt;&lt;br /&gt;
&amp;lt;!-- .equals.x4 &amp;lt;TITLE&amp;gt; .equals.x4           --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;!-- EXAMPLE L: BEGIN --&amp;gt;               --&amp;gt;&lt;br /&gt;
&amp;lt;!-- CODE / ETC HERE.                        --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE L: END   --&amp;gt;         --&amp;gt;&lt;br /&gt;
==== No antiwarp in center of the map ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE A: BEGIN --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example A''': No antiwarp in center of map. Warn the player, and revoke the prize.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In order for this code to work correctly, the bot must have smod+ privilages.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Lets first implement two functions which we will need to accomplish this task:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 bool closeto(Player *p, int x, int y, int tolerance) {&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;
 inline int abs(int n) {&lt;br /&gt;
    if (n &amp;lt; 0)    return -n;&lt;br /&gt;
    else        return n; }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We should define the radius of antiwarp checking, this can be done several ways, for sake of simplicity, here is a quick-plop-in for '''spawn.h''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class botInfo&lt;br /&gt;
{&lt;br /&gt;
	bool CONNECTION_DENIED;&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;
         ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Locate and add into '''spawn.cpp''' accordingly:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
case EVENT_PlayerMove:&lt;br /&gt;
{&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;ship != SHIP_Spectator) &amp;amp;&amp;amp; (p-&amp;gt;awarp)) {&lt;br /&gt;
        if (closeto(p, 512, 512, radius)){&lt;br /&gt;
            sendPrivate(p, &amp;quot;*prize #-20&amp;quot;);&lt;br /&gt;
            sendPrivate(p, &amp;quot;*warn Antiwarp is not allowed in center.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Just as a word of caution, players may at times be flooded with *prize #-20, and *warn statements under certain conditions.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE A: END   --&amp;gt;&lt;br /&gt;
==== Setting freq size depending on how many pilots in game ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE B: BEGIN --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example B''': Setting freq size depending on how many pilots in game.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In order for this code to work correctly, the bot must have Sysop or Arena-Owner privilages.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In '''spawn.cpp''' (Note: this source code has assumptions, please review comments before implementing.):&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;
  // NOTE: assuming countdown[0] initialized to &amp;gt; 0  in spawn.h, freqchange=0;&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;
            String s;&lt;br /&gt;
            s = &amp;quot;Max freq size 4  (&amp;quot;;&lt;br /&gt;
            s += count;&lt;br /&gt;
            s += &amp;quot; pilots in game)&amp;quot;;&lt;br /&gt;
            sendPublic(s);&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;
            String s;&lt;br /&gt;
            s = &amp;quot;Max freq size 3  (&amp;quot;;&lt;br /&gt;
            s += count;&lt;br /&gt;
            s += &amp;quot; pilots in game)&amp;quot;;&lt;br /&gt;
            sendPublic(s);&lt;br /&gt;
            freqchange = 3;&lt;br /&gt;
        }&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;&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE B: END   --&amp;gt;&lt;br /&gt;
==== Tracking kills and announcing when pilot gets 10 kills in a row without dying ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE C: BEGIN --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example C''': Tracking kills and announcing when pilot gets 10 kills in a row without&lt;br /&gt;
dying.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In order for this code to work correctly, the bot must have smod+ privilages.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Locate EVENT_PlayerDeath in '''spawn.cpp''' (see note.):&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;
    // NOTE: assuming tags are setup (see storing data section).&lt;br /&gt;
    set_tag(p, KILLS, 0);  // pilot died, reset to 0 kills in a row&lt;br /&gt;
    set_tag(k, KILLS, get_tag(k, KILLS) + 1);  // pilot killed someone, increment kills in a row by 1&lt;br /&gt;
&lt;br /&gt;
    if (get_tag(k, KILLS) == 10)&lt;br /&gt;
        sendPublic(&amp;quot;*arena (String) k-&amp;gt;name + &amp;quot; has gotten 10 kills.&amp;quot;);&lt;br /&gt;
 ...&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE C: END   --&amp;gt;&lt;br /&gt;
==== Warp pilot to coord when they are in a certain region ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE D: BEGIN --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example D''': Warp pilot to coord when they are in a certain region.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In order for this code to work correctly, the bot must have smod+ privilages.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Lets first implement two functions which we will need to accomplish this task:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 bool closeto(Player *p, int x, int y, int tolerance) {&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;
 inline int abs(int n) {&lt;br /&gt;
    if (n &amp;lt; 0)    return -n;&lt;br /&gt;
    else        return n; }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In '''spawn.cpp''', EVENT_PlayerMove:&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 of map coord 509,509&lt;br /&gt;
      {  &lt;br /&gt;
         sendPrivate(p, &amp;quot;*warpto 509 504&amp;quot;);  // warp to coord 509,504&lt;br /&gt;
      }&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE D: END   --&amp;gt;&lt;br /&gt;
==== Structures within structures ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE E: START   --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example E''': Structures within structures (spawn.h botinfo).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Implement the following in the spawn.h:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct playerstats&lt;br /&gt;
 {&lt;br /&gt;
   char name[20];&lt;br /&gt;
&lt;br /&gt;
   int kills;&lt;br /&gt;
   int deaths;&lt;br /&gt;
   Uint16 points;&lt;br /&gt;
   Uint16 flagpoints;&lt;br /&gt;
   int flagtime;&lt;br /&gt;
   int cflagtime;&lt;br /&gt;
   int flags;&lt;br /&gt;
   int flagkills;&lt;br /&gt;
&lt;br /&gt;
   int dmgdealt;&lt;br /&gt;
   int 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;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
 //... (large jump down in spawn.h)&lt;br /&gt;
&lt;br /&gt;
 // Put bot data here &amp;lt;- locate and add after:&lt;br /&gt;
 freqdata freqs[100];&lt;br /&gt;
&lt;br /&gt;
 //... &amp;lt;- perhaps some other variables.. scroll down past the next }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void Clear(); // A user-defined function. Add this.&lt;br /&gt;
&lt;br /&gt;
 void clear_objects(); //already exists, provided by Catid.&lt;br /&gt;
 void object_target(Player *p); //already exists, provided by Catid.&lt;br /&gt;
&lt;br /&gt;
 // ...  spawn.h continues.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Implement the following in '''spawn.cpp''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void botInfo::Clear()&lt;br /&gt;
{&lt;br /&gt;
  // initialize/clear struct data&lt;br /&gt;
  for (int n=99; n&amp;gt;=0; n--)&lt;br /&gt;
  {&lt;br /&gt;
    freqs[n].freqteam=-1;&lt;br /&gt;
    freqs[n].freqpoints=0;&lt;br /&gt;
    freqs[n].freqflagpoints=0;&lt;br /&gt;
    freqs[n].playercount=0;&lt;br /&gt;
    freqs[n].flags=0;&lt;br /&gt;
    freqs[n].kills=0;&lt;br /&gt;
    freqs[n].deaths=0;&lt;br /&gt;
    freqs[n].freqflagtime=0;&lt;br /&gt;
    freqs[n].flagkills=0;&lt;br /&gt;
    freqs[n].dmgdealt=0;&lt;br /&gt;
    freqs[n].dmgtaken=0;&lt;br /&gt;
&lt;br /&gt;
    for (int m = 99; m&amp;gt;=0; m--)&lt;br /&gt;
    {&lt;br /&gt;
      freqs[n].pilots[m].deaths=0;&lt;br /&gt;
      freqs[n].pilots[m].kills=0;&lt;br /&gt;
      freqs[n].pilots[m].points=0;&lt;br /&gt;
      freqs[n].pilots[m].flagpoints=0;&lt;br /&gt;
      freqs[n].pilots[m].flagtime=0;&lt;br /&gt;
      freqs[n].pilots[m].cflagtime=0;&lt;br /&gt;
      freqs[n].pilots[m].flags=0;&lt;br /&gt;
      freqs[n].pilots[m].flagkills=0;&lt;br /&gt;
      freqs[n].pilots[m].dmgdealt=0;&lt;br /&gt;
      freqs[n].pilots[m].dmgtaken=0;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;                                                                 &lt;br /&gt;
To access private data:&lt;br /&gt;
&amp;lt;pre&amp;gt;freqs[1].pilots[2].kills++;&amp;lt;/pre&amp;gt;&lt;br /&gt;
-OR-&lt;br /&gt;
&amp;lt;pre&amp;gt;int freq = p-&amp;gt;team;&lt;br /&gt;
freqs[freq].deaths++;&amp;lt;/pre&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE E: END   --&amp;gt;&lt;br /&gt;
==== Tracking flag data ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE F: START   --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example F''': Tracking flag data.&amp;lt;/p&amp;gt;&lt;br /&gt;
f) Tracking flag data&amp;lt;br /&amp;gt;                                           &lt;br /&gt;
                                                                        &lt;br /&gt;
&amp;lt;blockquote&amp;gt;Example GetPilot() function &amp;amp;nbsp;(using structs from example e)&amp;lt;br /&amp;gt;&amp;lt;blockquote&amp;gt;bool botInfo::GetPilot(Player *p)&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // get a pilots freq/pilot id from struct&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; for (freq=freqcount-1; freq&amp;amp;gt;=0; freq--)&amp;lt;br /&amp;gt;&lt;br /&gt;
	if (p-&amp;amp;gt;team == freqs[freq].freqteam)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; for (pilot = freqs[freq].playercount-1; pilot&amp;amp;gt;=0; pilot--)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
if (strcmp(p-&amp;amp;gt;name,freqs[freq].pilots[pilot].name)==0)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return true;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return false;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Example way to track flag data using above struct/functions&amp;lt;br /&amp;gt;&amp;lt;blockquote&amp;gt;&lt;br /&gt;
case EVENT_FlagGrab:&amp;lt;br /&amp;gt;&lt;br /&gt;
	{&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (GetPilot(p)) &amp;amp;nbsp;// function&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freq].pilots[pilot].flags++;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freq].flags++;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
if (freqs[freq].pilots[pilot].flags &amp;amp;lt; 2) // didnt have a flag before,&lt;br /&gt;
first flag&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freq].pilots[pilot].cflagtime = GetTickCount();&lt;br /&gt;
&amp;amp;nbsp;// time stamp when picked up flag&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;blockquote&amp;gt;Example way to track flag data using built in get/set tag (from catid flagbot)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                               &amp;lt;blockquote&amp;gt;&lt;br /&gt;
case EVENT_FlagGrab:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	{&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; set_tag(p, TAG_STAT_FS, get_tag(p, TAG_STAT_FS) + 1);&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; set_tag(p, TAG_FLAGTIMER, GetTickCount());&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	}&amp;lt;br /&amp;gt;                            &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                    &amp;lt;/blockquote&amp;gt;&amp;amp;nbsp;&amp;lt;/blockquote&amp;gt;&amp;amp;nbsp;&amp;lt;blockquote&amp;gt;Get current flag times using struct format&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                   &amp;lt;blockquote&amp;gt;void botInfo::SetFlagTimes()&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // set current flagtime for pilots/freqs&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; _listnode &amp;amp;lt;Player&amp;amp;gt; *parse = playerlist-&amp;amp;gt;head;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; while (parse)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	Player *p = parse-&amp;amp;gt;item;&amp;lt;br /&amp;gt;  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
	if (GetPilot(p))&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (freqs[freq].pilots[pilot].flags &amp;amp;gt; 0)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (PilotOnSquad(p))&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freq].freqflagtime += (GetTickCount() - freqs[freq].pilots[pilot].cflagtime)/1000;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                     &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
freqs[freq].pilots[pilot].flagtime += (GetTickCount() - freqs[freq].pilots[pilot].cflagtime)/1000;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
freqs[freq].pilots[pilot].cflagtime = GetTickCount();&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;         &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                           &amp;lt;br /&amp;gt;&lt;br /&gt;
	parse = parse-&amp;amp;gt;next;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;                                                                  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                           &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
// side note: &amp;amp;nbsp;case EVENT_FlagDrop: {} gets called anytime theres a teamkill&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                   &amp;lt;/blockquote&amp;gt;                                                                &lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE F: END   --&amp;gt;&lt;br /&gt;
==== Example way to do simple /!spam feature (allowed 1x/60s) ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE G: START   --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example G''': Example way to do simple /!spam feature (allowed 1x/60s).&amp;lt;/p&amp;gt;&lt;br /&gt;
g) Example way to do simple /!spam feature (allowed 1x/60s)&amp;lt;br /&amp;gt;     &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                             &amp;lt;blockquote&amp;gt;declare and initialize variables in spawn.h&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                     &amp;lt;blockquote&amp;gt;class botInfo&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
bool spamready;&amp;lt;br /&amp;gt;&lt;br /&gt;
int SPAM_TIME;&amp;lt;br /&amp;gt;                                                     &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
 &amp;lt;br /&amp;gt;&lt;br /&gt;
public:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; botInfo(CALL_HANDLE given)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; spamready = true;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; SPAM_TIME = 60;&amp;lt;br /&amp;gt;                                 &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                     &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
spawn.cpp - mark as spamready=true when 60 seconds up&amp;lt;br /&amp;gt;           &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                           &amp;lt;blockquote&amp;gt;case EVENT_Tick:&amp;lt;br /&amp;gt;&lt;br /&gt;
	{&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (countdown[0] == 1) &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; spamready = true; &amp;amp;nbsp;// ready to spam again&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;         &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                               &amp;lt;/blockquote&amp;gt;            &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
command.cpp - handle !spam command&amp;lt;br /&amp;gt;                              &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                          &amp;lt;blockquote&amp;gt;case OP_Player:&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // Player-level commands&amp;lt;br /&amp;gt;                       &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                   &amp;lt;br /&amp;gt;&lt;br /&gt;
else if (c-&amp;amp;gt;check(&amp;amp;quot;spam&amp;amp;quot;))&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
// zone announcement &amp;amp;quot;Need pilots to duel in ?go arena -pilotname&amp;amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (spamready == true)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; String s;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += &amp;amp;quot;*zone Need pilots to duel in ?go &amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += arena;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += &amp;amp;quot; - &amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += p-&amp;amp;gt;name;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPublic(s);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; spamready=false;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; countdown[0] = SPAM_TIME * 60; // next spam time limit&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; else if (countdown[0] &amp;amp;lt; 0)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPrivate(p,&amp;amp;quot;Spam ability disabled.&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; else &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; String s;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += SPAM_TIME;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += &amp;amp;quot; Minute timer between announcements. &amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += countdown[0] / 60;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += &amp;amp;quot;:&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (countdown[0] % 60 &amp;amp;lt; 10)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += &amp;amp;quot;0&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += countdown[0] % 60;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += &amp;amp;quot; minutes left before next spam allowed.&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPrivate(p, s);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;         &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                 &amp;lt;/blockquote&amp;gt;&amp;amp;nbsp;&amp;lt;/blockquote&amp;gt;           &lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE G: END     --&amp;gt;&lt;br /&gt;
==== Implementing a simple stack to do &amp;quot;next in line for several 'boxes' at once&amp;quot; ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE H: START   --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example H''': Example of implementing a simple stack to do &amp;quot;next in line for several 'boxes' at once&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In '''spawn.h''' declare the following variables and structs:&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  &amp;lt;- locate and add after&lt;br /&gt;
  Player *next[99][99];&lt;br /&gt;
  int MAX_NEXT;&lt;br /&gt;
  int nextcount[99];&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 &amp;lt;- locate and add after&lt;br /&gt;
    MAX_NEXT = 8; &lt;br /&gt;
&lt;br /&gt;
//... spawn.h continues on.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In '''spawn.cpp''' implement (remember to add the function prototype to spawn.h as well.):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void botInfo::MoveUp(int pos, int box)&lt;br /&gt;
{&lt;br /&gt;
    // moves up the next line for that box and decrement box's nextcount&lt;br /&gt;
    if (nextcount[box] &amp;gt; 0)&lt;br /&gt;
        nextcount[box]--;&lt;br /&gt;
&lt;br /&gt;
    for (pos = pos; pos &amp;lt; MAX_NEXT - 1; pos++)&lt;br /&gt;
    {&lt;br /&gt;
        next[box][pos] = next[box][pos + 1];&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    next[box][MAX_NEXT] = 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE H: END     --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example of reading any text from a .txt and printing it to pilot line by line ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE I: START   --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example I''': Example of reading any text from a .txt and printing it to pilot line by line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Required include:&lt;br /&gt;
&amp;lt;pre&amp;gt;#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
using namespace std;  // bad coding practice, but for ease of use, we'll use it.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Example of use, in command.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;
        // read in data line by line from the file staff.txt (max length 255)&lt;br /&gt;
        ifstream file(&amp;quot;staff.txt&amp;quot;);&lt;br /&gt;
        char line[256];&lt;br /&gt;
&lt;br /&gt;
        while (file.getline(line, 256))&lt;br /&gt;
        {&lt;br /&gt;
            sendPrivate(p, line);&lt;br /&gt;
        }&lt;br /&gt;
        file.close();&lt;br /&gt;
    } &lt;br /&gt;
&lt;br /&gt;
    //... command.cpp continues.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE I: END     --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example of printing player stats grid ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE J: START   --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example J''': Example of printing player stats grid.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note''': This example code relies on previously discussed material. Please see the section &amp;quot;structures within structures&amp;quot; example for variable declarations, varibale freqcount = # of freqs.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note''': User defined function ''sendFreqs'' is required.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In '''spawn.cpp''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void botInfo::DisplayPlayers()&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;
    for (freq=freqcount-1; freq&amp;gt;=0; freq--)&lt;br /&gt;
    {&lt;br /&gt;
      char str[255];&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;, freqs[freq].freqname);&lt;br /&gt;
&lt;br /&gt;
      sendFreqs(str);&lt;br /&gt;
&lt;br /&gt;
      sendFreqs(&amp;quot;---------------------------------------------------&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
      for (pilot=freqs[freq].playercount-1; pilot &amp;gt;= 0; pilot--)&lt;br /&gt;
      {&lt;br /&gt;
        sprintf(str, &amp;quot;%-20s %8d %2d %2d %9d %5d&amp;quot;,&lt;br /&gt;
                 freqs[freq].pilots[pilot].name,&lt;br /&gt;
                 freqs[freq].pilots[pilot].kills,&lt;br /&gt;
                 freqs[freq].pilots[pilot].deaths,&lt;br /&gt;
                 freqs[freq].pilots[pilot].teamkills,&lt;br /&gt;
                 freqs[freq].pilots[pilot].dmgdealt,&lt;br /&gt;
                 freqs[freq].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;
              freqs[freq].kills, freqs[freq].deaths,&lt;br /&gt;
              freqs[freq].teamkills,&lt;br /&gt;
              freqs[freq].dmgdealt,&lt;br /&gt;
              freqs[freq].dmgtaken&lt;br /&gt;
             );&lt;br /&gt;
      sendFreqs(str);&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;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE J: END     --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Checking if any pilots are within a region ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE K: START     --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example K''': Example of checking if any pilots are within a region.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note''': User-defined function ''GetPilotName'' is missing, and needs to be implemented.See prior examples.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note''': User-defined function ''closeto'' is missing, and needs to be implemented. See prior examples.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In spawn.cpp ('''Note''': you will also need to add the function prototype to spawn.h accordingly):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bool botInfo::FreqAInBox()&lt;br /&gt;
{&lt;br /&gt;
    // return true if teamA has a pilot in the box, otherwise false&lt;br /&gt;
    for (int tempplayercount = freqs[0].playercount-1; tempplayercount &amp;gt;= 0; tempplayercount--)&lt;br /&gt;
       if (GetPilotName(freqs[0].pilots[tempplayercount].name))&lt;br /&gt;
         if (closeto(TempPlayer, coordX, coordY, 73) &amp;amp;&amp;amp; (TempPlayer-&amp;gt;ship != SHIP_Spectator))&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;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE K: END       --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Functions to get a pilot's struct id info from a name or *player info ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE L: START     --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example L''': Example of functions to get a pilot's struct id info from a name or *player info.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note''': Required structures needed for this example to work. See structure examples for variable information.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note''': Remember to implement any function into the spawn.h accordingly.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note''': Using pilot names as vital comparisions should be used with caution. See [http://cypherjf.sscentral.com/articles/botsasclients.html Bot-Issues] by CypherJF.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note''' from Underlord: It is &amp;quot;better to implement these functions as passing values by reference instead of using global variables... [it is] just easier to not have to be declaring different int freq, int pilot all the time.&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In spawn.cpp:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// return struct freq/pilot id from *player info&lt;br /&gt;
bool botInfo::GetPilot(Player *p)&lt;br /&gt;
{&lt;br /&gt;
    // return freq, pilot of a player p&lt;br /&gt;
    for (freq=freqcount-1; freq&amp;gt;=0; freq--)&lt;br /&gt;
     if (p-&amp;gt;team == freqs[freq].freqteam)&lt;br /&gt;
        for (pilot = freqs[freq].playercount-1; pilot&amp;gt;=0; 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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// return *player as TempPlayer info from p-&amp;gt;name info&lt;br /&gt;
bool botInfo::GetPilotName(char *name)&lt;br /&gt;
{&lt;br /&gt;
    // get pilot from a name, return as TempPlayer&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;
        // convert both to lowercase to compare&lt;br /&gt;
        char pname[20];           &lt;br /&gt;
        strncpy(pname,p-&amp;gt;name,20);&lt;br /&gt;
&lt;br /&gt;
        char nname[20];           &lt;br /&gt;
        strncpy(nname,name,20);&lt;br /&gt;
&lt;br /&gt;
        tolower(pname);&lt;br /&gt;
        tolower(nname);&lt;br /&gt;
&lt;br /&gt;
        if (strcmp(pname,nname)==0)&lt;br /&gt;
        {&lt;br /&gt;
          TempPlayer = p;&lt;br /&gt;
          return true;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        parse = parse-&amp;gt;next;&lt;br /&gt;
    }&lt;br /&gt;
    return false;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE L: END       --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Creating a logfile name using date and squad names ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE M: START     --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example M''': Example of creating a logfile name using date and squad names.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Example Output: 03y01m27dBLACKDRaGON vs Integral05h08m.txt.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Format: year, month, day, squadA vs squadB, hour, minute.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note''': Assuming you define the following variables: squadA (String), squadB (String).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    // create log file name (squadA and squadB external char[20] variables)&lt;br /&gt;
    char u[100];&lt;br /&gt;
    time_t t=time(NULL);&lt;br /&gt;
    tm *tmp = localtime(&amp;amp;t);&lt;br /&gt;
    strftime(u,99,&amp;quot;%y&amp;quot;,tmp);&lt;br /&gt;
    logname = u;&lt;br /&gt;
    logname += &amp;quot;y&amp;quot;;&lt;br /&gt;
    strftime(u,99,&amp;quot;%m&amp;quot;,tmp);&lt;br /&gt;
    logname += u;&lt;br /&gt;
    logname += &amp;quot;m&amp;quot;;&lt;br /&gt;
    strftime(u,99,&amp;quot;%d&amp;quot;,tmp);&lt;br /&gt;
    logname += u;&lt;br /&gt;
    logname += &amp;quot;d&amp;quot;;&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;%I&amp;quot;,tmp);&lt;br /&gt;
    logname += u;&lt;br /&gt;
    logname += &amp;quot;h&amp;quot;;&lt;br /&gt;
    strftime(u,99,&amp;quot;%M&amp;quot;,tmp);&lt;br /&gt;
    logname += u;&lt;br /&gt;
    logname += &amp;quot;m&amp;quot;;&lt;br /&gt;
    logname += &amp;quot;.txt&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE M: END       --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Sending messages to playing freqs or public and logging depending on status ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE N: START     --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example N''': Example of sending messages to playing freqs or public and logging depending on status.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note''': Assumes you have the following variables declared: teamA (String), teamB (String), logname (String).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note''': Remember to implement the function prototypes into spawn.h&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Required include statements:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
using namespace std;  // bad coding practice, but it works.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In spawn.cpp:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// teamA, teamB, logname global variables&lt;br /&gt;
void botInfo::sendFreqs(char *msg)&lt;br /&gt;
{&lt;br /&gt;
  char *mmsg = &amp;quot;*arena&amp;quot;;&lt;br /&gt;
  String s = msg;&lt;br /&gt;
   &lt;br /&gt;
  if (teammsgs == false)&lt;br /&gt;
  {&lt;br /&gt;
    s.prepend(&amp;quot;*arena &amp;quot;,7);&lt;br /&gt;
    sendPublic(s);&lt;br /&gt;
  }&lt;br /&gt;
  else&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;
  if (gameon == true)&lt;br /&gt;
  {&lt;br /&gt;
    ofstream outf(logname, 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;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE N: END       --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Reading in all player/freqs to struct data ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE O: START     --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example O''': Example of reading in all player/freqs to struct data.&amp;lt;/p&amp;gt;&lt;br /&gt;
o) Example of reading in all player/freqs to struct data&amp;lt;br /&amp;gt;        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                    &amp;lt;blockquote&amp;gt;// see structures within structures example for freqs[] declaration&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
// to get freqs in a game where there are several freqs&amp;lt;br /&amp;gt;&lt;br /&gt;
void botInfo::GetFreqs()&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // read pilots into freq struct data from ingame and on playing freqs&amp;lt;br /&amp;gt;                      &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                        &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; _listnode &amp;amp;lt;Player&amp;amp;gt; *parse = playerlist-&amp;amp;gt;head;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; while (parse)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	Player *p = parse-&amp;amp;gt;item;&amp;lt;br /&amp;gt;  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
   &amp;lt;br /&amp;gt;&lt;br /&gt;
	if (p-&amp;amp;gt;ship != SHIP_Spectator)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (closeto(p, coordX, coordY, 73))&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // look for freq in struct&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; bool foundfreq=false;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freq=freqcount-1;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; while ((freq&amp;amp;gt;=0) &amp;amp;amp;&amp;amp;amp; (foundfreq==false))&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (p-&amp;amp;gt;team == freqs[freq].freqteam)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	foundfreq=true;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	strncpy(freqs[freq].pilots[freqs[freq].playercount].name,&lt;br /&gt;
p-&amp;amp;gt;name, 20);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	freqs[freq].playercount++;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freq--;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // didnt find freq in struct so add new freq&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (foundfreq == false)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (manualsquads == false)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	strncpy(freqs[freqcount].freqname,&lt;br /&gt;
p-&amp;amp;gt;squad, 20);&amp;lt;br /&amp;gt;                                                  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                            &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	if (freqcount == 0)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; teamA = p-&amp;amp;gt;team;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strncpy(squadA,&lt;br /&gt;
p-&amp;amp;gt;squad, 20);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; else&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; teamB = p-&amp;amp;gt;team;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strncpy(squadB,&lt;br /&gt;
p-&amp;amp;gt;squad, 20);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; else&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	if (p-&amp;amp;gt;team == teamA)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strncpy(freqs[freqcount].freqname,squadA,20);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	else if (p-&amp;amp;gt;team == teamB)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strncpy(freqs[freqcount].freqname,squadB,20);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freqcount].freqteam = p-&amp;amp;gt;team;&amp;lt;br /&amp;gt;         &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                     &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strncpy(freqs[freqcount].pilots[0].name, p-&amp;amp;gt;name, 20);&amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
     &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freqcount].playercount++;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqcount++;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
	parse = parse-&amp;amp;gt;next;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;                                                                  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
// to get freqs in a game where there are only two teams&amp;lt;br /&amp;gt;&lt;br /&gt;
void botInfo::GetFreqs()&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // read pilots into freq struct data from ingame and on playing freqs&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; _listnode &amp;amp;lt;Player&amp;amp;gt; *parse = playerlist-&amp;amp;gt;head;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; while (parse)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	Player *p = parse-&amp;amp;gt;item;&amp;lt;br /&amp;gt;  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                           &amp;lt;br /&amp;gt;&lt;br /&gt;
	if ((p-&amp;amp;gt;ship != SHIP_Spectator)&lt;br /&gt;
&amp;amp;amp;&amp;amp;amp; ((p-&amp;amp;gt;team == teamA) || (p-&amp;amp;gt;team == teamB)))&amp;lt;br /&amp;gt;&lt;br /&gt;
	{&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // freq 100, team A&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // set freq&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freq = 0;&amp;lt;br /&amp;gt; &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (p-&amp;amp;gt;team == teamB)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freq = 1;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // number of pilots on freq counted so far, starts 0&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; pilot = freqs[freq].playercount;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // pilot name&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strncpy(freqs[freq].pilots[pilot].name, p-&amp;amp;gt;name, 20);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // time stamp for playing time&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freq].pilots[pilot].cplaying_time = GetTickCount();&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // slot name&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (freqs[freq].playercount &amp;amp;lt; NUMBER_PILOTS)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
strncpy(freqs[freq].slotname[pilot], p-&amp;amp;gt;name, 20);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // increment freq player count&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freq].playercount++;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // if freq not already have name, give it player squad name&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if ((manualsquads == false) &amp;amp;amp;&amp;amp;amp; (strlen(p-&amp;amp;gt;squad) &amp;amp;gt; 0))&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strncpy(freqs[freq].freqname, p-&amp;amp;gt;squad, 20);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; // set player ship&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freq].pilots[pilot].ship = p-&amp;amp;gt;ship + 1;&amp;lt;br /&amp;gt;&lt;br /&gt;
	}&amp;lt;br /&amp;gt;&lt;br /&gt;
	parse = parse-&amp;amp;gt;next;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                      &amp;lt;/blockquote&amp;gt;                                     &lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE O: END       --&amp;gt;&lt;br /&gt;
==== Finding MVP from struct data (2*kills - deaths formula) ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE P: BEGIN --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example P''': Example of finding MVP from struct data (2*kills - deaths formula).&amp;lt;/p&amp;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;
 for (pilot = freqs[mvpteam].playercount-1; pilot &amp;gt;=0; pilot--)&lt;br /&gt;
   {&lt;br /&gt;
     if (((freqs[mvpteam].pilots[pilot].kills * 2) - freqs[mvpteam].pilots[pilot].deaths) &amp;gt; highest)&lt;br /&gt;
      {&lt;br /&gt;
        mvp = pilot;&lt;br /&gt;
        highest = (freqs[mvpteam].pilots[pilot].kills * 2) - freqs[mvpteam].pilots[pilot].deaths;&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE P: END  --&amp;gt;&lt;br /&gt;
==== Print time stamp of event ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE Q: BEGIN --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example Q''': Print time stamp of event.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;pre&amp;gt;#include &amp;quot;time.h&amp;quot; // required include&amp;lt;/pre&amp;gt;Use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 char u[100];&lt;br /&gt;
 time_t t=time(NULL);&lt;br /&gt;
 tm *tmp = localtime(&amp;amp;t);&lt;br /&gt;
 strftime(u,99,&amp;quot;%c&amp;quot;,tmp);&lt;br /&gt;
 sendPublic(&amp;quot;Current date and time: &amp;quot; + (String) u);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE Q: END   --&amp;gt;&lt;br /&gt;
==== Simple way to track player bomb/bullet damage stats ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE R: BEGIN --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example R''': Simple way to track player bomb/bullet damage stats.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note''': see data section for how to setup set_tag.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note''': see clientprot.h for weapon information.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In '''spawn.cpp''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
case EVENT_WatchDamage:&lt;br /&gt;
{&lt;br /&gt;
    if (PLAYING)  // if tracking stats&lt;br /&gt;
    {&lt;br /&gt;
        if ((wi.type == PROJ_PBomb) &amp;amp;&amp;amp; (p-&amp;gt;name != k-&amp;gt;name))&lt;br /&gt;
        {&lt;br /&gt;
            set_tag(k, DMG_BOMB_DEALT, get_tag(k, DMG_BOMB_DEALT) + damage);&lt;br /&gt;
            set_tag(k, DMG_TOTAL_DEALT, get_tag(k, DMG_TOTAL_DEALT) + damage);&lt;br /&gt;
            set_tag(p, DMG_BOMB_TAKEN, get_tag(p, DMG_BOMB_TAKEN) + damage);&lt;br /&gt;
            set_tag(p, DMG_TOTAL_TAKEN, get_tag(p, DMG_TOTAL_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(k, DMG_TOTAL_DEALT, get_tag(k, DMG_TOTAL_DEALT) + damage);&lt;br /&gt;
            set_tag(p, DMG_BULLET_TAKEN, get_tag(k, DMG_BULLET_TAKEN) + damage);&lt;br /&gt;
            set_tag(p, DMG_TOTAL_TAKEN, get_tag(k, DMG_TOTAL_TAKEN) + damage);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;!-- EXAMPLE R: END   --&amp;gt; &lt;br /&gt;
==== Simple way to print those stats ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE S: START --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example S''': Simple way to print those stats.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
case OP_Moderator:&lt;br /&gt;
{&lt;br /&gt;
   if (c-&amp;gt;check(&amp;quot;showstats&amp;quot;))&lt;br /&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;
	     sprintf(str, &amp;quot;(%-20s Dmg Dealt: Total %0004d, Bomb %0004d, Bullet %0004d  Dmg TAKEN: Total %0004d, Bomb %0004d, Bullet %0004d)&amp;quot;,&lt;br /&gt;
	     p-&amp;gt;name,&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;
	     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;
&lt;br /&gt;
	     sendPublic(str);&lt;br /&gt;
	    }&lt;br /&gt;
	  parse = parse-&amp;gt;next;&lt;br /&gt;
	}&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;!-- EXAMPLE S: END   --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Make bot spectate specific coordinates ====&lt;br /&gt;
&amp;lt;!-- EXAMPLE T: START   --&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''Example T''': Make bot spectate specific coordinates.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// make bot spectate the coord 512,600&lt;br /&gt;
// possible use - capturing weapon packets in a specific region&lt;br /&gt;
&lt;br /&gt;
tell(makeFollowing(false));&lt;br /&gt;
tell(makeFlying(true));&lt;br /&gt;
me-&amp;gt;move(512 * 16, 600 * 16);&lt;br /&gt;
tell(makeSendPosition(true));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- EXAMPLE T: END   --&amp;gt;&lt;/div&gt;</summary>
		<author><name>D1st0rt</name></author>	</entry>

	<entry>
		<id>http://wiki.minegoboom.com/index.php?title=Talk:MERVBot_Tutorial&amp;diff=1242</id>
		<title>Talk:MERVBot Tutorial</title>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=Talk:MERVBot_Tutorial&amp;diff=1242"/>
				<updated>2005-02-15T05:39:19Z</updated>
		
		<summary type="html">&lt;p&gt;D1st0rt: gah im tired, forgot name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;D1s: Anybody wanna format this int a table of contents? I'm lazy&lt;br /&gt;
&lt;br /&gt;
[[User:Smong|Smong]]: That is sick. Maybe split into more pages? Says it is over 160k.&lt;br /&gt;
&lt;br /&gt;
[[User:Pests|Pests]]: There is already pages defined. You could just split them up into that.&lt;br /&gt;
&lt;br /&gt;
OK, I'm working on converting it to real HTML (using &amp;amp;lt;pre&amp;amp;gt;) instead of the &amp;amp;amp;nbsp; crap. --[[User:Cyan~Fire|Cyan~Fire]]&lt;br /&gt;
&lt;br /&gt;
[[User:CypherJF|CypherJF]]: Should we just call this &amp;quot;the bot tutorial&amp;quot; based on the tutorial by Underlord? Then update it accordingly? -- And also, the link to MervBot w/e 37 is now 45; should we just comment that this tutorial was writen for the 37 -- or... comments! lol.&lt;br /&gt;
&lt;br /&gt;
== sscanf ==&lt;br /&gt;
&lt;br /&gt;
Well, I'm using sscanf() for parsing player input. Yes, an advanced function, but maybe it will discourage C++ newbs from making bot plugins. Any comments? --[[User:Cyan~Fire|Cyan~Fire]]&lt;br /&gt;
&lt;br /&gt;
D1st0rt: Cool beans. I learned something new :D&lt;br /&gt;
&lt;br /&gt;
== Event list ==&lt;br /&gt;
&lt;br /&gt;
Removed event list because it was redundant with dllcore.h, less descriptive, and too easy to get out-of-date. Anybody who wants it back, please post here so I can ignore you. :-D --[[User:Cyan~Fire|Cyan~Fire]]&lt;br /&gt;
&lt;br /&gt;
[[User:CypherJF|CypherJF]]: Like people are really going to read through the dllcore.h file.. on a webpage tutorial. hmm i think not. I still say keep it there.&lt;br /&gt;
&lt;br /&gt;
If someone doesn't make the effort to look up events in dllcore.h, they shouldn't be making plugins. I think of this tutorial as more of a &amp;quot;here are the basics and intricacies of making a MERVBot plugin&amp;quot; more than &amp;quot;here is how to follow step-by-step instructions and call it programming&amp;quot;. --[[User:Cyan~Fire|Cyan~Fire]]&lt;br /&gt;
&lt;br /&gt;
D1s: Even ''I'' look up things in dllcore.h, its a very useful resource. As long as it says to look in it, I don't think we'd need the full list here&lt;br /&gt;
&lt;br /&gt;
== Extra Code Samples ==&lt;br /&gt;
[[User:CypherJF|CypherJF]]: I'd like to somehow split these up better; and make them linkable, what do you guy's think?&lt;br /&gt;
&lt;br /&gt;
[[User:CypherJF|CypherJF]]: I made sub-headers, and so they'll be added into the table of contents. Let me know what you guys think of it.&lt;br /&gt;
&lt;br /&gt;
Alrighty, looks good. One thing I would ask is to try to save up a bunch of edits in a text editor or something, than have the myriad edits you do now. Thanks for sharing the burden with me! --[[User:Cyan~Fire|Cyan~Fire]]&lt;/div&gt;</summary>
		<author><name>D1st0rt</name></author>	</entry>

	<entry>
		<id>http://wiki.minegoboom.com/index.php?title=Talk:MERVBot_Tutorial&amp;diff=1241</id>
		<title>Talk:MERVBot Tutorial</title>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=Talk:MERVBot_Tutorial&amp;diff=1241"/>
				<updated>2005-02-15T05:38:16Z</updated>
		
		<summary type="html">&lt;p&gt;D1st0rt: /* Event list */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;D1s: Anybody wanna format this int a table of contents? I'm lazy&lt;br /&gt;
&lt;br /&gt;
[[User:Smong|Smong]]: That is sick. Maybe split into more pages? Says it is over 160k.&lt;br /&gt;
&lt;br /&gt;
[[User:Pests|Pests]]: There is already pages defined. You could just split them up into that.&lt;br /&gt;
&lt;br /&gt;
OK, I'm working on converting it to real HTML (using &amp;amp;lt;pre&amp;amp;gt;) instead of the &amp;amp;amp;nbsp; crap. --[[User:Cyan~Fire|Cyan~Fire]]&lt;br /&gt;
&lt;br /&gt;
[[User:CypherJF|CypherJF]]: Should we just call this &amp;quot;the bot tutorial&amp;quot; based on the tutorial by Underlord? Then update it accordingly? -- And also, the link to MervBot w/e 37 is now 45; should we just comment that this tutorial was writen for the 37 -- or... comments! lol.&lt;br /&gt;
&lt;br /&gt;
== sscanf ==&lt;br /&gt;
&lt;br /&gt;
Well, I'm using sscanf() for parsing player input. Yes, an advanced function, but maybe it will discourage C++ newbs from making bot plugins. Any comments? --[[User:Cyan~Fire|Cyan~Fire]]&lt;br /&gt;
&lt;br /&gt;
D1st0rt: Cool beans. I learned something new :D&lt;br /&gt;
&lt;br /&gt;
== Event list ==&lt;br /&gt;
&lt;br /&gt;
Removed event list because it was redundant with dllcore.h, less descriptive, and too easy to get out-of-date. Anybody who wants it back, please post here so I can ignore you. :-D --[[User:Cyan~Fire|Cyan~Fire]]&lt;br /&gt;
&lt;br /&gt;
[[User:CypherJF|CypherJF]]: Like people are really going to read through the dllcore.h file.. on a webpage tutorial. hmm i think not. I still say keep it there.&lt;br /&gt;
&lt;br /&gt;
If someone doesn't make the effort to look up events in dllcore.h, they shouldn't be making plugins. I think of this tutorial as more of a &amp;quot;here are the basics and intricacies of making a MERVBot plugin&amp;quot; more than &amp;quot;here is how to follow step-by-step instructions and call it programming&amp;quot;. --[[User:Cyan~Fire|Cyan~Fire]]&lt;br /&gt;
&lt;br /&gt;
Even ''I'' look up things in dllcore.h&lt;br /&gt;
&lt;br /&gt;
== Extra Code Samples ==&lt;br /&gt;
[[User:CypherJF|CypherJF]]: I'd like to somehow split these up better; and make them linkable, what do you guy's think?&lt;br /&gt;
&lt;br /&gt;
[[User:CypherJF|CypherJF]]: I made sub-headers, and so they'll be added into the table of contents. Let me know what you guys think of it.&lt;br /&gt;
&lt;br /&gt;
Alrighty, looks good. One thing I would ask is to try to save up a bunch of edits in a text editor or something, than have the myriad edits you do now. Thanks for sharing the burden with me! --[[User:Cyan~Fire|Cyan~Fire]]&lt;/div&gt;</summary>
		<author><name>D1st0rt</name></author>	</entry>

	<entry>
		<id>http://wiki.minegoboom.com/index.php?title=MERVBot_Tutorial&amp;diff=1212</id>
		<title>MERVBot Tutorial</title>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=MERVBot_Tutorial&amp;diff=1212"/>
				<updated>2005-02-14T01:50:52Z</updated>
		
		<summary type="html">&lt;p&gt;D1st0rt: countdowns with #define&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is the ever-popular MERVBot Tutorial by Underlord:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;merv_toc&amp;quot; style=&amp;quot;font-size: 12px; margin: 2em;&amp;quot;&amp;gt;&lt;br /&gt;
Setup a MERVBot bot and project in visual c++&amp;lt;br /&amp;gt;&lt;br /&gt;
0) &amp;lt;a href=&amp;quot;#0&amp;quot;&amp;gt;Setting up a MERVBot bot&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Command.cpp&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;1) &amp;lt;a href=&amp;quot;#1&amp;quot;&amp;gt;Player commands&amp;lt;/a&amp;gt; (!play, !squadA vs squadB)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Spawn.cpp&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;2) &amp;lt;a href=&amp;quot;#2&amp;quot;&amp;gt;Event descriptions&amp;lt;/a&amp;gt; (describe events in spawn.cpp)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;2) &amp;lt;a href=&amp;quot;#2&amp;quot;&amp;gt;Messaging &amp;lt;/a&amp;gt;(&amp;amp;quot;*arena hi&amp;amp;quot;, &amp;amp;quot;:player:*scorereset)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;3) &amp;lt;a href=&amp;quot;#3&amp;quot;&amp;gt;MervBot Timer&amp;lt;/a&amp;gt; (do this in 10 seconds)(countdown[n])&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;4) &amp;lt;a href=&amp;quot;#4&amp;quot;&amp;gt;Writing Functions&amp;lt;/a&amp;gt; (bool IsInCenter(Player *p))&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Useful operations&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;6) &amp;lt;a href=&amp;quot;#6&amp;quot;&amp;gt;Cycling players&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;7) &amp;lt;a href=&amp;quot;#7&amp;quot;&amp;gt;Check if pilot is in safe zone&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;8) &amp;lt;a href=&amp;quot;#8&amp;quot;&amp;gt;Random numbers&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;9) &amp;lt;a href=&amp;quot;#9&amp;quot;&amp;gt;Time without using countdown[n]&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
10) &amp;lt;a href=&amp;quot;#10&amp;quot;&amp;gt;Storing data for pilots&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
11) &amp;lt;a href=&amp;quot;#11&amp;quot;&amp;gt;Output data in messages&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
12) &amp;lt;a href=&amp;quot;#12&amp;quot;&amp;gt;Input/Output to files&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
13) &amp;lt;a href=&amp;quot;#13&amp;quot;&amp;gt;Programming commands&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
14) &amp;lt;a href=&amp;quot;#14&amp;quot;&amp;gt;Useful player data&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
15) &amp;lt;a href=&amp;quot;#15&amp;quot;&amp;gt;Bot built in functions&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Example Code&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 2em&amp;quot;&amp;gt;&lt;br /&gt;
a) &amp;lt;a href=&amp;quot;#15a&amp;quot;&amp;gt;No antiwarp in center of map&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
b) &amp;lt;a href=&amp;quot;#15b&amp;quot;&amp;gt;Setting freq size depending on how many pilots in game&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
c) &amp;lt;a href=&amp;quot;#15c&amp;quot;&amp;gt;Tracking kills and announcing when pilot gets 10 kills in a row without dying &amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
d) &amp;lt;a href=&amp;quot;#15d&amp;quot;&amp;gt;Warp pilot to coord when they are in a certain region&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
e) &amp;lt;a href=&amp;quot;#15e&amp;quot;&amp;gt;Structures within structures&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
f) &amp;lt;a href=&amp;quot;#15f&amp;quot;&amp;gt;Tracking flag data&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
g) &amp;lt;a href=&amp;quot;#15g&amp;quot;&amp;gt;Way to do simple /!spam feature&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
h) &amp;lt;a href=&amp;quot;#15h&amp;quot;&amp;gt;Implementing a simple stack to do &amp;amp;quot;next in line for several 'boxes' at once&amp;amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
i) &amp;lt;a href=&amp;quot;#15i&amp;quot;&amp;gt;Reading any text from a .txt and printing it to pilot line by line&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
j) &amp;lt;a href=&amp;quot;#15j&amp;quot;&amp;gt;Example of printing player stats grid&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
k) &amp;lt;a href=&amp;quot;#15k&amp;quot;&amp;gt;Example of checking if any pilots are within a region&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
l) &amp;lt;a href=&amp;quot;#15l&amp;quot;&amp;gt;Example of functions to get a pilot's struct id info from a name or *player info&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
m) &amp;lt;a href=&amp;quot;#15m&amp;quot;&amp;gt;Example of creating a logfile name using date and squad names&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
n) &amp;lt;a href=&amp;quot;#15n&amp;quot;&amp;gt;Sending messages to playing freqs or public and logging depending on status&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
o) &amp;lt;a href=&amp;quot;#15o&amp;quot;&amp;gt;Example of reading in all player/freqs to struct data&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
p) &amp;lt;a href=&amp;quot;#15p&amp;quot;&amp;gt;Example of finding MVP from struct data&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
q) &amp;lt;a href=&amp;quot;#15q&amp;quot;&amp;gt;Print time stamp of event&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
r) &amp;lt;a href=&amp;quot;#15r&amp;quot;&amp;gt;Simple way to track player bomb/bullet damage stats&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
s) &amp;lt;a href=&amp;quot;#15s&amp;quot;&amp;gt;Simple way to print those stats&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
t) &amp;lt;a href=&amp;quot;#15t&amp;quot;&amp;gt;Make bot spectate specific coordinates&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting up a MERVBot (plugin)==&lt;br /&gt;
&lt;br /&gt;
MERVBot download site: &amp;amp;nbsp;http://catid.sscentral.com/&lt;br /&gt;
&lt;br /&gt;
MERVBot Forum: &amp;amp;nbsp;http://www.ssforum.net/ &amp;amp;nbsp;(Development - MervBot forum)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Download [http://catid.sscentral.com/files/MERVBot.zip MERVBot Build 37 (DLL 6.5)]===&lt;br /&gt;
&lt;br /&gt;
Unzip MERVBot.zip into a new folder. (example c:\program files\continuum\mervbot)&amp;lt;br /&amp;gt;&lt;br /&gt;
Unzip src.zip into &amp;amp;quot;src&amp;amp;quot; subfolder of that new folder (example c:\program files\continuum\mervbot\src)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Download [http://catid.sscentral.com/files/Tutorial.zip DLL-plugin Tutorial]===&lt;br /&gt;
&lt;br /&gt;
''Note:'' if you only want to execute someone's premade plugin (.dll), skip to [[MERVBot Tutorial#Run your bot dll|step 4]], otherwise continue to learn how to make your own bot&lt;br /&gt;
&lt;br /&gt;
Unzip Tutorial.zip (containing spawn.h, spawn.cpp, and command.cpp) into &amp;amp;quot;/tutorial&amp;amp;quot; subfolder of that new folder. (example c:\program files\continuum\mervbot\src\tutorial).&lt;br /&gt;
&lt;br /&gt;
''File descriptions:''&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;spawn.h = declare/initialize globals&lt;br /&gt;
&amp;lt;li&amp;gt;command.cpp = code for commands coming into bot (ie /!help, /!play, etc)&lt;br /&gt;
&amp;lt;li&amp;gt;spawn.cpp = code for main part of bot&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Microsoft Visual c++===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Start Visual Studios 6.0.&lt;br /&gt;
&amp;lt;li&amp;gt;Click the Drop Down Menu labeled &amp;amp;quot;File&amp;amp;quot; at the top left of your screen.&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;amp;quot;New&amp;amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt;On the next screen that comes up, choose from the Project tab, then Win32 Dynamic-Link Library&lt;br /&gt;
&amp;lt;li&amp;gt;Select the &amp;amp;quot;/src&amp;amp;quot; folder as the base folder (example c:\program files\continuum\mervbot\src)&lt;br /&gt;
&amp;lt;li&amp;gt;Name your project &amp;amp;quot;mybot&amp;amp;quot;. This will make a &amp;amp;quot;mybot&amp;amp;quot; subfolder in your &amp;amp;quot;src&amp;amp;quot; folder. Click OK. (example creates c:\program files\continuum\mervbot\src\mybot)&lt;br /&gt;
&amp;lt;li&amp;gt;Choose to create an &amp;amp;quot;Empty DLL project&amp;amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;amp;quot;Finish&amp;amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt;Click the Drop Down Menu labbled &amp;amp;quot;Project&amp;amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;amp;quot;Add To Project Files&amp;amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy only spawn.h, spawn.cpp, and command.cpp from the &amp;amp;quot;tutorial&amp;amp;quot; folder into the this new folder. (example from c:\program files\continuum\mervbot\src\tutorial to c:\program files\continuum\mervbot\src\mybot)&lt;br /&gt;
&amp;lt;li&amp;gt;Click the Drop Down Menu labelled &amp;amp;quot;Build&amp;amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;amp;quot;Build (dll name)&amp;amp;quot; - where (dll name) is &amp;amp;quot;mybot&amp;amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;Go into your &amp;amp;quot;mybot&amp;amp;quot; folder and look for a folder named &amp;amp;quot;Debug&amp;amp;quot;&lt;br /&gt;
(example c:\program files\continuum\mervbot\src\mybot\debug)&lt;br /&gt;
&amp;lt;li&amp;gt;Your new DLL will be in that folder. (example mybot.dll)&lt;br /&gt;
&amp;lt;li&amp;gt;Copy mybot.dll to your base folder that has mervbot.exe in it (example c:\program files\continuum\mervbot)&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Run your bot dll===&lt;br /&gt;
&lt;br /&gt;
To run your bot you need your DLL (mybot.dll), Commands.txt, MERVBot.exe, MERVBot.ini, Operators.txt, Spawns.txt, subspace.bin, and zlib.dll all in one folder (example c:\program files\continuum\mervbot).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit spawns.txt (only one line of text in file needed)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
bot_name : pw_for_bot_name : arena: dll_plugin : optional_staff_password&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Example:''&lt;br /&gt;
&amp;lt;pre&amp;gt;2v2-Bot-League : botpw : 2v2a : 2v2league : staffpw&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should create your bot name and pw using your Continuum client as you would create any new name.&lt;br /&gt;
&amp;lt;li&amp;gt;There is no * in front of staffpw.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Edit MERVBot.ini&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[Login]&lt;br /&gt;
Zone=216.33.98.254:21000	// make that your zone IP:PORT available from zone.dat in Continuum dir&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Edit operators.txt&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
access_level : name :&amp;lt;br /&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
''Example:''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
4:my_name:&lt;br /&gt;
4:another_sysop:&lt;br /&gt;
3:other_person:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Run MERVBot.exe&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Double click MERVBot.exe, the bot should now enter the zone. ''Note:'' Bot needs to be on vip.txt or have moderator+ access to enter a zone.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Modify your MERVBot code&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
You can open your MERVBot project by opening &amp;amp;quot;mybot.dsw&amp;amp;quot; file with visual c++. &lt;br /&gt;
(example c:\program files\continuum\mervbot\src\mybot\mybot.dsw)&lt;br /&gt;
&lt;br /&gt;
Edit the spawn.h, spawn.cpp, and command.cpp to create your plugin, then build, copy your updated DLL to your MERVBot.exe folder and then execute the bot.&lt;br /&gt;
&lt;br /&gt;
Use the tutorial to get ideas on how to implement certain types of features into the bot.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Player Commands - (command.cpp)==&lt;br /&gt;
&lt;br /&gt;
This section describes how to implement player commands into your plugin. Commands are sent to the botInfo::gotCommand function in command.cpp.&lt;br /&gt;
&lt;br /&gt;
Example (makes bot reply to !test with &amp;quot;hi&amp;quot;):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void botInfo::gotCommand(Player *p, Command *c) {&lt;br /&gt;
	switch (p-&amp;gt;access)&lt;br /&gt;
	{&lt;br /&gt;
	case OP_Player: //appropriate staff rank here. (If you want it to be a moderator command, put it under OP_Moderator.)&lt;br /&gt;
		{&lt;br /&gt;
			if (c-&amp;gt;check(&amp;quot;test&amp;quot;)) //replace &amp;quot;test&amp;quot; with whatever command you want&lt;br /&gt;
			{&lt;br /&gt;
				//put your command code here&lt;br /&gt;
				sendPrivate(p,&amp;quot;hi&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===How to have commands with numerical parameters===&lt;br /&gt;
Example (!test #):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	if (c-&amp;gt;check(&amp;quot;test&amp;quot;)) { // reads in test #, default to 1 if invalid number input&lt;br /&gt;
		int temp = 1;&lt;br /&gt;
&lt;br /&gt;
		if (isNumeric(c-&amp;gt;final))&lt;br /&gt;
			temp = atoi(c-&amp;gt;final);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===How to have player name as input===&lt;br /&gt;
Example (!rank player):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	if (c-&amp;gt;check(&amp;quot;rank&amp;quot;))&lt;br /&gt;
	{&lt;br /&gt;
		String player_name = c-&amp;gt;final;&lt;br /&gt;
&lt;br /&gt;
		if (player_name.IsEmpty()) // default name to self if invalid name&lt;br /&gt;
			player_name = p-&amp;gt;name;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===How to have multi-parameter input===&lt;br /&gt;
&lt;br /&gt;
Use the CRT function sscanf() to scan the string for the values.&lt;br /&gt;
&lt;br /&gt;
Example (!squads squadA vs squadB ''or'' !squads teamA:squadA:teamB:squadB):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
else if (c-&amp;gt;check(&amp;quot;squads&amp;quot;))&lt;br /&gt;
{&lt;br /&gt;
	char squadA[20], squadB[20];&lt;br /&gt;
	int teamA, teamB;&lt;br /&gt;
&lt;br /&gt;
	strncpy(squadA, &amp;quot;&amp;quot;, 20);&lt;br /&gt;
	strncpy(squadB, &amp;quot;&amp;quot;, 20);&lt;br /&gt;
&lt;br /&gt;
	int n_found;&lt;br /&gt;
&lt;br /&gt;
	//Note: %[A-Za-z ] is equivalent to %s, but allows an internal space.&lt;br /&gt;
&lt;br /&gt;
	//scan the string for the two squads separated by &amp;quot; vs &amp;quot;&lt;br /&gt;
	n_found = sscanf(c-&amp;gt;final, &amp;quot;%[A-Za-z ] vs %[A-Za-z ]&amp;quot;, squadA, squadB);&lt;br /&gt;
&lt;br /&gt;
	//if that fails, scan the string for freqA:squadA:freqB:squadB&lt;br /&gt;
	if (n_found &amp;lt; 2)&lt;br /&gt;
		sscanf(c-&amp;gt;final, &amp;quot;%d:%[A-Za-z ]:%d:%[A-Za-z ]&amp;quot;, &amp;amp;teamA, squadA, &amp;amp;teamB, squadB);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Help Menu===&lt;br /&gt;
When a player sends !help to the bot, MERVBot calls botInfo::gotHelp() in each plugin loaded.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void botInfo::gotHelp(Player *p, Command *c)&lt;br /&gt;
{&lt;br /&gt;
	if (!*c-&amp;gt;final)&lt;br /&gt;
	{&lt;br /&gt;
	sendPrivate(p, &amp;quot;4v4 Bot General Commands:&amp;quot;);&lt;br /&gt;
	sendPrivate(p, &amp;quot;------------------------&amp;quot;);&lt;br /&gt;
	sendPrivate(p, &amp;quot;!caps - get captain names&amp;quot;);&lt;br /&gt;
	sendPrivate(p, &amp;quot;!roster &amp;lt;squad&amp;gt; - get roster of a squad&amp;quot;);&lt;br /&gt;
	sendPrivate(p, &amp;quot;!schedule- get current schedule&amp;quot;);&lt;br /&gt;
	sendPrivate(p, &amp;quot;!score - get current score&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Event Calls==&lt;br /&gt;
&lt;br /&gt;
MERVBot is event based, so when making a bot you need to decide what will happen at certain events. Normal plugins need to consider what happens when bot enters arena, player enters arena, player leaves arena, player events like kill, shipchange, teamchange, spec, move then any other relevant events to your bot. Just worry about events that are relevant to the tasks your bot is doing.&lt;br /&gt;
&lt;br /&gt;
MERVBot sends events to botInfo::gotEvent() in spawn.cpp. Each supported event is already present and categorized in gotEvent(), along with the paramters that MERVBot sends with the event. &lt;br /&gt;
&lt;br /&gt;
See dllcore.h for a list of current events and their descriptions.&lt;br /&gt;
&lt;br /&gt;
==Messaging - How to use the messaging system==&lt;br /&gt;
&lt;br /&gt;
Private message - void sendPrivate(Player *player, char *msg);&lt;br /&gt;
&lt;br /&gt;
''Examples:''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendPrivate(p,&amp;quot;hi&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
String s=&amp;quot;test&amp;quot;;&lt;br /&gt;
sendPrivate(p,s);&lt;br /&gt;
&lt;br /&gt;
String s=&amp;quot;test&amp;quot;;&lt;br /&gt;
s += &amp;quot;ing&amp;quot;;&lt;br /&gt;
sendPrivate(p,s);&lt;br /&gt;
&lt;br /&gt;
char captain1[20];&lt;br /&gt;
char captain2[20];&lt;br /&gt;
strncpy(captain1,&amp;quot;&amp;quot;,20);&lt;br /&gt;
strncpy(captain2,&amp;quot;&amp;quot;,20);&lt;br /&gt;
sendPrivate(p,(String) captain1 + &amp;quot; and &amp;quot; + (String) captain2 + &amp;quot; are the captains.&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Team message - void sendTeamPrivate(Uint16 team, char *msg);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Examples: &amp;lt;br /&amp;gt;&lt;br /&gt;
a) sendTeamPrivate(8025,&amp;amp;quot;hi spec freq&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
b) Uint16 test=0; sendTeamPrivate(test,&amp;amp;quot;hi freq 0&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Public message - void sendPublic(char *msg);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Example: sendPublic(&amp;amp;quot;*arena &amp;amp;quot; + (String) p-&amp;amp;gt;name + &amp;amp;quot; is now a captain&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
Chat channel message - void sendChannel(char *msg);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Example: sendChannel(&amp;amp;quot;hi chat channel&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
Remote private message - void sendRemotePrivate(char *name, char *msg);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Example: sendRemotePrivate(&amp;amp;quot;Player01&amp;amp;quot;, &amp;amp;quot;hi&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: to have bot print several lines of text fast it needs sysop in the&lt;br /&gt;
arena (sysop in arena bot first spawns to also) otherwise it'll print slow to avoid being&lt;br /&gt;
kicked for spam&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Timer - How to use the timing function==&lt;br /&gt;
&lt;br /&gt;
Each time MERVBot sends an EVENT_Tick to a plugin (once a second), the default handler code decrements each value in an array of countdowns. You can modify the number of countdowns and add code to occur at a specific value for one of the countdowns.&lt;br /&gt;
&lt;br /&gt;
Setup number of timers and initialize in spawn.h:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class botInfo&lt;br /&gt;
{&lt;br /&gt;
	#define COUNTDOWNS 10 		// how many countdowns you want&lt;br /&gt;
	int countdown[COUNTDOWNS];	// this gives you 10 timers&lt;br /&gt;
&lt;br /&gt;
// unrelated code&lt;br /&gt;
 &lt;br /&gt;
	public:&lt;br /&gt;
	botInfo(CALL_HANDLE given)&lt;br /&gt;
	{&lt;br /&gt;
	countdown[0] = 0;&lt;br /&gt;
	countdown[1] = 60; // 60 seconds&lt;br /&gt;
	//&lt;br /&gt;
	// initialize values&lt;br /&gt;
	//&lt;br /&gt;
	countdown[9] = 5*60; // 5 minutes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Using timer functions in spawn.cpp:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
case EVENT_Tick:&lt;br /&gt;
{&lt;br /&gt;
	for (int i = 0; i &amp;lt; COUNTDOWNS; ++i) //cycles through each countdown you have&lt;br /&gt;
		--countdown[i]; //note that countdowns will continue decrementing past 0.&lt;br /&gt;
&lt;br /&gt;
	if (countdown[1] == 2) // when timer #1 hits two seconds&lt;br /&gt;
	{&lt;br /&gt;
	// do stuff here when timer #1 hits 2 seconds&lt;br /&gt;
	// example: sendPublic(&amp;quot;two seconds left, setting timer to 1 minute&amp;quot;);&lt;br /&gt;
	// example: countdown[1] = 60; // change timer #1 value&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can then have events (such as EVENT_PlayerDeath) change the value of a countdown to make the bot do something a set time after an event occurs.&lt;br /&gt;
&lt;br /&gt;
==Writing Functions==&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Write your function in spawn.cpp at top of file in the //////// DLL &amp;amp;quot;import&amp;amp;quot; //////// section&lt;br /&gt;
                                                     &amp;lt;blockquote&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;//////// DLL &amp;amp;quot;import&amp;amp;quot; ////////&amp;lt;br /&amp;gt;&lt;br /&gt;
          &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;bool closeto(Player *p, int x, int y, int tolerance)&amp;amp;nbsp; // note uses abs() function declared elsewhere&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // return if player&lt;br /&gt;
p is in area of square with center x,y and radius = tolerance&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;return (abs((p-&amp;amp;gt;tile.x) - x) &amp;amp;lt;&lt;br /&gt;
tolerance) &amp;amp;amp;&amp;amp;amp; (abs((p-&amp;amp;gt;tile.y) - y) &amp;amp;lt; tolerance);&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                                                        &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;                                                         If&lt;br /&gt;
you want your function to have access to data from the spawn.h botInfo section&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                        &amp;lt;blockquote&amp;gt;public:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;botInfo(CALL_HANDLE given)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                          &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; // then you need to make your spawn.cpp function in the format:&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                          &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;bool botInfo::closeto(Player *p, int x, int y, int tolerance)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; // function here&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;br /&amp;gt;&lt;br /&gt;
          &amp;lt;br /&amp;gt;&lt;br /&gt;
Include function in spawn.h at bottom of file with the other functions&amp;lt;br /&amp;gt;&lt;br /&gt;
          &amp;lt;blockquote&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;public:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;botInfo(CALL_HANDLE given)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;br /&amp;gt;&lt;br /&gt;
            &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;bool closeto(Player *p, int x, int y, int tolerance); &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;// your new function. note: w/o botInfo keyword and with a ;&amp;lt;br /&amp;gt;&lt;br /&gt;
            &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;void clear_objects();&amp;amp;nbsp; // functions already there&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;void object_target(Player *p); // functions already there&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;blockquote&amp;gt;Pass values by reference&lt;br /&gt;
              &amp;lt;blockquote&amp;gt;bool botInfo::closeto(Player *p, int&amp;amp;amp; x, int y, int tolerance) &amp;amp;nbsp;// note the &amp;amp;amp;&amp;lt;br /&amp;gt;&lt;br /&gt;
                &amp;lt;br /&amp;gt;&lt;br /&gt;
bool is_close = closeto(p,x,y,tolerance); &amp;amp;nbsp;// if x is changed in closeto() its saved here &amp;lt;br /&amp;gt;&lt;br /&gt;
                &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;blockquote&amp;gt;Pass array as parameter&amp;lt;br /&amp;gt;&lt;br /&gt;
                  &amp;lt;blockquote&amp;gt;int freqs[5];&amp;lt;br /&amp;gt;&lt;br /&gt;
                    &amp;lt;br /&amp;gt;&lt;br /&gt;
my_function(freqs); &amp;amp;nbsp;// call function - notice freqs and not freqs[5] or freqs[]&amp;lt;br /&amp;gt;&lt;br /&gt;
                    &amp;lt;br /&amp;gt;&lt;br /&gt;
void my_function(int freqs[]) {} &amp;amp;nbsp;// function - notice freqs[] and not freqs[5] or freqs&amp;lt;br /&amp;gt;&lt;br /&gt;
                    &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;a name=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
==Cycling players- How to search through the players in the arena==&lt;br /&gt;
                                                          &amp;lt;blockquote&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;_listnode &amp;amp;lt;Player&amp;amp;gt; *parse = playerlist-&amp;amp;gt;head;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;while (parse)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;Player *p = parse-&amp;amp;gt;item;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// do functionality here&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// Example 1: sendPrivate(p,&amp;amp;quot;*watchdamage&amp;amp;quot;); // turns on all pilot's watchdamage&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// Example 2: if (p-&amp;amp;gt;safety != 0)&lt;br /&gt;
sendPrivate(p,&amp;amp;quot;*spec&amp;amp;quot;); // spec all pilots in safe zone&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;parse = parse-&amp;amp;gt;next&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                            &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Checking if pilot is in a safe zone==&lt;br /&gt;
                                                            &amp;lt;blockquote&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;if (p-&amp;amp;gt;safety != 0)&amp;amp;nbsp; // pilot is in a safe zone&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;if (p-&amp;amp;gt;safety == 0)&amp;amp;nbsp; // pilot is NOT in a safe zone&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;To detect a pilot entering a safe zone do:&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;case EVENT_PlayerMove:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;if (p-&amp;amp;gt;safety != 0)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                              &amp;lt;/blockquote&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Random number==&lt;br /&gt;
                                                              &amp;lt;blockquote&amp;gt;Method 1 (completely random)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                &amp;lt;blockquote&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;#include &amp;amp;quot;time.h&amp;amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;srand(time(NULL));&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;rand();&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;int temp = (int) (51 * ((float)rand()/RAND_MAX));&amp;amp;nbsp; // returns a random integer between 0 and 51&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                  &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
                                                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
Method 2 (random pilot in arena)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                  &amp;lt;blockquote&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;#include &amp;amp;lt;stdlib.h&amp;amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;int temp = GetTickCount() % getIngame();&amp;amp;nbsp; // getIngame() = how many pilots in arena&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;_listnode &amp;amp;lt;Player&amp;amp;gt; *parse = playerlist-&amp;amp;gt;head;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;while (parse)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;Player *p = parse-&amp;amp;gt;item;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;if (p-&amp;amp;gt;ship != SHIP_Spectator){&amp;amp;nbsp; // if not in spec&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;if (!(--temp) {&amp;amp;nbsp; // decrement temp, if its 0, make this pilot rabbit&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;rabbit = p;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;break;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;parse = parse-&amp;amp;gt;next;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                    &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
                                                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                    &amp;lt;a name=&amp;quot;9&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
==Tracking time not using countdown[n]==&lt;br /&gt;
                                                                    &amp;lt;blockquote&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;#include &amp;amp;lt;stdlib.h&amp;amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;int temp = GetTickCount(); // get time stamp&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// later in program&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;temp = (GetTickCount() - temp)/1000; // how many seconds have passed&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
                                                                     &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Storing data for pilots==&lt;br /&gt;
&amp;lt;blockquote&amp;gt;There are several ways to store data for pilots (ie tracking flagtime or kills in a period of time)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
1) get/setTag - use if you only want to track data until pilot leaves arena then its erased&amp;lt;br /&amp;gt;&lt;br /&gt;
built in tags track by an ID that is reset when pilot leaves/enters arena, so loses track of data once they leave arena&amp;lt;br /&amp;gt;&lt;br /&gt;
                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
2) modified perm get/setTag - use if you want to track all pilots even if they leave (advantage - easier to sort by player)&amp;lt;br /&amp;gt;&lt;br /&gt;
also can track near unlimited amount of pilots&amp;lt;br /&amp;gt;&lt;br /&gt;
                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
3) structs - use to track all pilots even if they leave, (advantage -&lt;br /&gt;
easier to sort by freqs), have to specify bound of players&amp;lt;br /&amp;gt;&lt;br /&gt;
                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
note: 2 and 3 are similar in effect, mostly the difference is in how you are able to search through data&amp;lt;br /&amp;gt;&lt;br /&gt;
you need to decide which method of storing data is best for each bot depending on what it does&amp;lt;br /&amp;gt;&lt;br /&gt;
beware using modified perm get/setTag if bot is in an arena for long periods&lt;br /&gt;
of time, data is not reset so the linkedlist could get huge&amp;lt;br /&amp;gt;&lt;br /&gt;
                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// initialize values in spawn.h at very top&amp;lt;br /&amp;gt;&lt;br /&gt;
                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
1) Built in get/setTag method&amp;lt;/blockquote&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;blockquote&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;#define DMG_DEALT&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;0&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;#define DMG_TAKEN&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;1&amp;lt;br /&amp;gt;&lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// in spawn.cpp initialize the values on arena-enter and player-enter&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;case EVENT_ArenaEnter: {&amp;lt;br /&amp;gt;&lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;_listnode &amp;amp;lt;Player&amp;amp;gt; *parse = playerlist-&amp;amp;gt;head;&amp;lt;br /&amp;gt;&lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;while (parse) // do for all pilots in arena when bot enters&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;Player *p = parse-&amp;amp;gt;item;&amp;amp;nbsp; // get pilot&amp;lt;br /&amp;gt;&lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;set_tag(p, DMG_DEALT, 0); // initialize to 0&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;set_tag(p, DMG_TAKEN, 0);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;sendPrivate(p,&amp;amp;quot;*watchdamage&amp;amp;quot;);&amp;amp;nbsp;&lt;br /&gt;
// optionally turn on player *watchdamage&amp;lt;br /&amp;gt;&lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;parse = parse-&amp;amp;gt;next;&amp;amp;nbsp; // get next pilot&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;br /&amp;gt;&lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;case EVENT_PlayerEntering: {&amp;lt;br /&amp;gt;&lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;set_tag(p, DMG_DEALT, 0); // initialize to 0&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;set_tag(p, DMG_TAKEN, 0);&amp;lt;br /&amp;gt;&lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;sendPrivate(p,&amp;amp;quot;*watchdamage&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// then somewhere edit the tag values&amp;lt;br /&amp;gt;&lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;case EVENT_WatchDamage:&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// sets tag for k (shooter) to be old value plus damage dealt currently&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;set_tag(k, DMG_BOMB_DEALT, get_tag(k, DMG_BOMB_DEALT) + damage);&amp;lt;br /&amp;gt;&lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;// how to retrieve the tag values&amp;lt;br /&amp;gt;&lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;// as a command in spawn.h&amp;lt;br /&amp;gt;&lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;else if (c-&amp;amp;gt;check(&amp;amp;quot;showstats&amp;amp;quot;)) {&amp;lt;br /&amp;gt;&lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;int temp = get_tag(p, DMG_TOTAL_DEALT);&amp;lt;br /&amp;gt;&lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;String s = &amp;amp;quot;You've done &amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;s += temp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;s += &amp;amp;quot; damage so far!&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;sendPrivate(p,s);&amp;lt;br /&amp;gt;&lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// kill tags when player leaves arena&amp;lt;br /&amp;gt;&lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;case EVENT_PlayerLeaving: {&amp;lt;br /&amp;gt;&lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;killTags(p);&amp;lt;br /&amp;gt;&lt;br /&gt;
      &amp;lt;/blockquote&amp;gt;2) Modified permanent get/setTag method&amp;lt;br /&amp;gt;&lt;br /&gt;
      &amp;lt;blockquote&amp;gt;// same as get/setTag with some modifications to the tag code, then can use tags exactly as above&amp;lt;br /&amp;gt;&lt;br /&gt;
                                        &amp;lt;br /&amp;gt;&lt;br /&gt;
// spawn.h, add char name[20]; into struct PlayerTag&amp;lt;br /&amp;gt;&lt;br /&gt;
                                        &amp;lt;blockquote&amp;gt;struct PlayerTag&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Player *p;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; char name[20];&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int index;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int data;&amp;lt;br /&amp;gt;&lt;br /&gt;
};&amp;lt;br /&amp;gt;&lt;br /&gt;
                                          &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
// spawn.cpp, modifications&amp;lt;br /&amp;gt;&lt;br /&gt;
                                          &amp;lt;blockquote&amp;gt;case EVENT_PlayerLeaving:&amp;lt;br /&amp;gt;&lt;br /&gt;
	{&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Player *p = (Player*)event.p[0];&amp;lt;br /&amp;gt;&lt;br /&gt;
                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // killTags(p); &amp;amp;nbsp;// remove so tag not deleted on arena exit&amp;lt;br /&amp;gt;&lt;br /&gt;
                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
                                            &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;blockquote&amp;gt;int botInfo::get_tag(Player *p, int index)&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; _listnode &amp;amp;lt;PlayerTag&amp;amp;gt; *parse = taglist.head;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; PlayerTag *tag;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; while (parse)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	tag = parse-&amp;amp;gt;item;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
	// if (tag-&amp;amp;gt;p == p)&amp;lt;br /&amp;gt;&lt;br /&gt;
	if (strcmp(tag-&amp;amp;gt;name,p-&amp;amp;gt;name)==0) &amp;amp;nbsp;// now tracking by player name, not ID&amp;lt;br /&amp;gt;&lt;br /&gt;
	if (tag-&amp;amp;gt;index == index)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return tag-&amp;amp;gt;data;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
	parse = parse-&amp;amp;gt;next;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return 0;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
void botInfo::set_tag(Player *p, int index, int data)&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; _listnode &amp;amp;lt;PlayerTag&amp;amp;gt; *parse = taglist.head;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; PlayerTag *tag;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; while (parse)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	tag = parse-&amp;amp;gt;item;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
	//if (tag-&amp;amp;gt;p == p)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; if (strcmp(tag-&amp;amp;gt;name,p-&amp;amp;gt;name)==0) // now tracking by player name, not ID&amp;lt;br /&amp;gt;&lt;br /&gt;
	if (tag-&amp;amp;gt;index == index)&amp;lt;br /&amp;gt;&lt;br /&gt;
	{&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; tag-&amp;amp;gt;data = data;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return;&amp;lt;br /&amp;gt;&lt;br /&gt;
	}&amp;lt;br /&amp;gt;&lt;br /&gt;
	parse = parse-&amp;amp;gt;next;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; tag = new PlayerTag;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // tag-&amp;amp;gt;p = p; // not tracking by ID anymore&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strncpy(tag-&amp;amp;gt;name, p-&amp;amp;gt;name, 20); // tracking by player name&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; tag-&amp;amp;gt;index = index;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; tag-&amp;amp;gt;data = data;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; taglist.append(tag);&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
3) Using Struct's&amp;lt;br /&amp;gt;&lt;br /&gt;
      &amp;lt;blockquote&amp;gt;struct name&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
        &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// variables&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;};&amp;lt;br /&amp;gt;&lt;br /&gt;
        &amp;lt;br /&amp;gt;&lt;br /&gt;
// Example: (in spawn.h)&amp;lt;br /&amp;gt;&lt;br /&gt;
        &amp;lt;blockquote&amp;gt;class botInfo&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
          &amp;lt;br /&amp;gt;&lt;br /&gt;
struct freqdata {&amp;lt;br /&amp;gt;&lt;br /&gt;
int kills;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;int deaths; &amp;lt;br /&amp;gt;&lt;br /&gt;
};&amp;lt;br /&amp;gt;&lt;br /&gt;
          &amp;lt;br /&amp;gt;&lt;br /&gt;
freqdata freqs[100]; // 100 of those structs&amp;lt;br /&amp;gt;&lt;br /&gt;
          &amp;lt;br /&amp;gt;&lt;br /&gt;
// then access it in spawn.cpp using&amp;lt;br /&amp;gt;&lt;br /&gt;
freqs[56].kills = 1;&amp;lt;br /&amp;gt;&lt;br /&gt;
          &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
          &amp;lt;br /&amp;gt;&lt;br /&gt;
          &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Output of data/messages==&lt;br /&gt;
          &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;using normal Strings&amp;lt;br /&amp;gt;&lt;br /&gt;
          &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// does *arena X pilots left in the game.&amp;lt;br /&amp;gt;&lt;br /&gt;
          &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; String s = &amp;amp;quot;*arena &amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; s += temp;&amp;amp;nbsp; // some variable (int)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; s += &amp;amp;quot; pilots left in the game.&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; sendPublic(s)&amp;lt;br /&amp;gt;               &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                      &amp;lt;blockquote&amp;gt;OR&amp;lt;br /&amp;gt; &lt;br /&gt;
                                                                        &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;blockquote&amp;gt;sendPublic(&amp;amp;quot;*arena &amp;amp;quot; + (String) temp + &amp;amp;quot; pilots left in the game.&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
 &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;example using sprintf to align/space data&amp;lt;br /&amp;gt;&lt;br /&gt;
          &amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// output data&lt;br /&gt;
will be in this approximate format (not lined up perfectly because of html)&amp;lt;br /&amp;gt;&lt;br /&gt;
          &amp;lt;br /&amp;gt;&lt;br /&gt;
             &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;//&lt;br /&gt;
----------------------------------------------------------------------------------------&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// Squad: squadname&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
PTS&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; FPTS&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;K&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;D&amp;amp;nbsp; DMG DEALT&lt;br /&gt;
TAKEN&amp;amp;nbsp; &amp;amp;nbsp;F&amp;amp;nbsp; FK&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; FLT&amp;lt;br /&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// ----------------------------------------------------------------------------------------&amp;lt;br /&amp;gt;&lt;br /&gt;
             &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;//&lt;br /&gt;
PlayerA&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;     &lt;br /&gt;
 &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;10000 &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;500 &lt;br /&gt;
  116  101&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &lt;br /&gt;
   9999&amp;amp;nbsp;  &amp;amp;nbsp; 99999 10 150 980:55&amp;lt;br /&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;// PlayerB&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; 500&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
200&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; 7&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; 5&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; 9999&amp;amp;nbsp; &amp;amp;nbsp; 99999&amp;amp;nbsp; 5&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp;3&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; 0:04&amp;lt;br /&amp;gt;&lt;br /&gt;
          &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;char str[255];&amp;lt;br /&amp;gt;&lt;br /&gt;
               &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;sendPublic(&amp;amp;quot;*arena----------------------------------------------------------------------------------&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;sprintf(str, &amp;amp;quot;*arena&lt;br /&gt;
Squad: %-20s&amp;amp;nbsp;&amp;amp;nbsp; PTS&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; FPTS&amp;amp;nbsp;&amp;amp;nbsp; K&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
D&amp;amp;nbsp; DMG DEALT&amp;amp;nbsp; TAKEN&amp;amp;nbsp; F&amp;amp;nbsp; FK&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; FLT&amp;amp;quot;,freqs[freq].freqname);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;sendPublic(str);&amp;lt;br /&amp;gt;&lt;br /&gt;
               &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;sendPublic(&amp;amp;quot;*arena----------------------------------------------------------------------------------&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
          &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// assuming existing freqs struct with data&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;for (pilot=freqs[freq].playercount-1; pilot&amp;amp;gt;=0; pilot--)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// on freq squad so print stats&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;char outString[255];&amp;lt;br /&amp;gt;&lt;br /&gt;
          &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;sprintf(outString,&lt;br /&gt;
&amp;amp;quot;*arena %-20s %12d %8d %3d %3d %10d %6d %2d %3d %3d:%02d&amp;amp;quot;,freqs[freq].pilots[pilot].name,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;freqs[freq].pilots[pilot].points,&lt;br /&gt;
freqs[freq].pilots[pilot].flagpoints, freqs[freq].pilots[pilot].kills,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;freqs[freq].pilots[pilot].deaths,&lt;br /&gt;
freqs[freq].pilots[pilot].dmgdealt, freqs[freq].pilots[pilot].dmgtaken,freqs[freq].pilots[pilot].flags,&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;freqs[freq].pilots[pilot].flagkills, freqs[freq].pilots[pilot].flagtime&lt;br /&gt;
/60, freqs[freq].pilots[pilot].flagtime %60);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;sendPublic(outString);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;br /&amp;gt;&lt;br /&gt;
          &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// Notes: sprintf&lt;br /&gt;
format = sprintf(output char string, spacing, variables)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// Notes: s = chars, d = integer, - = left align, right align default&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// Notes: doing&lt;br /&gt;
%02d = put 0 in front if not 2 digits, %3d:%02d makes 0:04 format&amp;lt;br /&amp;gt;&lt;br /&gt;
          &amp;lt;br /&amp;gt;&lt;br /&gt;
          &amp;lt;br /&amp;gt;&lt;br /&gt;
          &amp;lt;a name=&amp;quot;12&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
==Input/Output to files==&lt;br /&gt;
          &lt;br /&gt;
&amp;lt;blockquote&amp;gt;Input to file&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;// example reading from duel.ini looking for line that starts with MaxBoxes= then taking the next char as value to store as &amp;lt;br /&amp;gt;&lt;br /&gt;
// MAX_BOXES (ie duel.ini = MaxBoxes=5)&amp;lt;br /&amp;gt;&lt;br /&gt;
#include &amp;amp;lt;fstream&amp;amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
using namespace std;&amp;lt;br /&amp;gt;&lt;br /&gt;
              &amp;lt;br /&amp;gt;&lt;br /&gt;
ifstream file(&amp;amp;quot;duel.ini&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; char line[256];&amp;lt;br /&amp;gt;&lt;br /&gt;
              &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // read in MaxBoxes=X&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; while (file.getline(line, 256))&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	if (CMPSTART(&amp;amp;quot;MaxBoxes=&amp;amp;quot;, line))&amp;lt;br /&amp;gt;&lt;br /&gt;
	{&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; MAX_BOXES = atoi(&amp;amp;amp;(line[9]));&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; break;&amp;lt;br /&amp;gt;&lt;br /&gt;
	}&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
              &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
Output to file&amp;lt;br /&amp;gt;                                                     &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                    &amp;lt;blockquote&amp;gt;// normal char output&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
       &amp;lt;blockquote&amp;gt;#include &amp;amp;lt;fstream&amp;amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
using namespace std;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ofstream file(&amp;amp;quot;duelleaguestat.inc&amp;amp;quot;, ios::app); &amp;amp;nbsp; // app = put all data at end of file&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
file &amp;amp;lt;&amp;amp;lt; squad1&amp;amp;lt;&amp;amp;lt; endl; &amp;amp;nbsp;// squad1 = char[20]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
file &amp;amp;lt;&amp;amp;lt; &amp;amp;quot; vs &amp;amp;quot;&amp;amp;lt;&amp;amp;lt; endl;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
file &amp;amp;lt;&amp;amp;lt; squad2&amp;amp;lt;&amp;amp;lt; endl; &amp;amp;nbsp;// squad2 = char[20]&amp;lt;br /&amp;gt;      &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
  &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                      // how to output String's&lt;br /&gt;
to file (key is converting String to (char*) to file write)&amp;lt;br /&amp;gt;        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
String str = freqs[freq].slotname[slot];&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
str += &amp;amp;quot;, Repels: &amp;amp;quot; + (String)(int) t-&amp;amp;gt;repel;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
outf &amp;amp;lt;&amp;amp;lt; endl;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
outf &amp;amp;lt;&amp;amp;lt; (char*) str;&amp;lt;br /&amp;gt;                                         &lt;br /&gt;
                                                                        &lt;br /&gt;
                                          &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                                                        &amp;lt;br /&amp;gt;&lt;br /&gt;
// date and time stamp&amp;lt;br /&amp;gt;                                             &lt;br /&gt;
                                                                        &lt;br /&gt;
                                      &amp;lt;blockquote&amp;gt;#include &amp;amp;quot;time.h&amp;amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                      &amp;lt;br /&amp;gt;&lt;br /&gt;
char u[100];&amp;lt;br /&amp;gt;&lt;br /&gt;
time_t t=time(NULL);&amp;lt;br /&amp;gt;&lt;br /&gt;
tm *tmp = localtime(&amp;amp;amp;t);&amp;lt;br /&amp;gt;&lt;br /&gt;
strftime(u,99,&amp;amp;quot;%c&amp;amp;quot;,tmp);&amp;lt;br /&amp;gt;&lt;br /&gt;
sendPublic(&amp;amp;quot;Date and time: &amp;amp;quot; + (String) u);&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                                                                                      &lt;br /&gt;
                &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;blockquote&amp;gt;Example reading input from file using &amp;amp;quot;GetPrivateProfileString&amp;amp;quot; (from rampage plugin)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                  &amp;lt;blockquote&amp;gt;format of rampage.ini&amp;lt;br /&amp;gt;&lt;br /&gt;
        &amp;lt;blockquote&amp;gt;7=is on a killing spree! (6:0)&amp;lt;br /&amp;gt;10=is opening a can of whoop-ass! (9:0)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                      &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
read input&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                      &amp;lt;blockquote&amp;gt;rampageini.h&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                        &amp;lt;blockquote&amp;gt;#pragma once&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#ifndef RAMPAGEINI_H&amp;lt;br /&amp;gt;&lt;br /&gt;
#define RAMPAGEINI_H&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                          &amp;lt;br /&amp;gt;&lt;br /&gt;
#define NUM_RANKS 10&amp;lt;br /&amp;gt;&lt;br /&gt;
#define BUFFER_LEN 256&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                          &amp;lt;br /&amp;gt;&lt;br /&gt;
struct RampageSettings&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; char quotes[NUM_RANKS][BUFFER_LEN];&amp;lt;br /&amp;gt;&lt;br /&gt;
};&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                          &amp;lt;br /&amp;gt;&lt;br /&gt;
void LoadSettings(RampageSettings &amp;amp;amp;setts);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                          &amp;lt;br /&amp;gt;&lt;br /&gt;
#endif&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // RAMPAGEINI_H&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                          &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
rampageini.cpp&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                          &amp;lt;blockquote&amp;gt;#include &amp;amp;quot;rampageini.h&amp;amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
static char buffer[BUFFER_LEN];&amp;lt;br /&amp;gt;&lt;br /&gt;
static char path[BUFFER_LEN];&amp;lt;br /&amp;gt;&lt;br /&gt;
#include &amp;amp;quot;../algorithms.h&amp;amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
#define WIN32_LEAN_AND_MEAN&amp;lt;br /&amp;gt;&lt;br /&gt;
#include &amp;amp;lt;windows.h&amp;amp;gt;&amp;lt;br /&amp;gt;                                         &lt;br /&gt;
                                                                        &lt;br /&gt;
                &amp;lt;br /&amp;gt;&lt;br /&gt;
char *rank_type[10] = {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;quot;7&amp;amp;quot;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;quot;10&amp;amp;quot;,&amp;lt;br /&amp;gt;&lt;br /&gt;
};&amp;lt;br /&amp;gt;                                                                 &lt;br /&gt;
                                                                 &amp;lt;br /&amp;gt;&lt;br /&gt;
void LoadSettings(RampageSettings &amp;amp;amp;setts)&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;GetCurrentDirectory(BUFFER_LEN - 64, path);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;strcat(path, &amp;amp;quot;\rampage.ini&amp;amp;quot;);&amp;lt;br /&amp;gt;                  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                       &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;for (int i = 0; i &amp;amp;lt; NUM_RANKS; ++i)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; GetPrivateProfileString(&amp;amp;quot;Comments&amp;amp;quot;,&lt;br /&gt;
rank_type[i], &amp;amp;quot;-ERROR-&amp;amp;quot;, setts.quotes[i], BUFFER_LEN, path);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;                                                                  &lt;br /&gt;
                                                                &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;/blockquote&amp;gt;&amp;amp;nbsp;&amp;lt;/blockquote&amp;gt;&amp;amp;nbsp;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Simple programming commands==&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                             &amp;lt;blockquote&amp;gt;simple commands &amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                            &amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; declare/initialize variables &amp;amp;nbsp; // example: &amp;amp;nbsp;int&lt;br /&gt;
temp; &amp;amp;nbsp;int temp2 = 1; &amp;amp;nbsp;temp2 = 3; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&lt;br /&gt;
// bool check = true; check = false;&amp;lt;br /&amp;gt;                                                           &lt;br /&gt;
                                                                        &lt;br /&gt;
                                          &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; if (condition) {}&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// example: if (a &amp;amp;gt; b) { a++; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;if (condition) {} else {} &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// example: if (b &amp;amp;lt;= 0) { b--; } else { a++;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;while (condition) {}&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// example: while (b &amp;amp;gt; 0) { b--; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;for (initialize; condition; increment){}&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;// example: for (a=1; a &amp;amp;lt; 10; a++) { a = a + b; }&amp;lt;br /&amp;gt;         &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                    &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                                                                                        array&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                              &amp;lt;blockquote&amp;gt;single dimension&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                &amp;lt;blockquote&amp;gt;int teams[100]; &amp;amp;nbsp; // create 100 hundred teams 0-99&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
teams[50] = 1;&amp;lt;br /&amp;gt;                                                     &lt;br /&gt;
                                                                        &lt;br /&gt;
            &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
multi-dimensional&amp;lt;br /&amp;gt;                                               &lt;br /&gt;
                                                                        &lt;br /&gt;
                  &amp;lt;blockquote&amp;gt;int teams[100][50]; &amp;amp;nbsp;// multidimensional arry&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
teams[99][49] = 2;&amp;lt;br /&amp;gt;                                                 &lt;br /&gt;
                                                                        &lt;br /&gt;
                  &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
variable size &amp;lt;br /&amp;gt;                                                  &lt;br /&gt;
                                                                        &lt;br /&gt;
                 &amp;lt;blockquote&amp;gt;String *list = new String[amount+1]; // string array with size amount (variable) + 1;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
list[amount-1] = &amp;amp;quot;hi&amp;amp;quot;;&amp;lt;br /&amp;gt;                                             &lt;br /&gt;
                                                                        &lt;br /&gt;
                        &amp;lt;/blockquote&amp;gt;&amp;amp;nbsp;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
struct &amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;                                            &lt;br /&gt;
                                                                        &lt;br /&gt;
                         &amp;lt;blockquote&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; struct name&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	&amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// variables&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;};&amp;lt;br /&amp;gt;                                              &lt;br /&gt;
                                                                        &lt;br /&gt;
                         &amp;lt;blockquote&amp;gt;// example:&amp;lt;br /&amp;gt;&lt;br /&gt;
struct freqdata {&lt;br /&gt;
int kills; int deaths; };&amp;lt;br /&amp;gt;                                          &lt;br /&gt;
                                                                        &lt;br /&gt;
                               &amp;lt;br /&amp;gt;&lt;br /&gt;
 freqdata freqs[100]; // 100 of those structs&amp;lt;br /&amp;gt;                      &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                   &amp;lt;br /&amp;gt;&lt;br /&gt;
freqs[56].kills =&lt;br /&gt;
1; &amp;amp;nbsp;// access struct&amp;lt;br /&amp;gt;                                          &lt;br /&gt;
                                                                        &lt;br /&gt;
                               &amp;lt;/blockquote&amp;gt;&amp;amp;nbsp;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                                                                                        switch &amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
 &amp;lt;blockquote&amp;gt;switch (variable)&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;case n:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{ } &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;break;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;case m:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
	&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;amp;nbsp; } &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;break;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;default:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;break;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;br /&amp;gt;                                               &lt;br /&gt;
                                                                        &lt;br /&gt;
                            &amp;lt;blockquote&amp;gt;&amp;amp;nbsp;&amp;lt;blockquote&amp;gt;// Example:&amp;lt;br /&amp;gt;&lt;br /&gt;
switch (p-&amp;amp;gt;ship) {&amp;lt;br /&amp;gt;                                              &lt;br /&gt;
                                                                        &lt;br /&gt;
                                 &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; case SHIP_Warbird: &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
	sendPrivate(p,&amp;amp;quot;You're in a warbird&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
	} &amp;amp;nbsp;break;&amp;lt;br /&amp;gt;               &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; default:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; break;&amp;lt;/blockquote&amp;gt;&amp;amp;nbsp;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                  &amp;lt;br /&amp;gt;&lt;br /&gt;
==Useful Player data==&lt;br /&gt;
                                  &amp;lt;blockquote&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                        // useful data stored&lt;br /&gt;
by MervBot about each player (player.h)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                          &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
p-&amp;amp;gt;name = player name stored as char[20]&amp;lt;br /&amp;gt;&lt;br /&gt;
p-&amp;amp;gt;squad = player squad stored as char[20]&amp;lt;br /&amp;gt;&lt;br /&gt;
p-&amp;amp;gt;ship = ship (0-7) enumerated as SHIP_Warbird, SHIP_Spectator, etc..&amp;lt;br /&amp;gt;&lt;br /&gt;
p-&amp;amp;gt;safety = if ship is in safety zone (boolean)&amp;lt;br /&amp;gt;&lt;br /&gt;
p-&amp;amp;gt;bounty = player bounty&amp;lt;br /&amp;gt;&lt;br /&gt;
p-&amp;amp;gt;energy = player energy (have bot with *energy on to get accurate readings)&amp;lt;br /&amp;gt;&lt;br /&gt;
p-&amp;amp;gt;flagCount = how many flags player is holding&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
p-&amp;amp;gt;team = player frequency&amp;lt;br /&amp;gt;&lt;br /&gt;
p-&amp;amp;gt;(burst, repel, thor, brick, decoy, rocket, portal) = how many items of that type player has&amp;lt;br /&amp;gt;&lt;br /&gt;
p-&amp;amp;gt;(stealth, cloak, xradar, awarp, ufo, flash, safety, shields, supers) = if player has that item on (boolean)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
p-&amp;amp;gt;score.killPoints = player kill points&amp;lt;br /&amp;gt;&lt;br /&gt;
p-&amp;amp;gt;score.flagPoints = player flag points&amp;lt;br /&amp;gt;&lt;br /&gt;
p-&amp;amp;gt;score.wins = player kills from f2&amp;lt;br /&amp;gt;&lt;br /&gt;
p-&amp;amp;gt;score.losses = player deaths from f2&amp;lt;br /&amp;gt;&lt;br /&gt;
                                    &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
==Bot built in functions==&lt;br /&gt;
&amp;lt;blockquote&amp;gt;// useful MervBot commands to control what the bot is doing&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
// player.cpp&amp;lt;br /&amp;gt;&lt;br /&gt;
Player::move(Sint32 x, Sint32 y) &amp;amp;nbsp;// example &amp;amp;nbsp;me-&amp;amp;gt;move(512,512) - bot moves to coord 512 512&amp;lt;br /&amp;gt;&lt;br /&gt;
Player::clone(Player *p) // example &amp;amp;nbsp;me-&amp;amp;gt;clone(p) &amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
// dllcore.cpp (descriptions of functions in dllcore.h)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeEcho&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (char *m);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeSay&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (int t, int s, int i, char *m);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeShip&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (int s);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeTeam&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (int t);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeGrabFlag&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (int f);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeSendPosition&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (bool reliable);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeDropFlags&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; ();&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeDeath&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (Player *p);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeAttach&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (Player *p);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeDetach&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; ();&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeFollowing&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (bool f);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeFlying&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (bool f);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeBanner&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (BYTE *b);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeDropBrick&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; ();&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeFireWeapon&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (void *weapon_info);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeToggleObjects&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (Uint16 player, Uint16 *objects, int num_objects);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeSpawnBot&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
(char *name, char *password, char *staff, char *arena);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeChangeArena&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (char *name);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeChangeSettings&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (_linkedlist &amp;amp;lt;String&amp;amp;gt; *settings);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
// example how to use them:&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
tell(makeFollowing(false));&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                      &amp;lt;br /&amp;gt;&lt;br /&gt;
// look in Commands.txt , command.cpp (core), or /!help to bot to see all bot external commands (example /!go &amp;amp;lt;arena&amp;amp;gt;)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                      &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Example Code==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;a name=&amp;quot;15a&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
a) No antiwarp in center of map (take green away and warn)&amp;lt;br /&amp;gt;      &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
  &amp;lt;blockquote&amp;gt;// using function closeto() and abs()&amp;lt;br /&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;amp;nbsp;&amp;lt;blockquote&amp;gt;&lt;br /&gt;
bool closeto(Player *p, int x, int y, int tolerance) {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return (abs((p-&amp;amp;gt;tile.x) - x) &amp;amp;lt; tolerance) &amp;amp;amp;&amp;amp;amp; (abs((p-&amp;amp;gt;tile.y) - y) &amp;amp;lt; tolerance); }&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
inline int abs(int n) {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (n &amp;amp;lt; 0)&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return -n;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; else&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return n; }&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
radius = 35; &amp;amp;nbsp;// global variable&amp;lt;br /&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;amp;nbsp;&amp;lt;blockquote&amp;gt;case EVENT_PlayerMove: {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Player *p = (Player*)event.p[0];&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // no anti in center&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if ((p-&amp;amp;gt;ship != SHIP_Spectator) &amp;amp;amp;&amp;amp;amp; (p-&amp;amp;gt;awarp)) {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (closeto(p, 512, 512, radius)){&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPrivate(p, &amp;amp;quot;*prize #-20&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPrivate(p, &amp;amp;quot;*warn Antiwarp is not allowed in center.&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
               &amp;lt;a name=&amp;quot;15b&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
b) Setting freq size depending on how many pilots in game&amp;lt;br /&amp;gt;       &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
case EVENT_Tick: &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;if (countdown[0] == 0) { &amp;amp;nbsp; &amp;amp;nbsp; // assuming countdown[0] initialized to &amp;amp;gt; 0&amp;amp;nbsp; in spawn.h, freqchange=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
_listnode &amp;amp;lt;Player&amp;amp;gt; *parse = playerlist-&amp;amp;gt;head;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int count = 0;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; while (parse)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Player *p = parse-&amp;amp;gt;item;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (p-&amp;amp;gt;ship != SHIP_Spectator)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; ++count;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; parse = parse-&amp;amp;gt;next;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if ((count &amp;amp;gt; 24) &amp;amp;amp;&amp;amp;amp; (freqchange != 4))&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPublic(&amp;amp;quot;?set team:maxperteam:4&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; String s;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s = &amp;amp;quot;Max freq size 4&amp;amp;nbsp; (&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += count;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += &amp;amp;quot; pilots in game)&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPublic(s);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqchange = 4;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
if ((count &amp;amp;lt; 25) &amp;amp;amp;&amp;amp;amp; (count &amp;amp;gt; 14) &amp;amp;amp;&amp;amp;amp; (freqchange !=&lt;br /&gt;
3))&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPublic(&amp;amp;quot;?set team:maxperteam:3&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; String s;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s = &amp;amp;quot;Max freq size 3&amp;amp;nbsp; (&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += count;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += &amp;amp;quot; pilots in game)&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPublic(s);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqchange = 3;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&amp;lt;blockquote&amp;gt;countdown[0] = 120;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/blockquote&amp;gt;                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                     &amp;lt;a name=&amp;quot;15c&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;  c) Tracking kills and announcing when pilot gets 10 kills in a row without&lt;br /&gt;
dying                                                                   &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                        &amp;lt;blockquote&amp;gt;case EVENT_PlayerDeath:&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;// assuming tags are setup (see storing data section)&amp;lt;br /&amp;gt;&lt;br /&gt;
set_tag(p,KILLS, 0); &amp;amp;nbsp;// pilot died, reset to 0 kills in a row&amp;lt;br /&amp;gt;&lt;br /&gt;
set_tag(k, KILLS, get_tag(k, KILLS) + 1); &amp;amp;nbsp;// pilot killed someone, increment kills in a row by 1&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
if (get_tag(k,KILLS) == 10) &amp;amp;nbsp;sendPublic(&amp;amp;quot;*arena (String) k-&amp;amp;gt;name + &amp;amp;quot; has gotten 10 kills.&amp;amp;quot;);&amp;lt;/blockquote&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                         &amp;lt;a name=&amp;quot;15d&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
d) Warp pilot to coord when they are in a certain region&amp;lt;br /&amp;gt;        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                &amp;lt;blockquote&amp;gt;// using functions closeto() and abs()&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
bool closeto(Player *p, int x, int y, int tolerance) {&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return (abs((p-&amp;amp;gt;tile.x) - x) &amp;amp;lt; tolerance) &amp;amp;amp;&amp;amp;amp; (abs((p-&amp;amp;gt;tile.y) - y) &amp;amp;lt; tolerance); }&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
inline int abs(int n) {&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (n &amp;amp;lt; 0)&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return -n;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; else&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return n; }&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
case EVENT_PlayerMove: &amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
	if (closeto(p, 509, 509, 2)) { &amp;amp;nbsp;// if pilot within 2 of map coord 509,509&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPrivate(p, &amp;amp;quot;*warpto 509 504&amp;amp;quot;); &amp;amp;nbsp;// warp to coord 509,504&amp;lt;br /&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                           &amp;lt;br /&amp;gt;                                         &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                          &amp;lt;a name=&amp;quot;15e&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e) Structures within structures (spawn.h botinfo)&amp;lt;br /&amp;gt;               &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
           &amp;lt;blockquote&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // Declare in spawn.h&amp;lt;br /&amp;gt;&amp;lt;blockquote&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; struct playerstats&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	char name[20];&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
	int kills;&amp;lt;br /&amp;gt;&lt;br /&gt;
	int deaths;&amp;lt;br /&amp;gt;&lt;br /&gt;
	Uint16 points;&amp;lt;br /&amp;gt;&lt;br /&gt;
	Uint16 flagpoints;&amp;lt;br /&amp;gt;&lt;br /&gt;
	int flagtime;&amp;lt;br /&amp;gt;&lt;br /&gt;
	int cflagtime;&amp;lt;br /&amp;gt;&lt;br /&gt;
	int flags;&amp;lt;br /&amp;gt;&lt;br /&gt;
	int flagkills;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
	int dmgdealt;&amp;lt;br /&amp;gt;&lt;br /&gt;
	int dmgtaken;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; };&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; struct freqdata&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	playerstats pilots[100];&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
	int freqpoints;&amp;lt;br /&amp;gt;&lt;br /&gt;
	char freqname[20];&amp;lt;br /&amp;gt;&lt;br /&gt;
	int freqflagpoints;&amp;lt;br /&amp;gt;&lt;br /&gt;
	Uint16 freqteam;&amp;lt;br /&amp;gt;&lt;br /&gt;
	int freqflagtime;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
	int flags;&amp;lt;br /&amp;gt;&lt;br /&gt;
	int kills;&amp;lt;br /&amp;gt;&lt;br /&gt;
	int deaths;&amp;lt;br /&amp;gt;&lt;br /&gt;
	int flagkills;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
	int dmgdealt;&amp;lt;br /&amp;gt;&lt;br /&gt;
	int dmgtaken;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
	int playercount;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; };&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqdata freqs[100];&amp;lt;br /&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
// Initialize in spawn.cpp&amp;lt;br /&amp;gt;&amp;lt;blockquote&amp;gt;void botInfo::Clear()&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // initialize/clear struct data&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; for (int n=99; n&amp;amp;gt;=0; n--)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	freqs[n].freqteam=-1;&amp;lt;br /&amp;gt;&lt;br /&gt;
	freqs[n].freqpoints=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
	freqs[n].freqflagpoints=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
	freqs[n].playercount=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
	freqs[n].flags=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
	freqs[n].kills=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
	freqs[n].deaths=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
	freqs[n].freqflagtime=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
	freqs[n].flagkills=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
	freqs[n].dmgdealt=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
	freqs[n].dmgtaken=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;br /&amp;gt;&lt;br /&gt;
	for (int m = 99; m&amp;amp;gt;=0; m--)&amp;lt;br /&amp;gt;&lt;br /&gt;
	{&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].pilots[m].deaths=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].pilots[m].kills=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].pilots[m].points=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].pilots[m].flagpoints=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].pilots[m].flagtime=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].pilots[m].cflagtime=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].pilots[m].flags=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].pilots[m].flagkills=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].pilots[m].dmgdealt=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].pilots[m].dmgtaken=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
	}&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;amp;nbsp;&amp;lt;blockquote&amp;gt;// Access data in spawn.cpp&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;int freq = p-&amp;amp;gt;team;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
freqs[1].pilots[2].kills++;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
OR&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
freqs[freq].deaths++;&amp;lt;br /&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/blockquote&amp;gt;                    &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                &amp;lt;a name=&amp;quot;15f&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
f) Tracking flag data&amp;lt;br /&amp;gt;                                           &lt;br /&gt;
                                                                        &lt;br /&gt;
&amp;lt;blockquote&amp;gt;Example GetPilot() function &amp;amp;nbsp;(using structs from example e)&amp;lt;br /&amp;gt;&amp;lt;blockquote&amp;gt;bool botInfo::GetPilot(Player *p)&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // get a pilots freq/pilot id from struct&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; for (freq=freqcount-1; freq&amp;amp;gt;=0; freq--)&amp;lt;br /&amp;gt;&lt;br /&gt;
	if (p-&amp;amp;gt;team == freqs[freq].freqteam)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; for (pilot = freqs[freq].playercount-1; pilot&amp;amp;gt;=0; pilot--)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
if (strcmp(p-&amp;amp;gt;name,freqs[freq].pilots[pilot].name)==0)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return true;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return false;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Example way to track flag data using above struct/functions&amp;lt;br /&amp;gt;&amp;lt;blockquote&amp;gt;&lt;br /&gt;
case EVENT_FlagGrab:&amp;lt;br /&amp;gt;&lt;br /&gt;
	{&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (GetPilot(p)) &amp;amp;nbsp;// function&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freq].pilots[pilot].flags++;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freq].flags++;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
if (freqs[freq].pilots[pilot].flags &amp;amp;lt; 2) // didnt have a flag before,&lt;br /&gt;
first flag&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freq].pilots[pilot].cflagtime = GetTickCount();&lt;br /&gt;
&amp;amp;nbsp;// time stamp when picked up flag&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;blockquote&amp;gt;Example way to track flag data using built in get/set tag (from catid flagbot)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                               &amp;lt;blockquote&amp;gt;&lt;br /&gt;
case EVENT_FlagGrab:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	{&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; set_tag(p, TAG_STAT_FS, get_tag(p, TAG_STAT_FS) + 1);&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; set_tag(p, TAG_FLAGTIMER, GetTickCount());&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	}&amp;lt;br /&amp;gt;                            &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                    &amp;lt;/blockquote&amp;gt;&amp;amp;nbsp;&amp;lt;/blockquote&amp;gt;&amp;amp;nbsp;&amp;lt;blockquote&amp;gt;Get current flag times using struct format&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                   &amp;lt;blockquote&amp;gt;void botInfo::SetFlagTimes()&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // set current flagtime for pilots/freqs&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; _listnode &amp;amp;lt;Player&amp;amp;gt; *parse = playerlist-&amp;amp;gt;head;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; while (parse)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	Player *p = parse-&amp;amp;gt;item;&amp;lt;br /&amp;gt;  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
	if (GetPilot(p))&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (freqs[freq].pilots[pilot].flags &amp;amp;gt; 0)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (PilotOnSquad(p))&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freq].freqflagtime += (GetTickCount() - freqs[freq].pilots[pilot].cflagtime)/1000;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                     &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
freqs[freq].pilots[pilot].flagtime += (GetTickCount() - freqs[freq].pilots[pilot].cflagtime)/1000;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
freqs[freq].pilots[pilot].cflagtime = GetTickCount();&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;         &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                           &amp;lt;br /&amp;gt;&lt;br /&gt;
	parse = parse-&amp;amp;gt;next;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;                                                                  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                           &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
// side note: &amp;amp;nbsp;case EVENT_FlagDrop: {} gets called anytime theres a teamkill&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                   &amp;lt;/blockquote&amp;gt;        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                          &amp;lt;br /&amp;gt;                          &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                        &amp;lt;a name=&amp;quot;15g&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
g) Example way to do simple /!spam feature (allowed 1x/60s)&amp;lt;br /&amp;gt;     &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                             &amp;lt;blockquote&amp;gt;declare and initialize variables in spawn.h&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                     &amp;lt;blockquote&amp;gt;class botInfo&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
bool spamready;&amp;lt;br /&amp;gt;&lt;br /&gt;
int SPAM_TIME;&amp;lt;br /&amp;gt;                                                     &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
 &amp;lt;br /&amp;gt;&lt;br /&gt;
public:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; botInfo(CALL_HANDLE given)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; spamready = true;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; SPAM_TIME = 60;&amp;lt;br /&amp;gt;                                 &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                     &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
spawn.cpp - mark as spamready=true when 60 seconds up&amp;lt;br /&amp;gt;           &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                           &amp;lt;blockquote&amp;gt;case EVENT_Tick:&amp;lt;br /&amp;gt;&lt;br /&gt;
	{&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (countdown[0] == 1) &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; spamready = true; &amp;amp;nbsp;// ready to spam again&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;         &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                               &amp;lt;/blockquote&amp;gt;            &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
command.cpp - handle !spam command&amp;lt;br /&amp;gt;                              &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                          &amp;lt;blockquote&amp;gt;case OP_Player:&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // Player-level commands&amp;lt;br /&amp;gt;                       &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                   &amp;lt;br /&amp;gt;&lt;br /&gt;
else if (c-&amp;amp;gt;check(&amp;amp;quot;spam&amp;amp;quot;))&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
// zone announcement &amp;amp;quot;Need pilots to duel in ?go arena -pilotname&amp;amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (spamready == true)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; String s;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += &amp;amp;quot;*zone Need pilots to duel in ?go &amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += arena;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += &amp;amp;quot; - &amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += p-&amp;amp;gt;name;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPublic(s);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; spamready=false;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; countdown[0] = SPAM_TIME * 60; // next spam time limit&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; else if (countdown[0] &amp;amp;lt; 0)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPrivate(p,&amp;amp;quot;Spam ability disabled.&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; else &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; String s;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += SPAM_TIME;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += &amp;amp;quot; Minute timer between announcements. &amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += countdown[0] / 60;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += &amp;amp;quot;:&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (countdown[0] % 60 &amp;amp;lt; 10)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += &amp;amp;quot;0&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += countdown[0] % 60;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += &amp;amp;quot; minutes left before next spam allowed.&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPrivate(p, s);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;         &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                 &amp;lt;/blockquote&amp;gt;&amp;amp;nbsp;&amp;lt;/blockquote&amp;gt;           &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                               &amp;lt;a name=&amp;quot;15h&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
h) Example of implementing a simple stack to do &amp;amp;quot;next in line for several 'boxes' at once&amp;amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                           &amp;lt;blockquote&amp;gt;//spawn.h declare variables&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                             &amp;lt;blockquote&amp;gt;class botInfo&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
Player *next[99][99];&amp;lt;br /&amp;gt;&lt;br /&gt;
int MAX_NEXT;&amp;lt;br /&amp;gt;&lt;br /&gt;
int nextcount[99];&amp;lt;br /&amp;gt;                                                 &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
             &amp;lt;br /&amp;gt;&lt;br /&gt;
public:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; botInfo(CALL_HANDLE given)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; MAX_NEXT = 8; &amp;lt;br /&amp;gt;                                  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                            &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
// spawn.cpp MoveUp function&amp;lt;br /&amp;gt;                                       &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                       &amp;lt;blockquote&amp;gt;void botInfo::MoveUp(int pos, int box)&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // moves up the next line for that box and decrement box's nextcount&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (nextcount[box] &amp;amp;gt; 0)&amp;lt;br /&amp;gt;&lt;br /&gt;
	nextcount[box]--;&amp;lt;br /&amp;gt;            &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; for (pos = pos; pos &amp;amp;lt; MAX_NEXT - 1; pos++)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	next[box][pos] = next[box][pos + 1];&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;                                               &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                 &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; next[box][MAX_NEXT] = 0;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;                                                                  &lt;br /&gt;
                                                                        &lt;br /&gt;
 &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                 &amp;lt;a name=&amp;quot;15i&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
i) Example of reading any text from a .txt and printing it to pilot line by line&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                 &amp;lt;blockquote&amp;gt;#include &amp;amp;lt;fstream&amp;amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
using namespace std;&amp;lt;br /&amp;gt;                                               &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                   &amp;lt;br /&amp;gt;&lt;br /&gt;
case OP_Player:&amp;lt;br /&amp;gt;&lt;br /&gt;
	{&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (c-&amp;amp;gt;check(&amp;amp;quot;schedule&amp;amp;quot;))&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // read in schedule from schedule.txt&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; ifstream file(&amp;amp;quot;schedule.txt&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; char line[256];&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                   &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; while (file.getline(line, 256))&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPrivate(p, line);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; file.close();&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; } &amp;lt;br /&amp;gt;        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                          &amp;lt;/blockquote&amp;gt; &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                 &amp;lt;a name=&amp;quot;15j&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
j) Example of printing player stats grid&amp;lt;br /&amp;gt;                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
 &amp;lt;blockquote&amp;gt;// spawn.cpp &amp;amp;nbsp; (see &amp;amp;quot;structures within structures&amp;amp;quot; example for variable declarations, varibale freqcount = # of freqs)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                     &amp;lt;br /&amp;gt;&lt;br /&gt;
void botInfo::DisplayPlayers()&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // Display Match player/freq stats in this format &amp;amp;nbsp;(not aligned b/c of html but aligned in bot)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // ---------------------------------------------------&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // Squad: squad_name_1 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
K&amp;amp;nbsp; D TK DMG DEALT TAKEN&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // ---------------------------------------------------&amp;lt;br /&amp;gt;&lt;br /&gt;
             &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // Player_1 &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      0&amp;amp;nbsp; 0&amp;amp;nbsp; 0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      0&amp;lt;br /&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // Player_2 &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      0&amp;amp;nbsp; 0&amp;amp;nbsp; 0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      0&amp;lt;br /&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // TOTAL:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      0&amp;amp;nbsp; 0&amp;amp;nbsp; 0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      0&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // ---------------------------------------------------&amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // Squad: squad_name_2 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
K&amp;amp;nbsp; D TK DMG DEALT TAKEN&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // ---------------------------------------------------&amp;lt;br /&amp;gt;&lt;br /&gt;
              &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // Player_3 &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      0&amp;amp;nbsp; 0&amp;amp;nbsp; 0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      0&amp;lt;br /&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // Player_4 &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      0&amp;amp;nbsp; 0&amp;amp;nbsp; 0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      0&amp;lt;br /&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // Player_5 &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      0&amp;amp;nbsp; 0&amp;amp;nbsp; 0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      0&amp;lt;br /&amp;gt;  &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // TOTAL:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      0&amp;amp;nbsp; 0&amp;amp;nbsp; 0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      0&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // ---------------------------------------------------&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                     &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; for (freq=freqcount-1; freq&amp;amp;gt;=0; freq--)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	char str[255];&amp;lt;br /&amp;gt;               &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                     &amp;lt;br /&amp;gt;&lt;br /&gt;
	sendFreqs(&amp;amp;quot;---------------------------------------------------&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                     &amp;lt;br /&amp;gt;&lt;br /&gt;
	sprintf(str, &amp;amp;quot;Squad: %-20s K&amp;amp;nbsp; D TK DMG DEALT TAKEN&amp;amp;quot;, freqs[freq].freqname);&amp;lt;br /&amp;gt;&lt;br /&gt;
	sendFreqs(str);&amp;lt;br /&amp;gt;              &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                      &amp;lt;br /&amp;gt;&lt;br /&gt;
	sendFreqs(&amp;amp;quot;---------------------------------------------------&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                     &amp;lt;br /&amp;gt;&lt;br /&gt;
	for (pilot=freqs[freq].playercount-1; pilot &amp;amp;gt;= 0; pilot--)&amp;lt;br /&amp;gt;&lt;br /&gt;
	{&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sprintf(str, &amp;amp;quot;%-20s&lt;br /&gt;
%8d %2d %2d %9d %5d&amp;amp;quot;, freqs[freq].pilots[pilot].name, freqs[freq].pilots[pilot].kills,&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freq].pilots[pilot].deaths, freqs[freq].pilots[pilot].teamkills,&lt;br /&gt;
freqs[freq].pilots[pilot].dmgdealt,&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freq].pilots[pilot].dmgtaken);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendFreqs(str);&amp;lt;br /&amp;gt;&lt;br /&gt;
	}&amp;lt;br /&amp;gt;                            &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                        &amp;lt;br /&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
      sprintf(str, &amp;amp;quot;TOTAL:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      %2d %2d %2d %9d %5d&amp;amp;quot;, freqs[freq].kills, freqs[freq].deaths, &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freq].teamkills, freqs[freq].dmgdealt, freqs[freq].dmgtaken);&amp;lt;br /&amp;gt;&lt;br /&gt;
	sendFreqs(str);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;                                               &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                     &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendFreqs(&amp;amp;quot;---------------------------------------------------&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;                                                                  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
  &amp;lt;/blockquote&amp;gt;                                                         &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
           &amp;lt;a name=&amp;quot;15k&amp;quot;&amp;gt;&amp;lt;/a&amp;gt; k) Example of checking if any pilots are&lt;br /&gt;
within a region                                                         &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
           &amp;lt;blockquote&amp;gt;// see GetPilotName(name) function in other example, returns *player as TempPlayer from name&amp;lt;br /&amp;gt;&lt;br /&gt;
// closeto() function from several previous examples&amp;lt;br /&amp;gt;               &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                       &amp;lt;br /&amp;gt;&lt;br /&gt;
bool botInfo::FreqAInBox()&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // return true if teamA has a pilot in the box, otherwise false&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; for (int tempplayercount = freqs[0].playercount-1; tempplayercount &amp;amp;gt;= 0; tempplayercount--)&amp;lt;br /&amp;gt;&lt;br /&gt;
	if (GetPilotName(freqs[0].pilots[tempplayercount].name))&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (closeto(TempPlayer,&lt;br /&gt;
coordX, coordY, 73) &amp;amp;amp;&amp;amp;amp; (TempPlayer-&amp;amp;gt;ship != SHIP_Spectator))&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return true;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
 &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return false;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;                                                                  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
    &amp;lt;/blockquote&amp;gt;                                                       &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
               &amp;lt;a name=&amp;quot;15l&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
l) Example of functions to get a pilot's struct id info from a name or *player info&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
 &amp;lt;blockquote&amp;gt;// see struct examples for variable info&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
// return struct freq/pilot id from *player info&amp;lt;br /&amp;gt;&lt;br /&gt;
bool botInfo::GetPilot(Player *p)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // return freq, pilot of a player p&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; for (freq=freqcount-1; freq&amp;amp;gt;=0; freq--)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	if (p-&amp;amp;gt;team == freqs[freq].freqteam)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; for (pilot = freqs[freq].playercount-1; pilot&amp;amp;gt;=0; pilot--)&amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
if (strcmp(p-&amp;amp;gt;name,freqs[freq].pilots[pilot].name)==0)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return true;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return false;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;br /&amp;gt;                                                                  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
// return *player as TempPlayer info from p-&amp;amp;gt;name info&amp;lt;br /&amp;gt;bool botInfo::GetPilotName(char *name)&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // get pilot from a name, return as TempPlayer&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; _listnode &amp;amp;lt;Player&amp;amp;gt; *parse = playerlist-&amp;amp;gt;head;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
          &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; while (parse)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	Player *p = parse-&amp;amp;gt;item;&amp;lt;br /&amp;gt;  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
       &amp;lt;br /&amp;gt;&lt;br /&gt;
	// convert both to lowercase to compare&amp;lt;br /&amp;gt;&lt;br /&gt;
	char pname[20];&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
	strncpy(pname,p-&amp;amp;gt;name,20);&amp;lt;br /&amp;gt; &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
        &amp;lt;br /&amp;gt;&lt;br /&gt;
	char nname[20];&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
	strncpy(nname,name,20);&amp;lt;br /&amp;gt;      &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
   &amp;lt;br /&amp;gt;&lt;br /&gt;
	tolower(pname);&amp;lt;br /&amp;gt;&lt;br /&gt;
	tolower(nname);&amp;lt;br /&amp;gt;              &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
	if (strcmp(pname,nname)==0)&amp;lt;br /&amp;gt;&lt;br /&gt;
	{&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TempPlayer = p;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return true;&amp;lt;br /&amp;gt;&lt;br /&gt;
	}&amp;lt;br /&amp;gt;                            &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                      &amp;lt;br /&amp;gt;&lt;br /&gt;
	parse = parse-&amp;amp;gt;next;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return false;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
// note: better to implement these functions as passing values by reference instead of using global variables&amp;lt;br /&amp;gt;&lt;br /&gt;
// just easier to not have to be declaring different int freq, int pilot all the time&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;                                                           &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
             &amp;lt;a name=&amp;quot;15m&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
m) Example of creating a logfile name using date and squad names&amp;lt;br /&amp;gt; &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
 &amp;lt;blockquote&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // create log file name (squadA and squadB external char[20] variables)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; char u[100];&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; time_t t=time(NULL);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; tm *tmp = localtime(&amp;amp;amp;t);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strftime(u,99,&amp;amp;quot;%y&amp;amp;quot;,tmp);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname = &amp;amp;quot;c:\Program Files\Continuum\logs\&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname += u;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname += &amp;amp;quot;y&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strftime(u,99,&amp;amp;quot;%m&amp;amp;quot;,tmp);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname += u;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname += &amp;amp;quot;m&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strftime(u,99,&amp;amp;quot;%d&amp;amp;quot;,tmp);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname += u;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname += &amp;amp;quot;d&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname += squadA;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname += &amp;amp;quot; vs &amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname += squadB;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strftime(u,99,&amp;amp;quot;%I&amp;amp;quot;,tmp);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname += u;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname += &amp;amp;quot;h&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strftime(u,99,&amp;amp;quot;%M&amp;amp;quot;,tmp);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname += u;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname += &amp;amp;quot;m&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname += &amp;amp;quot;.txt&amp;amp;quot;;&amp;lt;br /&amp;gt;                              &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
// example name created: &amp;amp;nbsp;03y01m27dBLACKDRaGON vs Integral05h08m.txt&amp;lt;br /&amp;gt;&lt;br /&gt;
// format &amp;amp;nbsp;year, month, day, squadA vs squadB, hour, minute&amp;lt;br /&amp;gt;   &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
 &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
  &amp;lt;a name=&amp;quot;15n&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
n) Example of sending messages to playing freqs or public and logging depending on status&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
  &amp;lt;blockquote&amp;gt;// teamA, teamB, logname global variables&amp;lt;br /&amp;gt;&lt;br /&gt;
void botInfo::sendFreqs(char *msg)&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; char *mmsg = &amp;amp;quot;*arena&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; String s = msg;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (teammsgs == false)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	s.prepend(&amp;amp;quot;*arena &amp;amp;quot;,7);&amp;lt;br /&amp;gt;&lt;br /&gt;
	sendPublic(s);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; else&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	sendTeamPrivate(8025,msg);&amp;lt;br /&amp;gt;&lt;br /&gt;
	sendTeamPrivate(teamA,msg);&amp;lt;br /&amp;gt;&lt;br /&gt;
	sendTeamPrivate(teamB,msg);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (gameon == true)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	ofstream outf(logname, ios::app);&amp;lt;br /&amp;gt;&lt;br /&gt;
	outf &amp;amp;lt;&amp;amp;lt; msg &amp;amp;lt;&amp;amp;lt; endl;&amp;lt;br /&amp;gt;&lt;br /&gt;
	outf.close();&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;                                                                  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
          &amp;lt;/blockquote&amp;gt;                                                 &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                           &amp;lt;a name=&amp;quot;15o&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
o) Example of reading in all player/freqs to struct data&amp;lt;br /&amp;gt;        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                    &amp;lt;blockquote&amp;gt;// see structures within structures example for freqs[] declaration&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
// to get freqs in a game where there are several freqs&amp;lt;br /&amp;gt;&lt;br /&gt;
void botInfo::GetFreqs()&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // read pilots into freq struct data from ingame and on playing freqs&amp;lt;br /&amp;gt;                      &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                        &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; _listnode &amp;amp;lt;Player&amp;amp;gt; *parse = playerlist-&amp;amp;gt;head;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; while (parse)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	Player *p = parse-&amp;amp;gt;item;&amp;lt;br /&amp;gt;  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
   &amp;lt;br /&amp;gt;&lt;br /&gt;
	if (p-&amp;amp;gt;ship != SHIP_Spectator)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (closeto(p, coordX, coordY, 73))&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // look for freq in struct&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; bool foundfreq=false;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freq=freqcount-1;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; while ((freq&amp;amp;gt;=0) &amp;amp;amp;&amp;amp;amp; (foundfreq==false))&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (p-&amp;amp;gt;team == freqs[freq].freqteam)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	foundfreq=true;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	strncpy(freqs[freq].pilots[freqs[freq].playercount].name,&lt;br /&gt;
p-&amp;amp;gt;name, 20);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	freqs[freq].playercount++;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freq--;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // didnt find freq in struct so add new freq&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (foundfreq == false)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (manualsquads == false)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	strncpy(freqs[freqcount].freqname,&lt;br /&gt;
p-&amp;amp;gt;squad, 20);&amp;lt;br /&amp;gt;                                                  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                            &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	if (freqcount == 0)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; teamA = p-&amp;amp;gt;team;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strncpy(squadA,&lt;br /&gt;
p-&amp;amp;gt;squad, 20);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; else&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; teamB = p-&amp;amp;gt;team;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strncpy(squadB,&lt;br /&gt;
p-&amp;amp;gt;squad, 20);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; else&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	if (p-&amp;amp;gt;team == teamA)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strncpy(freqs[freqcount].freqname,squadA,20);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	else if (p-&amp;amp;gt;team == teamB)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strncpy(freqs[freqcount].freqname,squadB,20);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freqcount].freqteam = p-&amp;amp;gt;team;&amp;lt;br /&amp;gt;         &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                     &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strncpy(freqs[freqcount].pilots[0].name, p-&amp;amp;gt;name, 20);&amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
     &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freqcount].playercount++;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqcount++;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
	parse = parse-&amp;amp;gt;next;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;                                                                  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
// to get freqs in a game where there are only two teams&amp;lt;br /&amp;gt;&lt;br /&gt;
void botInfo::GetFreqs()&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // read pilots into freq struct data from ingame and on playing freqs&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; _listnode &amp;amp;lt;Player&amp;amp;gt; *parse = playerlist-&amp;amp;gt;head;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; while (parse)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	Player *p = parse-&amp;amp;gt;item;&amp;lt;br /&amp;gt;  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                           &amp;lt;br /&amp;gt;&lt;br /&gt;
	if ((p-&amp;amp;gt;ship != SHIP_Spectator)&lt;br /&gt;
&amp;amp;amp;&amp;amp;amp; ((p-&amp;amp;gt;team == teamA) || (p-&amp;amp;gt;team == teamB)))&amp;lt;br /&amp;gt;&lt;br /&gt;
	{&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // freq 100, team A&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // set freq&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freq = 0;&amp;lt;br /&amp;gt; &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (p-&amp;amp;gt;team == teamB)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freq = 1;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // number of pilots on freq counted so far, starts 0&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; pilot = freqs[freq].playercount;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // pilot name&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strncpy(freqs[freq].pilots[pilot].name, p-&amp;amp;gt;name, 20);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // time stamp for playing time&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freq].pilots[pilot].cplaying_time = GetTickCount();&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // slot name&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (freqs[freq].playercount &amp;amp;lt; NUMBER_PILOTS)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
strncpy(freqs[freq].slotname[pilot], p-&amp;amp;gt;name, 20);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // increment freq player count&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freq].playercount++;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // if freq not already have name, give it player squad name&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if ((manualsquads == false) &amp;amp;amp;&amp;amp;amp; (strlen(p-&amp;amp;gt;squad) &amp;amp;gt; 0))&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strncpy(freqs[freq].freqname, p-&amp;amp;gt;squad, 20);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; // set player ship&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freq].pilots[pilot].ship = p-&amp;amp;gt;ship + 1;&amp;lt;br /&amp;gt;&lt;br /&gt;
	}&amp;lt;br /&amp;gt;&lt;br /&gt;
	parse = parse-&amp;amp;gt;next;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                      &amp;lt;/blockquote&amp;gt;                                     &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                         &amp;lt;a name=&amp;quot;15p&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
p) Example of finding MVP from struct data (2*kills - deaths formula)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
      &amp;lt;blockquote&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int highest=-20;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int mvp=0;&amp;lt;br /&amp;gt;                                      &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                          &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; for (pilot = freqs[mvpteam].playercount-1; pilot &amp;amp;gt;=0; pilot--)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	if (((freqs[mvpteam].pilots[pilot].kills&lt;br /&gt;
* 2) - freqs[mvpteam].pilots[pilot].deaths) &amp;amp;gt; highest)&amp;lt;br /&amp;gt;&lt;br /&gt;
	{&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; mvp = pilot;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; highest = (freqs[mvpteam].pilots[pilot].kills&lt;br /&gt;
* 2) - freqs[mvpteam].pilots[pilot].deaths;&amp;lt;br /&amp;gt;&lt;br /&gt;
	}&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;                                               &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                 &amp;lt;/blockquote&amp;gt;                          &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                      &amp;lt;a name=&amp;quot;15q&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
q) Print time stamp of event&amp;lt;br /&amp;gt;                                    &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                            &amp;lt;blockquote&amp;gt;#include &amp;amp;quot;time.h&amp;amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
          &amp;lt;br /&amp;gt;&lt;br /&gt;
char u[100];&amp;lt;br /&amp;gt;&lt;br /&gt;
time_t t=time(NULL);&amp;lt;br /&amp;gt;&lt;br /&gt;
tm *tmp = localtime(&amp;amp;amp;t);&amp;lt;br /&amp;gt;&lt;br /&gt;
strftime(u,99,&amp;amp;quot;%c&amp;amp;quot;,tmp);&amp;lt;br /&amp;gt;&lt;br /&gt;
sendPublic(&amp;amp;quot;Current date and time: &amp;amp;quot; + (String) u);&amp;lt;br /&amp;gt;                                                     &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                             &amp;lt;/blockquote&amp;gt;                              &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                    &amp;lt;a name=&amp;quot;15r&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
r) Simple way to track player bomb/bullet damage stats&amp;lt;br /&amp;gt;          &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
  &amp;lt;blockquote&amp;gt;// spawn.cpp (see data section for how to setup set_tag)&amp;lt;br /&amp;gt;&lt;br /&gt;
// see clientprot.h for weapon information&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
case EVENT_WatchDamage:&amp;lt;br /&amp;gt;&lt;br /&gt;
	{&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (PLAYING) &amp;amp;nbsp;// if tracking stats&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
if ((wi.type == PROJ_PBomb) &amp;amp;amp;&amp;amp;amp; (p-&amp;amp;gt;name != k-&amp;amp;gt;name))&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; set_tag(k, DMG_BOMB_DEALT, get_tag(k, DMG_BOMB_DEALT)&lt;br /&gt;
+ damage);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; set_tag(k, DMG_TOTAL_DEALT, get_tag(k, DMG_TOTAL_DEALT)&lt;br /&gt;
+ damage);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; set_tag(p, DMG_BOMB_TAKEN, get_tag(p, DMG_BOMB_TAKEN)&lt;br /&gt;
+ damage);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; set_tag(p, DMG_TOTAL_TAKEN, get_tag(p, DMG_TOTAL_TAKEN)&lt;br /&gt;
+ damage);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; else if (wi.type == PROJ_BBullet)&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; set_tag(k, DMG_BULLET_DEALT, get_tag(k, DMG_BULLET_DEALT)&lt;br /&gt;
+ damage);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; set_tag(k, DMG_TOTAL_DEALT, get_tag(k, DMG_TOTAL_DEALT)&lt;br /&gt;
+ damage);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; set_tag(p, DMG_BULLET_TAKEN, get_tag(k, DMG_BULLET_TAKEN)&lt;br /&gt;
+ damage);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; set_tag(p, DMG_TOTAL_TAKEN, get_tag(k, DMG_TOTAL_TAKEN)&lt;br /&gt;
+ damage);&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;         &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
  &amp;lt;/blockquote&amp;gt;                                                         &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                           &amp;lt;a name=&amp;quot;15s&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
s) Simple way to print those stats&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
case OP_Moderator:&lt;br /&gt;
{&lt;br /&gt;
	if (c-&amp;amp;gt;check(&amp;amp;quot;showstats&amp;amp;quot;))&lt;br /&gt;
	{&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPublic(&amp;amp;quot;Showing stats:&amp;amp;quot;);&lt;br /&gt;
                                     &lt;br /&gt;
              &lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; _listnode &amp;amp;lt;Player&amp;amp;gt; *parse = playerlist-&amp;amp;gt;head;             &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; while (parse) &lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Player *p = parse-&amp;amp;gt;item;&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (get_tag(p, DMG_TOTAL_DEALT) &amp;amp;gt; 0)&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&lt;br /&gt;
		char str[256];&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sprintf(str, &amp;amp;quot;(%-20s Dmg Dealt: Total %0004d, Bomb %0004d, Bullet %0004d&amp;amp;nbsp; Dmg TAKEN: Total %0004d, Bomb %0004d, Bullet %0004d)&amp;amp;quot;,&lt;br /&gt;
	p-&amp;amp;gt;name, get_tag(p,DMG_TOTAL_DEALT), get_tag(p,DMG_BOMB_DEALT), get_tag(p,DMG_BULLET_DEALT),&lt;br /&gt;
	get_tag(p,DMG_TOTAL_TAKEN), get_tag(p,DMG_BOMB_TAKEN), get_tag(p,DMG_BULLET_TAKEN));&lt;br /&gt;
	sendPublic(str);&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; parse = parse-&amp;amp;gt;next;&lt;br /&gt;
	&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
    &amp;lt;/blockquote&amp;gt;&amp;lt;a name=&amp;quot;15t&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
t) Make bot spectate specific coordinates&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;font-size: 11px&amp;quot;&amp;gt;&lt;br /&gt;
// make bot spectate the coord 512,600&lt;br /&gt;
// possible use - capturing weapon packets in a specific region&lt;br /&gt;
&lt;br /&gt;
tell(makeFollowing(false));&lt;br /&gt;
tell(makeFlying(true));&lt;br /&gt;
me-&amp;amp;gt;move(512 * 16, 600 * 16);&lt;br /&gt;
tell(makeSendPosition(true));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>D1st0rt</name></author>	</entry>

	<entry>
		<id>http://wiki.minegoboom.com/index.php?title=Talk:MERVBot_Tutorial&amp;diff=1200</id>
		<title>Talk:MERVBot Tutorial</title>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=Talk:MERVBot_Tutorial&amp;diff=1200"/>
				<updated>2005-02-12T16:45:39Z</updated>
		
		<summary type="html">&lt;p&gt;D1st0rt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;D1s: Anybody wanna format this int a table of contents? I'm lazy&lt;br /&gt;
&lt;br /&gt;
[[User:Smong|Smong]]: That is sick. Maybe split into more pages? Says it is over 160k.&lt;br /&gt;
&lt;br /&gt;
[[User:Pests|Pests]]: There is already pages defined. You could just split them up into that.&lt;br /&gt;
&lt;br /&gt;
OK, I'm working on converting it to real HTML (using &amp;amp;lt;pre&amp;amp;gt;) instead of the &amp;amp;amp;nbsp; crap. --[[User:Cyan~Fire|Cyan~Fire]]&lt;br /&gt;
&lt;br /&gt;
== sscanf ==&lt;br /&gt;
&lt;br /&gt;
Well, I'm using sscanf() for parsing player input. Yes, an advanced function, but maybe it will discourage C++ newbs from making bot plugins. Any comments? --[[User:Cyan~Fire|Cyan~Fire]]&lt;br /&gt;
&lt;br /&gt;
D1st0rt: Cool beans. I learned something new :D&lt;/div&gt;</summary>
		<author><name>D1st0rt</name></author>	</entry>

	<entry>
		<id>http://wiki.minegoboom.com/index.php?title=Talk:MERVBot_Tutorial&amp;diff=1156</id>
		<title>Talk:MERVBot Tutorial</title>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=Talk:MERVBot_Tutorial&amp;diff=1156"/>
				<updated>2005-01-30T23:33:23Z</updated>
		
		<summary type="html">&lt;p&gt;D1st0rt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;D1s: Anybody wanna format this int a table of contents? I'm lazy&lt;/div&gt;</summary>
		<author><name>D1st0rt</name></author>	</entry>

	<entry>
		<id>http://wiki.minegoboom.com/index.php?title=MERVBot_Tutorial&amp;diff=1182</id>
		<title>MERVBot Tutorial</title>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=MERVBot_Tutorial&amp;diff=1182"/>
				<updated>2005-01-30T23:31:35Z</updated>
		
		<summary type="html">&lt;p&gt;D1st0rt: Underlord's MERV Tutorial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is the ever-popular MERVBot Tutorial by Underlord:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;&amp;lt;big&amp;gt;MERVBot Tutorial&amp;lt;/big&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
(Written by Underlord)&lt;br /&gt;
&amp;lt;hr width=&amp;quot;500&amp;quot; size=&amp;quot;1&amp;quot; /&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Setup a MERVBot bot and project in visual c++&amp;lt;br /&amp;gt;&lt;br /&gt;
0) &amp;lt;a href=&amp;quot;#0&amp;quot;&amp;gt;Setting up a MERVBot bot&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
  &amp;lt;br /&amp;gt;&lt;br /&gt;
Command.cpp&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;1)&amp;lt;a href=&amp;quot;#1&amp;quot;&amp;gt; Player commands&amp;lt;/a&amp;gt;&lt;br /&gt;
 (!play, !squadA vs squadB)&amp;lt;br /&amp;gt;&lt;br /&gt;
  &amp;lt;br /&amp;gt;&lt;br /&gt;
Spawn.cpp&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;2) &amp;lt;a href=&amp;quot;#2&amp;quot;&amp;gt;Event descriptions&amp;lt;/a&amp;gt;&lt;br /&gt;
 (describe events in spawn.cpp)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;2) &amp;lt;a href=&amp;quot;#2&amp;quot;&amp;gt;Messaging &amp;lt;/a&amp;gt;&lt;br /&gt;
(&amp;amp;quot;*arena hi&amp;amp;quot;, &amp;amp;quot;:player:*scorereset)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;3) &amp;lt;a href=&amp;quot;#3&amp;quot;&amp;gt;MervBot Timer&amp;lt;/a&amp;gt;&lt;br /&gt;
 (do this in 10 seconds)(countdown[n])&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;4) &amp;lt;a href=&amp;quot;#4&amp;quot;&amp;gt;Writing Functions&amp;lt;/a&amp;gt;&lt;br /&gt;
 (bool IsInCenter(Player *p))&amp;lt;br /&amp;gt;&lt;br /&gt;
  &amp;lt;br /&amp;gt;&lt;br /&gt;
Useful operations&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;6) &amp;lt;a href=&amp;quot;#6&amp;quot;&amp;gt;Cycling players&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;7) &amp;lt;a href=&amp;quot;#7&amp;quot;&amp;gt;Check if pilot is in safe zone&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;8) &amp;lt;a href=&amp;quot;#8&amp;quot;&amp;gt;Random numbers&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;9) &amp;lt;a href=&amp;quot;#9&amp;quot;&amp;gt;Time without using countdown[n]&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;br /&amp;gt;&lt;br /&gt;
10) &amp;lt;a href=&amp;quot;#10&amp;quot;&amp;gt;Storing data for pilots&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;br /&amp;gt;&lt;br /&gt;
11) &amp;lt;a href=&amp;quot;#11&amp;quot;&amp;gt;Output data in messages&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;br /&amp;gt;&lt;br /&gt;
12) &amp;lt;a href=&amp;quot;#12&amp;quot;&amp;gt;Input/Output to files&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;br /&amp;gt;&lt;br /&gt;
13) &amp;lt;a href=&amp;quot;#13&amp;quot;&amp;gt;Programming commands&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;br /&amp;gt;&lt;br /&gt;
14) &amp;lt;a href=&amp;quot;#14&amp;quot;&amp;gt;Useful player data&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
15) &amp;lt;a href=&amp;quot;#15&amp;quot;&amp;gt;Bot built in functions&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Example Code&amp;lt;br /&amp;gt;&lt;br /&gt;
  &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;a) &amp;lt;a href=&amp;quot;#15a&amp;quot;&amp;gt;No antiwarp in center of map&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;br /&amp;gt;&lt;br /&gt;
b) &amp;lt;a href=&amp;quot;#15b&amp;quot;&amp;gt;Setting freq size depending on how many pilots in game&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;br /&amp;gt;&lt;br /&gt;
c) &amp;lt;a href=&amp;quot;#15c&amp;quot;&amp;gt;Tracking kills and announcing when pilot gets 10 kills in a row without dying &amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;br /&amp;gt;&lt;br /&gt;
d) &amp;lt;a href=&amp;quot;#15d&amp;quot;&amp;gt;Warp pilot to coord when they are in a certain region&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;br /&amp;gt;&lt;br /&gt;
e) &amp;lt;a href=&amp;quot;#15e&amp;quot;&amp;gt;Structures within structures&amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;lt;br /&amp;gt;&lt;br /&gt;
f) &amp;lt;a href=&amp;quot;#15f&amp;quot;&amp;gt;Tracking flag data&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;br /&amp;gt;&lt;br /&gt;
g) &amp;lt;a href=&amp;quot;#15g&amp;quot;&amp;gt;Example way to do simple /!spam feature&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;br /&amp;gt;&lt;br /&gt;
h) &amp;lt;a href=&amp;quot;#15h&amp;quot;&amp;gt;Example of implementing a simple stack to do &amp;amp;quot;next in line for several 'boxes' at once&amp;amp;quot;&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;br /&amp;gt;&lt;br /&gt;
i) &amp;lt;a href=&amp;quot;#15i&amp;quot;&amp;gt;Example of reading any text from a .txt and printing it to pilot line by line&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;br /&amp;gt;&lt;br /&gt;
j) &amp;lt;a href=&amp;quot;#15j&amp;quot;&amp;gt;Example of printing player stats grid&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;br /&amp;gt;&lt;br /&gt;
k) &amp;lt;a href=&amp;quot;#15k&amp;quot;&amp;gt;Example of checking if any pilots are within a region&amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;lt;br /&amp;gt;&lt;br /&gt;
l) &amp;lt;a href=&amp;quot;#15l&amp;quot;&amp;gt;Example of functions to get a pilot's struct id info from a name or *player info&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;br /&amp;gt;&lt;br /&gt;
m) &amp;lt;a href=&amp;quot;#15m&amp;quot;&amp;gt;Example of creating a logfile name using date and squad names&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;br /&amp;gt;&lt;br /&gt;
n) &amp;lt;a href=&amp;quot;#15n&amp;quot;&amp;gt;Sending messages to playing freqs or public and logging depending on status&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;br /&amp;gt;&lt;br /&gt;
o) &amp;lt;a href=&amp;quot;#15o&amp;quot;&amp;gt;Example of reading in all player/freqs to struct data&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;br /&amp;gt;&lt;br /&gt;
p) &amp;lt;a href=&amp;quot;#15p&amp;quot;&amp;gt;Example of finding MVP from struct data&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;br /&amp;gt;&lt;br /&gt;
q) &amp;lt;a href=&amp;quot;#15q&amp;quot;&amp;gt;Print time stamp of event&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;br /&amp;gt;&lt;br /&gt;
r) &amp;lt;a href=&amp;quot;#15r&amp;quot;&amp;gt;Simple way to track player bomb/bullet damage stats&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;br /&amp;gt;&lt;br /&gt;
s) &amp;lt;a href=&amp;quot;#15s&amp;quot;&amp;gt;Simple way to print those stats&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
t) &amp;lt;a href=&amp;quot;#15t&amp;quot;&amp;gt;Make bot spectate specific coordinates&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
    &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;  &amp;lt;br /&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;/font&amp;gt;&amp;lt;hr width=&amp;quot;500&amp;quot; size=&amp;quot;1&amp;quot; /&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
  &amp;lt;br /&amp;gt;&lt;br /&gt;
  &amp;lt;a name=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;b&amp;gt;[0] Setting up a MERVBot bot (plugin)&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
    &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;MERVBot download site: &amp;amp;nbsp;&amp;lt;a href=&amp;quot;http://catid.sscentral.com&amp;quot;&amp;gt;http://catid.sscentral.com&amp;lt;/a&amp;gt;&lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
MERVBot Forum: &amp;amp;nbsp;&amp;lt;a href=&amp;quot;http://www.ssforum.net&amp;quot;&amp;gt;http://www.ssforum.net&amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;(Development - MervBot forum)&amp;lt;br /&amp;gt;&lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
1) Download &amp;lt;a href=&amp;quot;http://catid.sscentral.com/files/MERVBot.zip&amp;quot;&amp;gt;MERVBot Build 37 (DLL 6.5)&amp;lt;/a&amp;gt;&lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
      &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Unzip MERVBot.zip into a new folder. (example c:program filescontinuummervbot)&amp;lt;br /&amp;gt;&lt;br /&gt;
Unzip src.zip into &amp;amp;quot;/src&amp;amp;quot; subfolder of that new folder (example c:program filescontinuummervbotsrc)&amp;lt;br /&amp;gt;&lt;br /&gt;
        &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;2) Download &amp;lt;a href=&amp;quot;http://catid.sscentral.com/files/Tutorial.zip&amp;quot;&amp;gt;DLL-plugin Tutorial&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
        &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;    Unzip Tutorial.zip into &amp;amp;quot;/tutorial&amp;amp;quot; subfolder of that new folder. (example c:program filescontinuummervbotsrctutorial)&amp;lt;br /&amp;gt;&lt;br /&gt;
(note spawn.h, spawn.cpp, and command.cpp are here)&amp;lt;br /&amp;gt;&lt;br /&gt;
          &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;File descriptions:&amp;lt;br /&amp;gt;&lt;br /&gt;
            &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;spawn.h = declare/initialize globals&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
command.cpp = code for commands coming into bot (ie /!help, /!play, etc)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
spawn.cpp = code for main part of bot&amp;lt;br /&amp;gt;&lt;br /&gt;
              &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Note: if you only want to execute someone's premade&lt;br /&gt;
bot (.dll), skip to step 4 (Run your bot .dll), otherwise continue to learn&lt;br /&gt;
how to make your own bot&amp;lt;br /&amp;gt;&lt;br /&gt;
                &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;3) Microsoft Visual c++&amp;lt;br /&amp;gt;&lt;br /&gt;
                &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;1) Start Visual Studios 6.0&amp;lt;br /&amp;gt;&lt;br /&gt;
                  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Click the Drop Down Menu labbled &amp;amp;quot;File&amp;amp;quot; at the top left of your screen&amp;lt;br /&amp;gt;&lt;br /&gt;
                  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Click &amp;amp;quot;New&amp;amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
                  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) On the next screen that comes up, choose from the Project tab, then Win32 Dynamic-Link Library&amp;lt;br /&amp;gt;&lt;br /&gt;
                  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Select the &amp;amp;quot;/src&amp;amp;quot; folder as the base folder (example c:program filescontinuummervbotsrc)&amp;lt;br /&amp;gt;&lt;br /&gt;
                  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6) Name your project &amp;amp;quot;mybot&amp;amp;quot;. This will make a &amp;amp;quot;mybot&amp;amp;quot; subfolder in your &amp;amp;quot;src&amp;amp;quot; folder. Click OK&amp;lt;br /&amp;gt;&lt;br /&gt;
(example creates c:program filescontinuummervbotsrcmybot)&amp;lt;br /&amp;gt;&lt;br /&gt;
                  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7) Choose to create an &amp;amp;quot;Empty DLL project&amp;amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
                  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8) Click &amp;amp;quot;Finish&amp;amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
                  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9) Click the Drop Down Menu labbled &amp;amp;quot;Project&amp;amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
                  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10) Click &amp;amp;quot;Add To Project Files&amp;amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
                  &amp;lt;br /&amp;gt;&lt;br /&gt;
11) Copy only spawn.h, spawn.cpp, and command.cpp from the &amp;amp;quot;tutorial&amp;amp;quot; folder into the this new folder.&amp;lt;br /&amp;gt;&lt;br /&gt;
(example from c:program filescontinuummervbotsrctutorial to c:program filescontinuummervbotsrcmybot)&amp;lt;br /&amp;gt;&lt;br /&gt;
                  &amp;lt;br /&amp;gt;&lt;br /&gt;
12) Click the Drop Down Menu labelled &amp;amp;quot;Build&amp;amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
                  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
13) Click &amp;amp;quot;Build (dll name)&amp;amp;quot; - where the (dll name) is &amp;amp;quot;mybot&amp;amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
                  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14) Go into your &amp;amp;quot;mybot&amp;amp;quot; folder and look for a folder named &amp;amp;quot;Debug&amp;amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
(example c:program filescontinuummervbotsrcmybotdebug)&amp;lt;br /&amp;gt;&lt;br /&gt;
                  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
15) Your new DLL will be in that folder. (example mybot.dll)&amp;lt;br /&amp;gt;&lt;br /&gt;
                  &amp;lt;br /&amp;gt;&lt;br /&gt;
16) Copy mybot.dll to your base folder that has mervbot.exe in it (example c:program filescontinuummervbot)&amp;lt;br /&amp;gt;&lt;br /&gt;
                  &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;    4) Run your bot dll:&amp;lt;br /&amp;gt;&lt;br /&gt;
                  &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;To run your bot you need your .dll (mybot.dll), Commands.txt, MERVBot.exe,&lt;br /&gt;
MERVBot.ini, Operators.txt, Spawns.txt, subspace.bin, and zlib.dll all in&lt;br /&gt;
one folder (example c:program filescontinuummervbot)&amp;lt;br /&amp;gt;&lt;br /&gt;
                    &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;    Edit spawns.txt (only one line of text in file needed)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
                      &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;bot_name : pw_for_bot_name : arena: dll_plugin : optional_staff_password&amp;lt;br /&amp;gt;&lt;br /&gt;
                        &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Example: 2v2-Bot-League : botpw: 2v2a: 2v2league : staffpw&amp;lt;br /&amp;gt;&lt;br /&gt;
                          &amp;lt;br /&amp;gt;&lt;br /&gt;
- You should create your bot name and pw using your Continuum client as you would create any new name. &amp;lt;br /&amp;gt;&lt;br /&gt;
                          &amp;lt;br /&amp;gt;&lt;br /&gt;
- There is no * in front of staffpw. &amp;lt;br /&amp;gt;&lt;br /&gt;
                          &amp;lt;br /&amp;gt;&lt;br /&gt;
- Bot needs to be on vip.txt or have moderator+ access to enter a zone.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Edit MERVBot.ini&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &lt;br /&gt;
                          &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;[Login]&amp;lt;br /&amp;gt;&lt;br /&gt;
Zone=216.33.98.254:21000 &amp;amp;nbsp; &amp;amp;nbsp;// make that your zone IP:PORT available from zone.dat in Continuum dir&amp;lt;br /&amp;gt;&lt;br /&gt;
        &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;        &lt;br /&gt;
        Edit operators.txt&amp;lt;br /&amp;gt;&lt;br /&gt;
                            &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;          access_level : name :&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
            &lt;br /&gt;
                              &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Example: &amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4:my_name:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4:another_sysop:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3:other_person:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;          Run MERVBot.exe&amp;lt;br /&amp;gt;&lt;br /&gt;
                                  &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                Double click MERVBot.exe, the bot should now enter the zone&amp;lt;br /&amp;gt;&lt;br /&gt;
                                    &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Modify your MERVBot code&amp;lt;br /&amp;gt;&lt;br /&gt;
                                        &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;You can open your MERVBot project by opening &amp;amp;quot;mybot.dsw&amp;amp;quot; file with visual c++&amp;lt;br /&amp;gt;&lt;br /&gt;
(example c:program filescontinuummervbotsrcmybotmybot.dsw)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                          &amp;lt;br /&amp;gt;&lt;br /&gt;
Edit the spawn.h, spawn.cpp, and command.cpp to create your bot, then build,&lt;br /&gt;
copy your updated dll to your MERVBot.exe folder and then execute the bot.&amp;lt;br /&amp;gt;&lt;br /&gt;
                                          &amp;lt;br /&amp;gt;&lt;br /&gt;
Use the tutorial to get ideas on how to implement certain types of features into the bot.&amp;lt;br /&amp;gt;&lt;br /&gt;
                                          &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;a name=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;[1] Player Commands - (command.cpp)&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
  &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;div align=&amp;quot;left&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;This section describes how to implement player commands into MERVBot &amp;lt;br /&amp;gt;&lt;br /&gt;
(example: if you want /!test to make the bot respond with &amp;amp;quot;hi&amp;amp;quot;)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
In command.cpp&amp;lt;br /&amp;gt;&lt;br /&gt;
    &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;void botInfo::gotCommand(Player *p, Command *c) {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;switch (p-&amp;amp;gt;access) {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;case OP_Player:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;if (c-&amp;amp;gt;check(&amp;amp;quot;test&amp;amp;quot;))&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;sendPrivate(p,&amp;amp;quot;hi&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;br /&amp;gt;&lt;br /&gt;
      &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;You just put your player command where 'test' is, then what you want that command to do.&amp;lt;br /&amp;gt;&lt;br /&gt;
If you want the command to be for moderators you put it in the OP_Moderator section instead&amp;lt;br /&amp;gt;&lt;br /&gt;
      &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;case OP_Moderator:&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// Moderator-level commands&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // Note: Moderators&lt;br /&gt;
can do Player commands, SuperModerator can do Moderator and Player commands,&lt;br /&gt;
etc&amp;lt;br /&amp;gt;&lt;br /&gt;
        &amp;lt;br /&amp;gt;&lt;br /&gt;
How to have commands with numerical input - (ie !test 1)&amp;lt;br /&amp;gt;&lt;br /&gt;
        &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;if (c-&amp;amp;gt;check(&amp;amp;quot;test&amp;amp;quot;)) { // reads in test #, default to 1 if invalid number input&amp;lt;br /&amp;gt;&lt;br /&gt;
          &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;int temp = 1;&amp;lt;br /&amp;gt;&lt;br /&gt;
          &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;if (isNumeric(c-&amp;amp;gt;final))&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;temp = atoi(c-&amp;amp;gt;final);&amp;lt;br /&amp;gt;&lt;br /&gt;
          &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;          &amp;lt;br /&amp;gt;&lt;br /&gt;
How to have player name as input - (ie !rank player)&amp;lt;br /&amp;gt;&lt;br /&gt;
          &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;if (c-&amp;amp;gt;check(&amp;amp;quot;rank&amp;amp;quot;)) {&amp;lt;br /&amp;gt;&lt;br /&gt;
            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;String player_name = c-&amp;amp;gt;final;&amp;lt;br /&amp;gt;&lt;br /&gt;
            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;if (player_name.IsEmpty())&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// default name to self if invalid name&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;player_name = p-&amp;amp;gt;name;&amp;lt;br /&amp;gt;&lt;br /&gt;
            &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;            &amp;lt;br /&amp;gt;&lt;br /&gt;
How to have complicated input - (ie !squads squadA vs squadB _OR_ !squads teamA:squadA:teamB:squadB)&amp;lt;br /&amp;gt;&lt;br /&gt;
            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;you parse the c-&amp;amp;gt;final message&lt;br /&gt;
looking for identifiers, then divide the string to get the values&amp;lt;br /&amp;gt;&lt;br /&gt;
            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;else if (c-&amp;amp;gt;check(&amp;amp;quot;squads&amp;amp;quot;))&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;strncpy(squadA, &amp;amp;quot;&amp;amp;quot;, 20);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;strncpy(squadB, &amp;amp;quot;&amp;amp;quot;, 20);&amp;lt;br /&amp;gt;&lt;br /&gt;
            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;char s[256];&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;strncpy(s,c-&amp;amp;gt;final,255);&amp;lt;br /&amp;gt;&lt;br /&gt;
            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;int l= strlen(s) - 1;&amp;lt;br /&amp;gt;&lt;br /&gt;
            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;for (int i=0; i&amp;amp;lt;l; i++)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// team1 vs team2&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;if ((s[i]==' ') &amp;amp;amp;&amp;amp;amp; (s[i+1]=='v') &amp;amp;amp;&amp;amp;amp; (s[i+2]=='s') &amp;amp;amp;&amp;amp;amp;&lt;br /&gt;
(s[i+3]==' '))&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; s[i]=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; strncpy(squadA, s,20);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; s[i]=' ';&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; strncpy(squadB, &amp;amp;amp;(s[i+4]),20);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; break;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// freq1:team1:freq2:team2&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;if (s[i] == ':')&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;char s2[256];&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;teamA = atoi(s);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;strncpy(s2,&amp;amp;amp;(s[i+1]),255);&amp;lt;br /&amp;gt;&lt;br /&gt;
            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;for (int j=0; j &amp;amp;lt; strlen(s2); j++)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;if (s2[j] == ':')&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;char s3[256];&amp;lt;br /&amp;gt;&lt;br /&gt;
            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;s2[j]=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;strncpy(squadA,s2,20);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;s2[j]=':';&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;strncpy(s3,&amp;amp;amp;(s2[j+1]),255);&amp;lt;br /&amp;gt;&lt;br /&gt;
            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;for (int k=0;&lt;br /&gt;
k&amp;amp;lt;strlen(s3); k++)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;if (s3[k]==':')&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;{&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;teamB = atoi(s3);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;strncpy(squadB,&amp;amp;amp;(s3[k+1]),20);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;break;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;}&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;break;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;break;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
            &amp;lt;/font&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;// Example of a help menu (!help) spawn.h&amp;lt;br /&amp;gt;&lt;br /&gt;
                                &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;void botInfo::gotHelp(Player *p, Command *c)&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (!*c-&amp;amp;gt;final)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPrivate(p, &amp;amp;quot;4v4 Bot General Commands:&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPrivate(p, &amp;amp;quot;------------------------&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
        &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPrivate(p, &amp;amp;quot;!caps&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
    - get captain names&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPrivate(p, &amp;amp;quot;!roster &amp;amp;lt;squad&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; - get roster of a squad&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPrivate(p, &amp;amp;quot;!schedule&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
- get current schedule&amp;amp;quot;);&amp;lt;br /&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;sendPrivate(p,&lt;br /&gt;
&amp;amp;quot;!score&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
- get current score&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
                                  &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;a name=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;[2] Event Call Descriptions - in spawn.cpp&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
            &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;MERVBot is event based, so when making a bot you need to decide what will happen at certain events&amp;lt;br /&amp;gt;&lt;br /&gt;
Normal plugins need to consider what happens when bot enters arena, player enters arena, player leaves arena, &amp;lt;br /&amp;gt;&lt;br /&gt;
player events like kill, shipchange, teamchange, spec, move then any other relevent events to your bot&amp;lt;br /&amp;gt;&lt;br /&gt;
just worry about events that are relevent to the tasks your bot is doing&amp;lt;br /&amp;gt;&lt;br /&gt;
                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
// Timer&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_Tick: &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called 1x/sec, decrementing each countdown[n] by 1, use for time triggered events&amp;lt;br /&amp;gt;&lt;br /&gt;
              &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Arena Events&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_ArenaEnter: &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when bot enters arena&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_ArenaSettings: &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when bot gets arena settings&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_ArenaLeave:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when bot exits arena&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_ArenaListEntry: &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when bot gets an entry from the arena list (esc-a)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_ArenaListEnd: &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when bot reads last entry of arena list (esc-a)&amp;lt;br /&amp;gt;&lt;br /&gt;
              &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Flag Events&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_FlagGrab:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when a pilot picks up a loose flag&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_FlagDrop:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when a pilot drops a flag (timer runs out)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_FlagMove:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when a flag moves&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_FlagVictory:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when a team wins flag game (gets all flags)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_FlagReward:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when theres a periodic flag reward given&amp;lt;br /&amp;gt;&lt;br /&gt;
              &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Timed Game&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_TimedGameOver:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when a timed game is over (like speed zone game)&amp;lt;br /&amp;gt;&lt;br /&gt;
              &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Soccer&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_SoccerGoal:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when a soccer goal is scored&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_BallMove:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when a soccer ball moves&amp;lt;br /&amp;gt;&lt;br /&gt;
              &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Receive file&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_File:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when a file is received (*getfile)&amp;lt;br /&amp;gt;&lt;br /&gt;
              &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Player events&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_PlayerEntering:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when a pilot enters the arena&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_PlayerMove:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when a pilot's ship moves&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_PlayerWeapon:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when a pilot fires a weapon&amp;lt;br /&amp;gt;&lt;br /&gt;
 case EVENT_WatchDamage:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when&lt;br /&gt;
a pilot takes damage (bot must have /*watchdamage on for them)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_PlayerDeath:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when a pilot dies&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_PlayerScore:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when a pilot changes their score (?scorereset)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_PlayerPrize:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when a pilot gets a prize (green)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_PlayerShip:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when a pilot ship changes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_PlayerSpec:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when a pilot spectates&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_PlayerTeam:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when a pilot changes freqs&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_PlayerLeaving:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when a pilot exits arena (esc-q, ?go &amp;amp;lt;arena&amp;amp;gt;, or lagout)&amp;lt;br /&amp;gt;&lt;br /&gt;
              &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Bot events&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_SelfShipReset:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when bot's ship gets reset&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_SelfPrize:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when bot gets a prize (green)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_SelfUFO:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when bot toggles UFO mode&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_PositionHook:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when &amp;amp;quot;Core is requesting the DLL to send a position packet&amp;amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
              &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Brick&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_BrickDropped:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when a pilot uses a brick&amp;lt;br /&amp;gt;&lt;br /&gt;
              &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Objects&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_ObjectToggled:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when a .lvz object is toggled on/off&amp;lt;br /&amp;gt;&lt;br /&gt;
              &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Turrets&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_CreateTurret:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when a pilot attaches to another pilot (f7)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_DeleteTurret:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when a pilot detaches from a turret&amp;lt;br /&amp;gt;&lt;br /&gt;
              &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Messages&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_Chat:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when bot gets a chat message&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_LocalCommand:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when bot gets a player command from arena&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_LocalHelp:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when bot gets a player !help command&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_RemoteCommand:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when bot gets a command from outside arena&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_RemoteHelp:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when bot gets a player !help command from outside arena&amp;lt;br /&amp;gt;&lt;br /&gt;
              &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_Init:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when DLL is loaded&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
case EVENT_Term:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- called when DLL is unloaded&amp;lt;br /&amp;gt;&lt;br /&gt;
              &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;              &amp;lt;br /&amp;gt;&lt;br /&gt;
              &amp;lt;a name=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;[3] Messaging - How to use the messaging system&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
              &lt;br /&gt;
                                                          &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Private message - void sendPrivate(Player *player, char *msg);&amp;lt;br /&amp;gt;&lt;br /&gt;
                &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Examples:&amp;lt;br /&amp;gt;&lt;br /&gt;
a) sendPrivate(p,&amp;amp;quot;hi&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
b) String s=&amp;amp;quot;test&amp;amp;quot;; sendPrivate(p,s);&amp;lt;br /&amp;gt;&lt;br /&gt;
c) String s=&amp;amp;quot;test&amp;amp;quot;; s += &amp;amp;quot;ing&amp;amp;quot;; sendPrivate(p,s);&amp;lt;br /&amp;gt;&lt;br /&gt;
                  &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;d) char captain1[20]; char captain2[20];&amp;lt;br /&amp;gt;&lt;br /&gt;
strncpy(captain1,&amp;amp;quot;&amp;amp;quot;,20); strncpy(captain2,&amp;amp;quot;&amp;amp;quot;,20);&amp;lt;br /&amp;gt;&lt;br /&gt;
sendPrivate(p,(String) captain1 + &amp;amp;quot; and &amp;amp;quot; + (String) captain2 + &amp;amp;quot; are the captains.&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
                    &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Team message - void sendTeamPrivate(Uint16 team, char *msg);&amp;lt;br /&amp;gt;&lt;br /&gt;
                          &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Examples: &amp;lt;br /&amp;gt;&lt;br /&gt;
a) sendTeamPrivate(8025,&amp;amp;quot;hi spec freq&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
b) Uint16 test=0; sendTeamPrivate(test,&amp;amp;quot;hi freq 0&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
                            &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Public message - void sendPublic(char *msg);&amp;lt;br /&amp;gt;&lt;br /&gt;
                              &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Example: sendPublic(&amp;amp;quot;*arena &amp;amp;quot; + (String) p-&amp;amp;gt;name + &amp;amp;quot; is now a captain&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Chat channel message - void sendChannel(char *msg);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Example: sendChannel(&amp;amp;quot;hi chat channel&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                  &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Remote private message - void sendRemotePrivate(char *name, char *msg);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                  &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Example: sendRemotePrivate(&amp;amp;quot;Player01&amp;amp;quot;, &amp;amp;quot;hi&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                    &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Note: to have bot print several lines of text fast it needs sysop in the&lt;br /&gt;
arena (sysop in arena bot first spawns to also) otherwise it'll print slow to avoid being&lt;br /&gt;
kicked for spam&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                            &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
                                    &amp;lt;a name=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;[4] Timer - How to use the timing function&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                    &lt;br /&gt;
                                                    &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Setup number of timers and initialize:&amp;lt;br /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;// spawn.h - specify how many timers&amp;lt;br /&amp;gt;&lt;br /&gt;
                                        &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;class botInfo&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
int countdown[10];&amp;amp;nbsp;&amp;amp;nbsp; // this gives you 10 timers&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;// spawn.h - initialize timers&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;public:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;botInfo(CALL_HANDLE given)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;countdown[0] = 0;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;countdown[1] = 60; // 60 seconds&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;//&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// initialize values&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;//&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;countdown[9] = 5*60; // 5 minutes&amp;lt;br /&amp;gt;&lt;br /&gt;
                                            &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                            Using timer functions:&amp;lt;br /&amp;gt;&lt;br /&gt;
                                            &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; // in spawn.cpp&amp;lt;br /&amp;gt;&lt;br /&gt;
                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;case EVENT_Tick:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;for (int i = 0; i &amp;amp;lt; 10; ++i)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;--countdown[i];&amp;lt;br /&amp;gt;&lt;br /&gt;
                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;if (countdown[1] == 2) // when timer #1 hits two seconds&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// do stuff here when timer #1 hits 2 seconds&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// example: sendPublic(&amp;amp;quot;two seconds left, setting timer to 1 minute&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// example: countdown[1] = 60;&amp;amp;nbsp; // change timer #1 value&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;br /&amp;gt;&lt;br /&gt;
                                              &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;Notes:&amp;amp;nbsp; - In the &amp;amp;quot;for&amp;amp;quot; loop, you want &amp;amp;quot;i &amp;amp;lt; 10&amp;amp;quot; to be the number of timers from spawn.h&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- The timer is in seconds. EVENT_Tick is called once per second.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- The timers decrease by one each second down, not stopping at 0.&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;- You can change the value of the countdown[n]'s in other parts of the program&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;(ie.&amp;amp;nbsp; case EVENT_PlayerDeath: { countdown[1] = 45;&amp;amp;nbsp; // set timer #1 to 45 sec&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;everytime someone dies)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                               &amp;lt;br /&amp;gt;&lt;br /&gt;
                                                &amp;lt;a name=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;[5] Writing Functions&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Write your function in spawn.cpp at top of file in the //////// DLL &amp;amp;quot;import&amp;amp;quot; //////// section&lt;br /&gt;
                                                     &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;//////// DLL &amp;amp;quot;import&amp;amp;quot; ////////&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;bool closeto(Player *p, int x, int y, int tolerance)&amp;amp;nbsp; // note uses abs() function declared elsewhere&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // return if player&lt;br /&gt;
p is in area of square with center x,y and radius = tolerance&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;return (abs((p-&amp;amp;gt;tile.x) - x) &amp;amp;lt;&lt;br /&gt;
tolerance) &amp;amp;amp;&amp;amp;amp; (abs((p-&amp;amp;gt;tile.y) - y) &amp;amp;lt; tolerance);&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                                                        &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                                         If&lt;br /&gt;
you want your function to have access to data from the spawn.h botInfo section&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                        &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;public:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;botInfo(CALL_HANDLE given)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                          &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; // then you need to make your spawn.cpp function in the format:&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                          &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;bool botInfo::closeto(Player *p, int x, int y, int tolerance)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; // function here&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                &amp;lt;br /&amp;gt;&lt;br /&gt;
Include function in spawn.h at bottom of file with the other functions&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;public:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;botInfo(CALL_HANDLE given)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;bool closeto(Player *p, int x, int y, int tolerance); &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;// your new function. note: w/o botInfo keyword and with a ;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;void clear_objects();&amp;amp;nbsp; // functions already there&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;void object_target(Player *p); // functions already there&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Pass values by reference&lt;br /&gt;
                                                                                    &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;bool botInfo::closeto(Player *p, int&amp;amp;amp; x, int y, int tolerance) &amp;amp;nbsp;// note the &amp;amp;amp;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                      &amp;lt;br /&amp;gt;&lt;br /&gt;
bool is_close = closeto(p,x,y,tolerance); &amp;amp;nbsp;// if x is changed in closeto() its saved here &amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                      &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Pass array as parameter&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                        &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;int freqs[5];&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                          &amp;lt;br /&amp;gt;&lt;br /&gt;
my_function(freqs); &amp;amp;nbsp;// call function - notice freqs and not freqs[5] or freqs[]&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                          &amp;lt;br /&amp;gt;&lt;br /&gt;
void my_function(int freqs[]) {} &amp;amp;nbsp;// function - notice freqs[] and not freqs[5] or freqs&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                          &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;a name=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;[6] Cycling players- How to search through the players in the arena&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                          &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;_listnode &amp;amp;lt;Player&amp;amp;gt; *parse = playerlist-&amp;amp;gt;head;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;while (parse)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;Player *p = parse-&amp;amp;gt;item;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// do functionality here&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// Example 1: sendPrivate(p,&amp;amp;quot;*watchdamage&amp;amp;quot;); // turns on all pilot's watchdamage&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// Example 2: if (p-&amp;amp;gt;safety != 0)&lt;br /&gt;
sendPrivate(p,&amp;amp;quot;*spec&amp;amp;quot;); // spec all pilots in safe zone&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;parse = parse-&amp;amp;gt;next&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                            &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
                                                            &amp;lt;a name=&amp;quot;7&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;b&amp;gt;&lt;br /&gt;
[7] Checking if pilot is in a safe zone&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                            &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;if (p-&amp;amp;gt;safety != 0)&amp;amp;nbsp; // pilot is in a safe zone&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;if (p-&amp;amp;gt;safety == 0)&amp;amp;nbsp; // pilot is NOT in a safe zone&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;To detect a pilot entering a safe zone do:&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;case EVENT_PlayerMove:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;if (p-&amp;amp;gt;safety != 0)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                              &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                              &amp;lt;a name=&amp;quot;8&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;[8] Random number &amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                              &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Method 1 (completely random)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;#include &amp;amp;quot;time.h&amp;amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;srand(time(NULL));&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;rand();&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;int temp = (int) (51 * ((float)rand()/RAND_MAX));&amp;amp;nbsp; // returns a random integer between 0 and 51&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                  &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
Method 2 (random pilot in arena)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                  &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;#include &amp;amp;lt;stdlib.h&amp;amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;int temp = GetTickCount() % getIngame();&amp;amp;nbsp; // getIngame() = how many pilots in arena&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;_listnode &amp;amp;lt;Player&amp;amp;gt; *parse = playerlist-&amp;amp;gt;head;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;while (parse)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;Player *p = parse-&amp;amp;gt;item;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;if (p-&amp;amp;gt;ship != SHIP_Spectator){&amp;amp;nbsp; // if not in spec&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;if (!(--temp) {&amp;amp;nbsp; // decrement temp, if its 0, make this pilot rabbit&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;rabbit = p;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;break;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;parse = parse-&amp;amp;gt;next;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                    &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                    &amp;lt;a name=&amp;quot;9&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;[9] Tracking time not using countdown[n] &amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                    &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;#include &amp;amp;lt;stdlib.h&amp;amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                      &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;int temp = GetTickCount(); // get time stamp&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// later in program&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;temp = (GetTickCount() - temp)/1000; // how many seconds have passed&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                      &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                                                     &amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                      &amp;lt;a name=&amp;quot;10&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;b&amp;gt;&lt;br /&gt;
[10] Storing data for pilots&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                      &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;There are several ways to store data for pilots (ie tracking flagtime or kills in a period of time)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                        &amp;lt;br /&amp;gt;&lt;br /&gt;
1) get/setTag - use if you only want to track data until pilot leaves arena then its erased&amp;lt;br /&amp;gt;&lt;br /&gt;
built in tags track by an ID that is reset when pilot leaves/enters arena, so loses track of data once they leave arena&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                        &amp;lt;br /&amp;gt;&lt;br /&gt;
2) modified perm get/setTag - use if you want to track all pilots even if they leave (advantage - easier to sort by player)&amp;lt;br /&amp;gt;&lt;br /&gt;
also can track near unlimited amount of pilots&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                        &amp;lt;br /&amp;gt;&lt;br /&gt;
3) structs - use to track all pilots even if they leave, (advantage -&lt;br /&gt;
easier to sort by freqs), have to specify bound of players&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                        &amp;lt;br /&amp;gt;&lt;br /&gt;
note: 2 and 3 are similar in effect, mostly the difference is in how you are able to search through data&amp;lt;br /&amp;gt;&lt;br /&gt;
you need to decide which method of storing data is best for each bot depending on what it does&amp;lt;br /&amp;gt;&lt;br /&gt;
beware using modified perm get/setTag if bot is in an arena for long periods&lt;br /&gt;
of time, data is not reset so the linkedlist could get huge&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                        &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// initialize values in spawn.h at very top&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                        &amp;lt;br /&amp;gt;&lt;br /&gt;
1) Built in get/setTag method&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;#define DMG_DEALT&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;0&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;#define DMG_TAKEN&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;1&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// in spawn.cpp initialize the values on arena-enter and player-enter&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;case EVENT_ArenaEnter: {&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;_listnode &amp;amp;lt;Player&amp;amp;gt; *parse = playerlist-&amp;amp;gt;head;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;while (parse) // do for all pilots in arena when bot enters&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;Player *p = parse-&amp;amp;gt;item;&amp;amp;nbsp; // get pilot&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;set_tag(p, DMG_DEALT, 0); // initialize to 0&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;set_tag(p, DMG_TAKEN, 0);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;sendPrivate(p,&amp;amp;quot;*watchdamage&amp;amp;quot;);&amp;amp;nbsp;&lt;br /&gt;
// optionally turn on player *watchdamage&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;parse = parse-&amp;amp;gt;next;&amp;amp;nbsp; // get next pilot&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;case EVENT_PlayerEntering: {&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;set_tag(p, DMG_DEALT, 0); // initialize to 0&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;set_tag(p, DMG_TAKEN, 0);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;sendPrivate(p,&amp;amp;quot;*watchdamage&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// then somewhere edit the tag values&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;case EVENT_WatchDamage:&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// sets tag for k (shooter) to be old value plus damage dealt currently&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;set_tag(k, DMG_BOMB_DEALT, get_tag(k, DMG_BOMB_DEALT) + damage);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;// how to retrieve the tag values&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;// as a command in spawn.h&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;else if (c-&amp;amp;gt;check(&amp;amp;quot;showstats&amp;amp;quot;)) {&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;int temp = get_tag(p, DMG_TOTAL_DEALT);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;String s = &amp;amp;quot;You've done &amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;s += temp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;s += &amp;amp;quot; damage so far!&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;sendPrivate(p,s);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// kill tags when player leaves arena&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;case EVENT_PlayerLeaving: {&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;killTags(p);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                            &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;2) Modified permanent get/setTag method&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                            &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;// same as get/setTag with some modifications to the tag code, then can use tags exactly as above&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
// spawn.h, add char name[20]; into struct PlayerTag&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                              &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;struct PlayerTag&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Player *p;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; char name[20];&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int index;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int data;&amp;lt;br /&amp;gt;&lt;br /&gt;
};&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;// spawn.cpp, modifications&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;case EVENT_PlayerLeaving:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Player *p = (Player*)event.p[0];&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // killTags(p); &amp;amp;nbsp;// remove so tag not deleted on arena exit&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                  &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;int botInfo::get_tag(Player *p, int index)&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; _listnode &amp;amp;lt;PlayerTag&amp;amp;gt; *parse = taglist.head;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; PlayerTag *tag;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; while (parse)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; tag = parse-&amp;amp;gt;item;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // if (tag-&amp;amp;gt;p == p)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (strcmp(tag-&amp;amp;gt;name,p-&amp;amp;gt;name)==0) &amp;amp;nbsp;// now tracking by player name, not ID&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (tag-&amp;amp;gt;index == index)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return tag-&amp;amp;gt;data;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; parse = parse-&amp;amp;gt;next;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return 0;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
void botInfo::set_tag(Player *p, int index, int data)&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; _listnode &amp;amp;lt;PlayerTag&amp;amp;gt; *parse = taglist.head;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; PlayerTag *tag;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; while (parse)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; tag = parse-&amp;amp;gt;item;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; //if (tag-&amp;amp;gt;p == p)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; if (strcmp(tag-&amp;amp;gt;name,p-&amp;amp;gt;name)==0) // now tracking by player name, not ID&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (tag-&amp;amp;gt;index == index)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; tag-&amp;amp;gt;data = data;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; parse = parse-&amp;amp;gt;next;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; tag = new PlayerTag;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // tag-&amp;amp;gt;p = p; // not tracking by ID anymore&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strncpy(tag-&amp;amp;gt;name, p-&amp;amp;gt;name, 20); // tracking by player name&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; tag-&amp;amp;gt;index = index;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; tag-&amp;amp;gt;data = data;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; taglist.append(tag);&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;3) Using Struct's&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                            &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;struct name&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
                                                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// variables&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;};&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
// Example: (in spawn.h)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                              &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;class botInfo&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                &amp;lt;br /&amp;gt;&lt;br /&gt;
struct freqdata {&amp;lt;br /&amp;gt;&lt;br /&gt;
int kills;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;int deaths; &amp;lt;br /&amp;gt;&lt;br /&gt;
};&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                &amp;lt;br /&amp;gt;&lt;br /&gt;
freqdata freqs[100]; // 100 of those structs&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                &amp;lt;br /&amp;gt;&lt;br /&gt;
// then access it in spawn.cpp using&amp;lt;br /&amp;gt;&lt;br /&gt;
freqs[56].kills = 1;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                                                                &amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                                                                &amp;lt;a name=&amp;quot;11&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;[11] Output of data/messages&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;using normal Strings&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// does *arena X pilots left in the game.&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; String s = &amp;amp;quot;*arena &amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; s += temp;&amp;amp;nbsp; // some variable (int)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; s += &amp;amp;quot; pilots left in the game.&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; sendPublic(s)&amp;lt;br /&amp;gt;               &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                      &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;OR&amp;lt;br /&amp;gt; &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                      &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;sendPublic(&amp;amp;quot;*arena &amp;amp;quot; + (String) temp + &amp;amp;quot; pilots left in the game.&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
 &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                                                               &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;example using sprintf to align/space data&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                &amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// output data&lt;br /&gt;
will be in this approximate format (not lined up perfectly because of html)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                &amp;lt;br /&amp;gt;&lt;br /&gt;
             &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;//&lt;br /&gt;
----------------------------------------------------------------------------------------&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// Squad: squadname&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
PTS&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; FPTS&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;K&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;D&amp;amp;nbsp; DMG DEALT&lt;br /&gt;
TAKEN&amp;amp;nbsp; &amp;amp;nbsp;F&amp;amp;nbsp; FK&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; FLT&amp;lt;br /&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// ----------------------------------------------------------------------------------------&amp;lt;br /&amp;gt;&lt;br /&gt;
             &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;//&lt;br /&gt;
PlayerA&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;     &lt;br /&gt;
 &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;10000 &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;500 &lt;br /&gt;
  116  101&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &lt;br /&gt;
   9999&amp;amp;nbsp;  &amp;amp;nbsp; 99999 10 150 980:55&amp;lt;br /&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;// PlayerB&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; 500&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
200&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; 7&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; 5&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; 9999&amp;amp;nbsp; &amp;amp;nbsp; 99999&amp;amp;nbsp; 5&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp;3&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; 0:04&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;char str[255];&amp;lt;br /&amp;gt;&lt;br /&gt;
               &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;sendPublic(&amp;amp;quot;*arena----------------------------------------------------------------------------------&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;sprintf(str, &amp;amp;quot;*arena&lt;br /&gt;
Squad: %-20s&amp;amp;nbsp;&amp;amp;nbsp; PTS&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; FPTS&amp;amp;nbsp;&amp;amp;nbsp; K&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
D&amp;amp;nbsp; DMG DEALT&amp;amp;nbsp; TAKEN&amp;amp;nbsp; F&amp;amp;nbsp; FK&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; FLT&amp;amp;quot;,freqs[freq].freqname);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;sendPublic(str);&amp;lt;br /&amp;gt;&lt;br /&gt;
               &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;sendPublic(&amp;amp;quot;*arena----------------------------------------------------------------------------------&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// assuming existing freqs struct with data&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;for (pilot=freqs[freq].playercount-1; pilot&amp;amp;gt;=0; pilot--)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// on freq squad so print stats&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;char outString[255];&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;sprintf(outString,&lt;br /&gt;
&amp;amp;quot;*arena %-20s %12d %8d %3d %3d %10d %6d %2d %3d %3d:%02d&amp;amp;quot;,freqs[freq].pilots[pilot].name,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;freqs[freq].pilots[pilot].points,&lt;br /&gt;
freqs[freq].pilots[pilot].flagpoints, freqs[freq].pilots[pilot].kills,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;freqs[freq].pilots[pilot].deaths,&lt;br /&gt;
freqs[freq].pilots[pilot].dmgdealt, freqs[freq].pilots[pilot].dmgtaken,freqs[freq].pilots[pilot].flags,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;freqs[freq].pilots[pilot].flagkills, freqs[freq].pilots[pilot].flagtime&lt;br /&gt;
/60, freqs[freq].pilots[pilot].flagtime %60);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;sendPublic(outString);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// Notes: sprintf&lt;br /&gt;
format = sprintf(output char string, spacing, variables)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// Notes: s = chars, d = integer, - = left align, right align default&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// Notes: doing&lt;br /&gt;
%02d = put 0 in front if not 2 digits, %3d:%02d makes 0:04 format&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                &amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                &amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                &amp;lt;a name=&amp;quot;12&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;[12] Input/Output to files &amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Input to file&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                  &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;// example reading from duel.ini looking for line that starts with MaxBoxes= then taking the next char as value to store as &amp;lt;br /&amp;gt;&lt;br /&gt;
// MAX_BOXES (ie duel.ini = MaxBoxes=5)&amp;lt;br /&amp;gt;&lt;br /&gt;
#include &amp;amp;lt;fstream&amp;amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
using namespace std;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
ifstream file(&amp;amp;quot;duel.ini&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; char line[256];&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // read in MaxBoxes=X&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; while (file.getline(line, 256))&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (CMPSTART(&amp;amp;quot;MaxBoxes=&amp;amp;quot;, line))&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; MAX_BOXES = atoi(&amp;amp;amp;(line[9]));&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; break;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                    &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Output to file&amp;lt;br /&amp;gt;                                                     &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                    &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;// normal char output&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
       &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;#include &amp;amp;lt;fstream&amp;amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
using namespace std;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                                                                                      &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ofstream file(&amp;amp;quot;duelleaguestat.inc&amp;amp;quot;, ios::app); &amp;amp;nbsp; // app = put all data at end of file&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                                                                                      &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
file &amp;amp;lt;&amp;amp;lt; squad1&amp;amp;lt;&amp;amp;lt; endl; &amp;amp;nbsp;// squad1 = char[20]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
file &amp;amp;lt;&amp;amp;lt; &amp;amp;quot; vs &amp;amp;quot;&amp;amp;lt;&amp;amp;lt; endl;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
file &amp;amp;lt;&amp;amp;lt; squad2&amp;amp;lt;&amp;amp;lt; endl; &amp;amp;nbsp;// squad2 = char[20]&amp;lt;br /&amp;gt;      &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
  &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                                                        &lt;br /&gt;
                                                      // how to output String's&lt;br /&gt;
to file (key is converting String to (char*) to file write)&amp;lt;br /&amp;gt;        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;String str = freqs[freq].slotname[slot];&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
str += &amp;amp;quot;, Repels: &amp;amp;quot; + (String)(int) t-&amp;amp;gt;repel;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
outf &amp;amp;lt;&amp;amp;lt; endl;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
outf &amp;amp;lt;&amp;amp;lt; (char*) str;&amp;lt;br /&amp;gt;                                         &lt;br /&gt;
                                                                        &lt;br /&gt;
                                          &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                                                                                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
// date and time stamp&amp;lt;br /&amp;gt;                                             &lt;br /&gt;
                                                                        &lt;br /&gt;
                                      &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;#include &amp;amp;quot;time.h&amp;amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
char u[100];&amp;lt;br /&amp;gt;&lt;br /&gt;
time_t t=time(NULL);&amp;lt;br /&amp;gt;&lt;br /&gt;
tm *tmp = localtime(&amp;amp;amp;t);&amp;lt;br /&amp;gt;&lt;br /&gt;
strftime(u,99,&amp;amp;quot;%c&amp;amp;quot;,tmp);&amp;lt;br /&amp;gt;&lt;br /&gt;
sendPublic(&amp;amp;quot;Date and time: &amp;amp;quot; + (String) u);&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                                                                                      &lt;br /&gt;
                                                                                      &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Example reading input from file using &amp;amp;quot;GetPrivateProfileString&amp;amp;quot; (from rampage plugin)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                        &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;format of rampage.ini&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                          &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;7=is on a killing spree! (6:0)&amp;lt;br /&amp;gt;10=is opening a can of whoop-ass! (9:0)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                            &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;read input&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                            &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;rampageini.h&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                              &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;#pragma once&amp;lt;br /&amp;gt;&lt;br /&gt;
#ifndef RAMPAGEINI_H&amp;lt;br /&amp;gt;&lt;br /&gt;
#define RAMPAGEINI_H&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                                &amp;lt;br /&amp;gt;&lt;br /&gt;
#define NUM_RANKS 10&amp;lt;br /&amp;gt;&lt;br /&gt;
#define BUFFER_LEN 256&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                                &amp;lt;br /&amp;gt;&lt;br /&gt;
struct RampageSettings&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; char quotes[NUM_RANKS][BUFFER_LEN];&amp;lt;br /&amp;gt;&lt;br /&gt;
};&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                                &amp;lt;br /&amp;gt;&lt;br /&gt;
void LoadSettings(RampageSettings &amp;amp;amp;setts);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                                &amp;lt;br /&amp;gt;&lt;br /&gt;
#endif&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // RAMPAGEINI_H&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                                &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;rampageini.cpp&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                                &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;#include &amp;amp;quot;rampageini.h&amp;amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
static char buffer[BUFFER_LEN];&amp;lt;br /&amp;gt;&lt;br /&gt;
static char path[BUFFER_LEN];&amp;lt;br /&amp;gt;&lt;br /&gt;
#include &amp;amp;quot;../algorithms.h&amp;amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
#define WIN32_LEAN_AND_MEAN&amp;lt;br /&amp;gt;&lt;br /&gt;
#include &amp;amp;lt;windows.h&amp;amp;gt;&amp;lt;br /&amp;gt;                                         &lt;br /&gt;
                                                                        &lt;br /&gt;
                &amp;lt;br /&amp;gt;&lt;br /&gt;
char *rank_type[10] = {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;quot;7&amp;amp;quot;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;quot;10&amp;amp;quot;,&amp;lt;br /&amp;gt;&lt;br /&gt;
};&amp;lt;br /&amp;gt;                                                                 &lt;br /&gt;
                                                                 &amp;lt;br /&amp;gt;&lt;br /&gt;
void LoadSettings(RampageSettings &amp;amp;amp;setts)&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;GetCurrentDirectory(BUFFER_LEN - 64, path);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;strcat(path, &amp;amp;quot;\rampage.ini&amp;amp;quot;);&amp;lt;br /&amp;gt;                  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                       &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;for (int i = 0; i &amp;amp;lt; NUM_RANKS; ++i)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; GetPrivateProfileString(&amp;amp;quot;Comments&amp;amp;quot;,&lt;br /&gt;
rank_type[i], &amp;amp;quot;-ERROR-&amp;amp;quot;, setts.quotes[i], BUFFER_LEN, path);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;                                                                  &lt;br /&gt;
                                                                &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;a name=&amp;quot;13&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;b&amp;gt;&lt;br /&gt;
[13] Simple programming commands&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;                          &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                             &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;simple commands &amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                            &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; declare/initialize variables &amp;amp;nbsp; // example: &amp;amp;nbsp;int&lt;br /&gt;
temp; &amp;amp;nbsp;int temp2 = 1; &amp;amp;nbsp;temp2 = 3; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&lt;br /&gt;
// bool check = true; check = false;&amp;lt;br /&amp;gt;                                                           &lt;br /&gt;
                                                                        &lt;br /&gt;
                                          &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; if (condition) {}&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// example: if (a &amp;amp;gt; b) { a++; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                                                                                        &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;if (condition) {} else {} &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// example: if (b &amp;amp;lt;= 0) { b--; } else { a++;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                                                                                        &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;while (condition) {}&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// example: while (b &amp;amp;gt; 0) { b--; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                                                                                        &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;for (initialize; condition; increment){}&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;// example: for (a=1; a &amp;amp;lt; 10; a++) { a = a + b; }&amp;lt;br /&amp;gt;         &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                    &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                                                                        array&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                              &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;single dimension&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;int teams[100]; &amp;amp;nbsp; // create 100 hundred teams 0-99&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
teams[50] = 1;&amp;lt;br /&amp;gt;                                                     &lt;br /&gt;
                                                                        &lt;br /&gt;
            &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;multi-dimensional&amp;lt;br /&amp;gt;                                               &lt;br /&gt;
                                                                        &lt;br /&gt;
                  &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;int teams[100][50]; &amp;amp;nbsp;// multidimensional arry&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
teams[99][49] = 2;&amp;lt;br /&amp;gt;                                                 &lt;br /&gt;
                                                                        &lt;br /&gt;
                  &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;variable size &amp;lt;br /&amp;gt;                                                  &lt;br /&gt;
                                                                        &lt;br /&gt;
                 &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;String *list = new String[amount+1]; // string array with size amount (variable) + 1;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                      &amp;lt;br /&amp;gt;&lt;br /&gt;
list[amount-1] = &amp;amp;quot;hi&amp;amp;quot;;&amp;lt;br /&amp;gt;                                             &lt;br /&gt;
                                                                        &lt;br /&gt;
                        &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;struct &amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;                                            &lt;br /&gt;
                                                                        &lt;br /&gt;
                         &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; struct name&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// variables&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;};&amp;lt;br /&amp;gt;                                              &lt;br /&gt;
                                                                        &lt;br /&gt;
                         &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;// example:&amp;lt;br /&amp;gt;&lt;br /&gt;
struct freqdata {&lt;br /&gt;
int kills; int deaths; };&amp;lt;br /&amp;gt;                                          &lt;br /&gt;
                                                                        &lt;br /&gt;
                               &amp;lt;br /&amp;gt;&lt;br /&gt;
 freqdata freqs[100]; // 100 of those structs&amp;lt;br /&amp;gt;                      &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                   &amp;lt;br /&amp;gt;&lt;br /&gt;
freqs[56].kills =&lt;br /&gt;
1; &amp;amp;nbsp;// access struct&amp;lt;br /&amp;gt;                                          &lt;br /&gt;
                                                                        &lt;br /&gt;
                               &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                                                                        switch &amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
 &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;switch (variable)&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;case n:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{ } &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;break;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;case m:&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;{&amp;amp;nbsp; } &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;break;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;default:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;break;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;br /&amp;gt;                                               &lt;br /&gt;
                                                                        &lt;br /&gt;
                            &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;// Example:&amp;lt;br /&amp;gt;&lt;br /&gt;
switch (p-&amp;amp;gt;ship) {&amp;lt;br /&amp;gt;                                              &lt;br /&gt;
                                                                        &lt;br /&gt;
                                 &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; case SHIP_Warbird: &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPrivate(p,&amp;amp;quot;You're in a warbird&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; } &amp;amp;nbsp;break;&amp;lt;br /&amp;gt;               &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; default:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; break;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                                                                        &amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                        &amp;lt;b&amp;gt;&amp;lt;a name=&amp;quot;14&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
[14] Useful Player data&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                        &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                                                        &lt;br /&gt;
                                                        // useful data stored&lt;br /&gt;
by MervBot about each player (player.h)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                          &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
p-&amp;amp;gt;name = player name stored as char[20]&amp;lt;br /&amp;gt;&lt;br /&gt;
p-&amp;amp;gt;squad = player squad stored as char[20]&amp;lt;br /&amp;gt;&lt;br /&gt;
p-&amp;amp;gt;ship = ship (0-7) enumerated as SHIP_Warbird, SHIP_Spectator, etc..&amp;lt;br /&amp;gt;&lt;br /&gt;
p-&amp;amp;gt;safety = if ship is in safety zone (boolean)&amp;lt;br /&amp;gt;&lt;br /&gt;
p-&amp;amp;gt;bounty = player bounty&amp;lt;br /&amp;gt;&lt;br /&gt;
p-&amp;amp;gt;energy = player energy (have bot with *energy on to get accurate readings)&amp;lt;br /&amp;gt;&lt;br /&gt;
p-&amp;amp;gt;flagCount = how many flags player is holding&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
p-&amp;amp;gt;team = player frequency&amp;lt;br /&amp;gt;&lt;br /&gt;
p-&amp;amp;gt;(burst, repel, thor, brick, decoy, rocket, portal) = how many items of that type player has&amp;lt;br /&amp;gt;&lt;br /&gt;
p-&amp;amp;gt;(stealth, cloak, xradar, awarp, ufo, flash, safety, shields, supers) = if player has that item on (boolean)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
p-&amp;amp;gt;score.killPoints = player kill points&amp;lt;br /&amp;gt;&lt;br /&gt;
p-&amp;amp;gt;score.flagPoints = player flag points&amp;lt;br /&amp;gt;&lt;br /&gt;
p-&amp;amp;gt;score.wins = player kills from f2&amp;lt;br /&amp;gt;&lt;br /&gt;
p-&amp;amp;gt;score.losses = player deaths from f2&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                          &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                                                                                          &amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                          &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;a name=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;/a&amp;gt; [15] Bot built in functions&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/b&amp;gt;&lt;br /&gt;
                                                                                                                                                                                                &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;// useful MervBot commands to control what the bot is doing&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                                                                                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
// player.cpp&amp;lt;br /&amp;gt;&lt;br /&gt;
Player::move(Sint32 x, Sint32 y) &amp;amp;nbsp;// example &amp;amp;nbsp;me-&amp;amp;gt;move(512,512) - bot moves to coord 512 512&amp;lt;br /&amp;gt;&lt;br /&gt;
Player::clone(Player *p) // example &amp;amp;nbsp;me-&amp;amp;gt;clone(p) &amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                                                                                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
// dllcore.cpp (descriptions of functions in dllcore.h)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                                                                                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeEcho&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (char *m);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeSay&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (int t, int s, int i, char *m);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                                                                                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeShip&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (int s);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeTeam&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (int t);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeGrabFlag&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (int f);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeSendPosition&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (bool reliable);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeDropFlags&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; ();&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                                                                                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeDeath&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (Player *p);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeAttach&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (Player *p);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeDetach&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; ();&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeFollowing&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (bool f);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeFlying&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (bool f);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeBanner&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (BYTE *b);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeDropBrick&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; ();&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeFireWeapon&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (void *weapon_info);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                                                                                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeToggleObjects&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (Uint16 player, Uint16 *objects, int num_objects);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                                                                                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeSpawnBot&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
(char *name, char *password, char *staff, char *arena);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeChangeArena&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (char *name);&amp;lt;br /&amp;gt;&lt;br /&gt;
BotEvent makeChangeSettings&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (_linkedlist &amp;amp;lt;String&amp;amp;gt; *settings);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                                                                                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
// example how to use them:&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                                                                                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
tell(makeFollowing(false));&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                                                                                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
// look in Commands.txt , command.cpp (core), or /!help to bot to see all bot external commands (example /!go &amp;amp;lt;arena&amp;amp;gt;)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                                                                                                  &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                                                                                                                                                                                  &amp;lt;b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Example Code&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                          &amp;lt;a name=&amp;quot;15a&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
a) No antiwarp in center of map (take green away and warn)&amp;lt;br /&amp;gt;      &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
  &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;// using function closeto() and abs()&amp;lt;br /&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;bool closeto(Player *p, int x, int y, int tolerance) {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return (abs((p-&amp;amp;gt;tile.x) - x) &amp;amp;lt; tolerance) &amp;amp;amp;&amp;amp;amp; (abs((p-&amp;amp;gt;tile.y) - y) &amp;amp;lt; tolerance); }&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
inline int abs(int n) {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (n &amp;amp;lt; 0)&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return -n;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; else&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return n; }&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
radius = 35; &amp;amp;nbsp;// global variable&amp;lt;br /&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;case EVENT_PlayerMove: {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Player *p = (Player*)event.p[0];&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // no anti in center&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if ((p-&amp;amp;gt;ship != SHIP_Spectator) &amp;amp;amp;&amp;amp;amp; (p-&amp;amp;gt;awarp)) {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (closeto(p, 512, 512, radius)){&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPrivate(p, &amp;amp;quot;*prize #-20&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPrivate(p, &amp;amp;quot;*warn Antiwarp is not allowed in center.&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
               &amp;lt;a name=&amp;quot;15b&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
b) Setting freq size depending on how many pilots in game&amp;lt;br /&amp;gt;       &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
       &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;case EVENT_Tick: &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;if (countdown[0] == 0) { &amp;amp;nbsp; &amp;amp;nbsp; // assuming countdown[0] initialized to &amp;amp;gt; 0&amp;amp;nbsp; in spawn.h, freqchange=0;&amp;lt;br /&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
_listnode &amp;amp;lt;Player&amp;amp;gt; *parse = playerlist-&amp;amp;gt;head;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int count = 0;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; while (parse)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Player *p = parse-&amp;amp;gt;item;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (p-&amp;amp;gt;ship != SHIP_Spectator)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; ++count;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; parse = parse-&amp;amp;gt;next;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if ((count &amp;amp;gt; 24) &amp;amp;amp;&amp;amp;amp; (freqchange != 4))&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPublic(&amp;amp;quot;?set team:maxperteam:4&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; String s;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s = &amp;amp;quot;Max freq size 4&amp;amp;nbsp; (&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += count;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += &amp;amp;quot; pilots in game)&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPublic(s);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqchange = 4;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
if ((count &amp;amp;lt; 25) &amp;amp;amp;&amp;amp;amp; (count &amp;amp;gt; 14) &amp;amp;amp;&amp;amp;amp; (freqchange !=&lt;br /&gt;
3))&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPublic(&amp;amp;quot;?set team:maxperteam:3&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; String s;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s = &amp;amp;quot;Max freq size 3&amp;amp;nbsp; (&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += count;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += &amp;amp;quot; pilots in game)&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPublic(s);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqchange = 3;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;countdown[0] = 120;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                     &amp;lt;a name=&amp;quot;15c&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;  c) Tracking kills and announcing when pilot gets 10 kills in a row without&lt;br /&gt;
dying                                                                   &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                        &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;case EVENT_PlayerDeath:&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;// assuming tags are setup (see storing data section)&amp;lt;br /&amp;gt;&lt;br /&gt;
set_tag(p,KILLS, 0); &amp;amp;nbsp;// pilot died, reset to 0 kills in a row&amp;lt;br /&amp;gt;&lt;br /&gt;
set_tag(k, KILLS, get_tag(k, KILLS) + 1); &amp;amp;nbsp;// pilot killed someone, increment kills in a row by 1&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
if (get_tag(k,KILLS) == 10) &amp;amp;nbsp;sendPublic(&amp;amp;quot;*arena (String) k-&amp;amp;gt;name + &amp;amp;quot; has gotten 10 kills.&amp;amp;quot;);&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                         &amp;lt;a name=&amp;quot;15d&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
d) Warp pilot to coord when they are in a certain region&amp;lt;br /&amp;gt;        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;// using functions closeto() and abs()&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
bool closeto(Player *p, int x, int y, int tolerance) {&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return (abs((p-&amp;amp;gt;tile.x) - x) &amp;amp;lt; tolerance) &amp;amp;amp;&amp;amp;amp; (abs((p-&amp;amp;gt;tile.y) - y) &amp;amp;lt; tolerance); }&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
inline int abs(int n) {&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (n &amp;amp;lt; 0)&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return -n;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; else&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return n; }&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
case EVENT_PlayerMove: &amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (closeto(p, 509, 509, 2)) { &amp;amp;nbsp;// if pilot within 2 of map coord 509,509&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPrivate(p, &amp;amp;quot;*warpto 509 504&amp;amp;quot;); &amp;amp;nbsp;// warp to coord 509,504&amp;lt;br /&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                           &amp;lt;br /&amp;gt;                                         &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                          &amp;lt;a name=&amp;quot;15e&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e) Structures within structures (spawn.h botinfo)&amp;lt;br /&amp;gt;               &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
           &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // Declare in spawn.h&amp;lt;br /&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; struct playerstats&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; char name[20];&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int kills;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int deaths;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Uint16 points;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Uint16 flagpoints;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int flagtime;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int cflagtime;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int flags;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int flagkills;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int dmgdealt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int dmgtaken;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; };&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; struct freqdata&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; playerstats pilots[100];&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int freqpoints;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; char freqname[20];&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int freqflagpoints;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Uint16 freqteam;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int freqflagtime;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int flags;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int kills;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int deaths;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int flagkills;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int dmgdealt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int dmgtaken;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int playercount;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; };&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqdata freqs[100];&amp;lt;br /&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;// Initialize in spawn.cpp&amp;lt;br /&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;void botInfo::Clear()&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // initialize/clear struct data&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; for (int n=99; n&amp;amp;gt;=0; n--)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].freqteam=-1;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].freqpoints=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].freqflagpoints=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].playercount=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].flags=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].kills=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].deaths=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].freqflagtime=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].flagkills=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].dmgdealt=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].dmgtaken=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; for (int m = 99; m&amp;amp;gt;=0; m--)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].pilots[m].deaths=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].pilots[m].kills=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].pilots[m].points=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].pilots[m].flagpoints=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].pilots[m].flagtime=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].pilots[m].cflagtime=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].pilots[m].flags=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].pilots[m].flagkills=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].pilots[m].dmgdealt=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[n].pilots[m].dmgtaken=0;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;// Access data in spawn.cpp&amp;lt;br /&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;int freq = p-&amp;amp;gt;team;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
freqs[1].pilots[2].kills++;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
OR&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
freqs[freq].deaths++;&amp;lt;br /&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                    &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                &amp;lt;a name=&amp;quot;15f&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
f) Tracking flag data&amp;lt;br /&amp;gt;                                           &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                  &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Example GetPilot() function &amp;amp;nbsp;(using structs from example e)&amp;lt;br /&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;bool botInfo::GetPilot(Player *p)&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // get a pilots freq/pilot id from struct&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; for (freq=freqcount-1; freq&amp;amp;gt;=0; freq--)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (p-&amp;amp;gt;team == freqs[freq].freqteam)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; for (pilot = freqs[freq].playercount-1; pilot&amp;amp;gt;=0; pilot--)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
if (strcmp(p-&amp;amp;gt;name,freqs[freq].pilots[pilot].name)==0)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return true;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return false;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Example way to track flag data using above struct/functions&amp;lt;br /&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;case EVENT_FlagGrab:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (GetPilot(p)) &amp;amp;nbsp;// function&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freq].pilots[pilot].flags++;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freq].flags++;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
if (freqs[freq].pilots[pilot].flags &amp;amp;lt; 2) // didnt have a flag before,&lt;br /&gt;
first flag&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freq].pilots[pilot].cflagtime = GetTickCount();&lt;br /&gt;
&amp;amp;nbsp;// time stamp when picked up flag&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Example way to track flag data using built in get/set tag (from catid flagbot)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                               &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;case EVENT_FlagGrab:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; set_tag(p, TAG_STAT_FS, get_tag(p, TAG_STAT_FS) + 1);&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; set_tag(p, TAG_FLAGTIMER, GetTickCount());&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;                            &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                    &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;Get current flag times using struct format&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                   &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;void botInfo::SetFlagTimes()&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // set current flagtime for pilots/freqs&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; _listnode &amp;amp;lt;Player&amp;amp;gt; *parse = playerlist-&amp;amp;gt;head;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; while (parse)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Player *p = parse-&amp;amp;gt;item;&amp;lt;br /&amp;gt;  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                  &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (GetPilot(p))&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (freqs[freq].pilots[pilot].flags &amp;amp;gt; 0)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (PilotOnSquad(p))&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freq].freqflagtime += (GetTickCount() - freqs[freq].pilots[pilot].cflagtime)/1000;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                     &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
freqs[freq].pilots[pilot].flagtime += (GetTickCount() - freqs[freq].pilots[pilot].cflagtime)/1000;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
freqs[freq].pilots[pilot].cflagtime = GetTickCount();&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;         &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                           &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; parse = parse-&amp;amp;gt;next;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;                                                                  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                           &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;// side note: &amp;amp;nbsp;case EVENT_FlagDrop: {} gets called anytime theres a teamkill&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                   &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                          &amp;lt;br /&amp;gt;                          &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                        &amp;lt;a name=&amp;quot;15g&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
g) Example way to do simple /!spam feature (allowed 1x/60s)&amp;lt;br /&amp;gt;     &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                             &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;declare and initialize variables in spawn.h&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                     &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;class botInfo&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
bool spamready;&amp;lt;br /&amp;gt;&lt;br /&gt;
int SPAM_TIME;&amp;lt;br /&amp;gt;                                                     &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
 &amp;lt;br /&amp;gt;&lt;br /&gt;
public:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; botInfo(CALL_HANDLE given)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; spamready = true;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; SPAM_TIME = 60;&amp;lt;br /&amp;gt;                                 &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                     &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;spawn.cpp - mark as spamready=true when 60 seconds up&amp;lt;br /&amp;gt;           &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                           &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;case EVENT_Tick:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (countdown[0] == 1) &amp;amp;nbsp;{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; spamready = true; &amp;amp;nbsp;// ready to spam again&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;         &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                               &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;            &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
command.cpp - handle !spam command&amp;lt;br /&amp;gt;                              &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                          &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;case OP_Player:&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // Player-level commands&amp;lt;br /&amp;gt;                       &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                   &amp;lt;br /&amp;gt;&lt;br /&gt;
else if (c-&amp;amp;gt;check(&amp;amp;quot;spam&amp;amp;quot;))&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
// zone announcement &amp;amp;quot;Need pilots to duel in ?go arena -pilotname&amp;amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (spamready == true)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; String s;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += &amp;amp;quot;*zone Need pilots to duel in ?go &amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += arena;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += &amp;amp;quot; - &amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += p-&amp;amp;gt;name;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPublic(s);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; spamready=false;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; countdown[0] = SPAM_TIME * 60; // next spam time limit&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; else if (countdown[0] &amp;amp;lt; 0)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPrivate(p,&amp;amp;quot;Spam ability disabled.&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; else &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; String s;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += SPAM_TIME;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += &amp;amp;quot; Minute timer between announcements. &amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += countdown[0] / 60;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += &amp;amp;quot;:&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (countdown[0] % 60 &amp;amp;lt; 10)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += &amp;amp;quot;0&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += countdown[0] % 60;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s += &amp;amp;quot; minutes left before next spam allowed.&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPrivate(p, s);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;         &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                 &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;           &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                               &amp;lt;a name=&amp;quot;15h&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
h) Example of implementing a simple stack to do &amp;amp;quot;next in line for several 'boxes' at once&amp;amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                           &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;//spawn.h declare variables&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                             &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;class botInfo&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
Player *next[99][99];&amp;lt;br /&amp;gt;&lt;br /&gt;
int MAX_NEXT;&amp;lt;br /&amp;gt;&lt;br /&gt;
int nextcount[99];&amp;lt;br /&amp;gt;                                                 &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
             &amp;lt;br /&amp;gt;&lt;br /&gt;
public:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; botInfo(CALL_HANDLE given)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; MAX_NEXT = 8; &amp;lt;br /&amp;gt;                                  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                            &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;// spawn.cpp MoveUp function&amp;lt;br /&amp;gt;                                       &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                       &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;void botInfo::MoveUp(int pos, int box)&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // moves up the next line for that box and decrement box's nextcount&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (nextcount[box] &amp;amp;gt; 0)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; nextcount[box]--;&amp;lt;br /&amp;gt;            &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; for (pos = pos; pos &amp;amp;lt; MAX_NEXT - 1; pos++)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; next[box][pos] = next[box][pos + 1];&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;                                               &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                 &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; next[box][MAX_NEXT] = 0;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;                                                                  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                       &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                 &amp;lt;a name=&amp;quot;15i&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
i) Example of reading any text from a .txt and printing it to pilot line by line&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                 &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;#include &amp;amp;lt;fstream&amp;amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
using namespace std;&amp;lt;br /&amp;gt;                                               &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                   &amp;lt;br /&amp;gt;&lt;br /&gt;
case OP_Player:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (c-&amp;amp;gt;check(&amp;amp;quot;schedule&amp;amp;quot;))&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // read in schedule from schedule.txt&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; ifstream file(&amp;amp;quot;schedule.txt&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; char line[256];&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                   &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; while (file.getline(line, 256))&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPrivate(p, line);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; file.close();&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; } &amp;lt;br /&amp;gt;        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                          &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt; &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                 &amp;lt;a name=&amp;quot;15j&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
j) Example of printing player stats grid&amp;lt;br /&amp;gt;                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                          &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;// spawn.cpp &amp;amp;nbsp; (see &amp;amp;quot;structures within structures&amp;amp;quot; example for variable declarations, varibale freqcount = # of freqs)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                     &amp;lt;br /&amp;gt;&lt;br /&gt;
void botInfo::DisplayPlayers()&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // Display Match player/freq stats in this format &amp;amp;nbsp;(not aligned b/c of html but aligned in bot)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // ---------------------------------------------------&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // Squad: squad_name_1 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
K&amp;amp;nbsp; D TK DMG DEALT TAKEN&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // ---------------------------------------------------&amp;lt;br /&amp;gt;&lt;br /&gt;
             &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // Player_1 &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      0&amp;amp;nbsp; 0&amp;amp;nbsp; 0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      0&amp;lt;br /&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // Player_2 &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      0&amp;amp;nbsp; 0&amp;amp;nbsp; 0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      0&amp;lt;br /&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // TOTAL:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      0&amp;amp;nbsp; 0&amp;amp;nbsp; 0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      0&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // ---------------------------------------------------&amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // Squad: squad_name_2 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
K&amp;amp;nbsp; D TK DMG DEALT TAKEN&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // ---------------------------------------------------&amp;lt;br /&amp;gt;&lt;br /&gt;
              &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // Player_3 &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      0&amp;amp;nbsp; 0&amp;amp;nbsp; 0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      0&amp;lt;br /&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // Player_4 &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      0&amp;amp;nbsp; 0&amp;amp;nbsp; 0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      0&amp;lt;br /&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // Player_5 &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      0&amp;amp;nbsp; 0&amp;amp;nbsp; 0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      0&amp;lt;br /&amp;gt;  &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // TOTAL:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      0&amp;amp;nbsp; 0&amp;amp;nbsp; 0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      0&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // ---------------------------------------------------&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                     &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; for (freq=freqcount-1; freq&amp;amp;gt;=0; freq--)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; char str[255];&amp;lt;br /&amp;gt;               &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                     &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendFreqs(&amp;amp;quot;---------------------------------------------------&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                     &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sprintf(str, &amp;amp;quot;Squad: %-20s K&amp;amp;nbsp; D TK DMG DEALT TAKEN&amp;amp;quot;, freqs[freq].freqname);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendFreqs(str);&amp;lt;br /&amp;gt;              &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                      &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendFreqs(&amp;amp;quot;---------------------------------------------------&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                     &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; for (pilot=freqs[freq].playercount-1; pilot &amp;amp;gt;= 0; pilot--)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sprintf(str, &amp;amp;quot;%-20s&lt;br /&gt;
%8d %2d %2d %9d %5d&amp;amp;quot;, freqs[freq].pilots[pilot].name, freqs[freq].pilots[pilot].kills,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freq].pilots[pilot].deaths, freqs[freq].pilots[pilot].teamkills,&lt;br /&gt;
freqs[freq].pilots[pilot].dmgdealt,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freq].pilots[pilot].dmgtaken);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendFreqs(str);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;                            &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                        &amp;lt;br /&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
      sprintf(str, &amp;amp;quot;TOTAL:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
      %2d %2d %2d %9d %5d&amp;amp;quot;, freqs[freq].kills, freqs[freq].deaths, &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freq].teamkills, freqs[freq].dmgdealt, freqs[freq].dmgtaken);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendFreqs(str);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;                                               &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                     &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendFreqs(&amp;amp;quot;---------------------------------------------------&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;                                                                  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
  &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                                         &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
           &amp;lt;a name=&amp;quot;15k&amp;quot;&amp;gt;&amp;lt;/a&amp;gt; k) Example of checking if any pilots are&lt;br /&gt;
within a region                                                         &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
           &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;// see GetPilotName(name) function in other example, returns *player as TempPlayer from name&amp;lt;br /&amp;gt;&lt;br /&gt;
// closeto() function from several previous examples&amp;lt;br /&amp;gt;               &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                       &amp;lt;br /&amp;gt;&lt;br /&gt;
bool botInfo::FreqAInBox()&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // return true if teamA has a pilot in the box, otherwise false&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; for (int tempplayercount = freqs[0].playercount-1; tempplayercount &amp;amp;gt;= 0; tempplayercount--)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (GetPilotName(freqs[0].pilots[tempplayercount].name))&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (closeto(TempPlayer,&lt;br /&gt;
coordX, coordY, 73) &amp;amp;amp;&amp;amp;amp; (TempPlayer-&amp;amp;gt;ship != SHIP_Spectator))&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return true;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                       &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return false;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;                                                                  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
    &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                                       &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
               &amp;lt;a name=&amp;quot;15l&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
l) Example of functions to get a pilot's struct id info from a name or *player info&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                       &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;// see struct examples for variable info&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
// return struct freq/pilot id from *player info&amp;lt;br /&amp;gt;&lt;br /&gt;
bool botInfo::GetPilot(Player *p)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // return freq, pilot of a player p&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; for (freq=freqcount-1; freq&amp;amp;gt;=0; freq--)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (p-&amp;amp;gt;team == freqs[freq].freqteam)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; for (pilot = freqs[freq].playercount-1; pilot&amp;amp;gt;=0; pilot--)&amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
if (strcmp(p-&amp;amp;gt;name,freqs[freq].pilots[pilot].name)==0)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return true;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return false;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;br /&amp;gt;                                                                  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
// return *player as TempPlayer info from p-&amp;amp;gt;name info&amp;lt;br /&amp;gt;bool botInfo::GetPilotName(char *name)&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // get pilot from a name, return as TempPlayer&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; _listnode &amp;amp;lt;Player&amp;amp;gt; *parse = playerlist-&amp;amp;gt;head;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
          &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; while (parse)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Player *p = parse-&amp;amp;gt;item;&amp;lt;br /&amp;gt;  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
       &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // convert both to lowercase to compare&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; char pname[20];&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strncpy(pname,p-&amp;amp;gt;name,20);&amp;lt;br /&amp;gt; &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
        &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; char nname[20];&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strncpy(nname,name,20);&amp;lt;br /&amp;gt;      &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
   &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; tolower(pname);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; tolower(nname);&amp;lt;br /&amp;gt;              &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (strcmp(pname,nname)==0)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TempPlayer = p;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return true;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;                            &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                      &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; parse = parse-&amp;amp;gt;next;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return false;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
// note: better to implement these functions as passing values by reference instead of using global variables&amp;lt;br /&amp;gt;&lt;br /&gt;
// just easier to not have to be declaring different int freq, int pilot all the time&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
&amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                                           &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
             &amp;lt;a name=&amp;quot;15m&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
m) Example of creating a logfile name using date and squad names&amp;lt;br /&amp;gt; &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                       &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // create log file name (squadA and squadB external char[20] variables)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; char u[100];&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; time_t t=time(NULL);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; tm *tmp = localtime(&amp;amp;amp;t);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strftime(u,99,&amp;amp;quot;%y&amp;amp;quot;,tmp);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname = &amp;amp;quot;c:\Program Files\Continuum\logs\&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname += u;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname += &amp;amp;quot;y&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strftime(u,99,&amp;amp;quot;%m&amp;amp;quot;,tmp);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname += u;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname += &amp;amp;quot;m&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strftime(u,99,&amp;amp;quot;%d&amp;amp;quot;,tmp);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname += u;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname += &amp;amp;quot;d&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname += squadA;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname += &amp;amp;quot; vs &amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname += squadB;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strftime(u,99,&amp;amp;quot;%I&amp;amp;quot;,tmp);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname += u;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname += &amp;amp;quot;h&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strftime(u,99,&amp;amp;quot;%M&amp;amp;quot;,tmp);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname += u;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname += &amp;amp;quot;m&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; logname += &amp;amp;quot;.txt&amp;amp;quot;;&amp;lt;br /&amp;gt;                              &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
// example name created: &amp;amp;nbsp;03y01m27dBLACKDRaGON vs Integral05h08m.txt&amp;lt;br /&amp;gt;&lt;br /&gt;
// format &amp;amp;nbsp;year, month, day, squadA vs squadB, hour, minute&amp;lt;br /&amp;gt;   &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                       &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
  &amp;lt;a name=&amp;quot;15n&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
n) Example of sending messages to playing freqs or public and logging depending on status&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
  &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;// teamA, teamB, logname global variables&amp;lt;br /&amp;gt;&lt;br /&gt;
void botInfo::sendFreqs(char *msg)&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; char *mmsg = &amp;amp;quot;*arena&amp;amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; String s = msg;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (teammsgs == false)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; s.prepend(&amp;amp;quot;*arena &amp;amp;quot;,7);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPublic(s);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; else&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendTeamPrivate(8025,msg);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendTeamPrivate(teamA,msg);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendTeamPrivate(teamB,msg);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (gameon == true)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; ofstream outf(logname, ios::app);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; outf &amp;amp;lt;&amp;amp;lt; msg &amp;amp;lt;&amp;amp;lt; endl;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; outf.close();&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;                                                                  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
          &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                                 &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                           &amp;lt;a name=&amp;quot;15o&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
o) Example of reading in all player/freqs to struct data&amp;lt;br /&amp;gt;        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                    &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;// see structures within structures example for freqs[] declaration&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
// to get freqs in a game where there are several freqs&amp;lt;br /&amp;gt;&lt;br /&gt;
void botInfo::GetFreqs()&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // read pilots into freq struct data from ingame and on playing freqs&amp;lt;br /&amp;gt;                      &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                        &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; _listnode &amp;amp;lt;Player&amp;amp;gt; *parse = playerlist-&amp;amp;gt;head;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; while (parse)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Player *p = parse-&amp;amp;gt;item;&amp;lt;br /&amp;gt;  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
   &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (p-&amp;amp;gt;ship != SHIP_Spectator)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (closeto(p, coordX, coordY, 73))&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // look for freq in struct&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; bool foundfreq=false;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freq=freqcount-1;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; while ((freq&amp;amp;gt;=0) &amp;amp;amp;&amp;amp;amp; (foundfreq==false))&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (p-&amp;amp;gt;team == freqs[freq].freqteam)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; foundfreq=true;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strncpy(freqs[freq].pilots[freqs[freq].playercount].name,&lt;br /&gt;
p-&amp;amp;gt;name, 20);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freq].playercount++;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freq--;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // didnt find freq in struct so add new freq&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (foundfreq == false)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (manualsquads == false)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strncpy(freqs[freqcount].freqname,&lt;br /&gt;
p-&amp;amp;gt;squad, 20);&amp;lt;br /&amp;gt;                                                  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (freqcount == 0)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; teamA = p-&amp;amp;gt;team;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strncpy(squadA,&lt;br /&gt;
p-&amp;amp;gt;squad, 20);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; else&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; teamB = p-&amp;amp;gt;team;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strncpy(squadB,&lt;br /&gt;
p-&amp;amp;gt;squad, 20);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; else&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (p-&amp;amp;gt;team == teamA)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strncpy(freqs[freqcount].freqname,squadA,20);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
      &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; else if (p-&amp;amp;gt;team == teamB)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strncpy(freqs[freqcount].freqname,squadB,20);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freqcount].freqteam = p-&amp;amp;gt;team;&amp;lt;br /&amp;gt;         &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                     &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strncpy(freqs[freqcount].pilots[0].name, p-&amp;amp;gt;name, 20);&amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
     &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freqcount].playercount++;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqcount++;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; parse = parse-&amp;amp;gt;next;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;                                                                  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
// to get freqs in a game where there are only two teams&amp;lt;br /&amp;gt;&lt;br /&gt;
void botInfo::GetFreqs()&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // read pilots into freq struct data from ingame and on playing freqs&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; _listnode &amp;amp;lt;Player&amp;amp;gt; *parse = playerlist-&amp;amp;gt;head;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; while (parse)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Player *p = parse-&amp;amp;gt;item;&amp;lt;br /&amp;gt;  &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                           &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if ((p-&amp;amp;gt;ship != SHIP_Spectator)&lt;br /&gt;
&amp;amp;amp;&amp;amp;amp; ((p-&amp;amp;gt;team == teamA) || (p-&amp;amp;gt;team == teamB)))&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // freq 100, team A&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // set freq&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freq = 0;&amp;lt;br /&amp;gt; &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                            &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (p-&amp;amp;gt;team == teamB)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freq = 1;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // number of pilots on freq counted so far, starts 0&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; pilot = freqs[freq].playercount;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // pilot name&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strncpy(freqs[freq].pilots[pilot].name, p-&amp;amp;gt;name, 20);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // time stamp for playing time&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freq].pilots[pilot].cplaying_time = GetTickCount();&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // slot name&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (freqs[freq].playercount &amp;amp;lt; NUMBER_PILOTS)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
strncpy(freqs[freq].slotname[pilot], p-&amp;amp;gt;name, 20);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // increment freq player count&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freq].playercount++;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; // if freq not already have name, give it player squad name&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if ((manualsquads == false) &amp;amp;amp;&amp;amp;amp; (strlen(p-&amp;amp;gt;squad) &amp;amp;gt; 0))&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; strncpy(freqs[freq].freqname, p-&amp;amp;gt;squad, 20);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                              &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; // set player ship&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; freqs[freq].pilots[pilot].ship = p-&amp;amp;gt;ship + 1;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; parse = parse-&amp;amp;gt;next;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                      &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                     &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                         &amp;lt;a name=&amp;quot;15p&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
p) Example of finding MVP from struct data (2*kills - deaths formula)&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
      &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int highest=-20;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int mvp=0;&amp;lt;br /&amp;gt;                                      &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                          &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; for (pilot = freqs[mvpteam].playercount-1; pilot &amp;amp;gt;=0; pilot--)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (((freqs[mvpteam].pilots[pilot].kills&lt;br /&gt;
* 2) - freqs[mvpteam].pilots[pilot].deaths) &amp;amp;gt; highest)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; mvp = pilot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; highest = (freqs[mvpteam].pilots[pilot].kills&lt;br /&gt;
* 2) - freqs[mvpteam].pilots[pilot].deaths;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;                                               &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                 &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                          &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                      &amp;lt;a name=&amp;quot;15q&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
q) Print time stamp of event&amp;lt;br /&amp;gt;                                    &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                            &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;#include &amp;amp;quot;time.h&amp;amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
          &amp;lt;br /&amp;gt;&lt;br /&gt;
char u[100];&amp;lt;br /&amp;gt;&lt;br /&gt;
time_t t=time(NULL);&amp;lt;br /&amp;gt;&lt;br /&gt;
tm *tmp = localtime(&amp;amp;amp;t);&amp;lt;br /&amp;gt;&lt;br /&gt;
strftime(u,99,&amp;amp;quot;%c&amp;amp;quot;,tmp);&amp;lt;br /&amp;gt;&lt;br /&gt;
sendPublic(&amp;amp;quot;Current date and time: &amp;amp;quot; + (String) u);&amp;lt;br /&amp;gt;                                                     &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                             &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                              &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                    &amp;lt;a name=&amp;quot;15r&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
r) Simple way to track player bomb/bullet damage stats&amp;lt;br /&amp;gt;          &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;// spawn.cpp (see data section for how to setup set_tag)&amp;lt;br /&amp;gt;&lt;br /&gt;
// see clientprot.h for weapon information&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
case EVENT_WatchDamage:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (PLAYING) &amp;amp;nbsp;// if tracking stats&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
if ((wi.type == PROJ_PBomb) &amp;amp;amp;&amp;amp;amp; (p-&amp;amp;gt;name != k-&amp;amp;gt;name))&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; set_tag(k, DMG_BOMB_DEALT, get_tag(k, DMG_BOMB_DEALT)&lt;br /&gt;
+ damage);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; set_tag(k, DMG_TOTAL_DEALT, get_tag(k, DMG_TOTAL_DEALT)&lt;br /&gt;
+ damage);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; set_tag(p, DMG_BOMB_TAKEN, get_tag(p, DMG_BOMB_TAKEN)&lt;br /&gt;
+ damage);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; set_tag(p, DMG_TOTAL_TAKEN, get_tag(p, DMG_TOTAL_TAKEN)&lt;br /&gt;
+ damage);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; else if (wi.type == PROJ_BBullet)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; set_tag(k, DMG_BULLET_DEALT, get_tag(k, DMG_BULLET_DEALT)&lt;br /&gt;
+ damage);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; set_tag(k, DMG_TOTAL_DEALT, get_tag(k, DMG_TOTAL_DEALT)&lt;br /&gt;
+ damage);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; set_tag(p, DMG_BULLET_TAKEN, get_tag(k, DMG_BULLET_TAKEN)&lt;br /&gt;
+ damage);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; set_tag(p, DMG_TOTAL_TAKEN, get_tag(k, DMG_TOTAL_TAKEN)&lt;br /&gt;
+ damage);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;         &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
  &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;                                                         &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                           &amp;lt;a name=&amp;quot;15s&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
s) Simple way to print those stats&amp;lt;br /&amp;gt;                              &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                      &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;case OP_Moderator:&amp;lt;br /&amp;gt;&lt;br /&gt;
{&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (c-&amp;amp;gt;check(&amp;amp;quot;showstats&amp;amp;quot;))&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPublic(&amp;amp;quot;Showing stats:&amp;amp;quot;);&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
              &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
_listnode &amp;amp;lt;Player&amp;amp;gt; *parse = playerlist-&amp;amp;gt;head;&amp;lt;br /&amp;gt;             &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; while (parse) &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Player *p = parse-&amp;amp;gt;item;&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
              &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (get_tag(p, DMG_TOTAL_DEALT) &amp;amp;gt; 0)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; {&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; char str[256];&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sprintf(str, &amp;amp;quot;(%-20s Dmg Dealt: Total&lt;br /&gt;
%0004d, Bomb %0004d, Bullet %0004d&amp;amp;nbsp; Dmg TAKEN: Total %0004d, Bomb %0004d,&lt;br /&gt;
Bullet %0004d)&amp;amp;quot;, &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; p-&amp;amp;gt;name, get_tag(p,DMG_TOTAL_DEALT),&lt;br /&gt;
get_tag(p,DMG_BOMB_DEALT), get_tag(p,DMG_BULLET_DEALT), &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; get_tag(p,DMG_TOTAL_TAKEN), get_tag(p,DMG_BOMB_TAKEN),&lt;br /&gt;
get_tag(p,DMG_BULLET_TAKEN));&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; sendPublic(str);&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; parse = parse-&amp;amp;gt;next;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }&amp;lt;br /&amp;gt;         &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
                                                                        &lt;br /&gt;
    &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;a name=&amp;quot;15t&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
t) Make bot spectate specific coordinates&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                                                                                                                                                                                  &amp;lt;/font&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;// make bot spectate the coord 512,600&amp;lt;br /&amp;gt;&lt;br /&gt;
// possible use - capturing weapon packets in a specific region&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                                                                                                                                                                                    &amp;lt;br /&amp;gt;&lt;br /&gt;
tell(makeFollowing(false));&amp;lt;br /&amp;gt;&lt;br /&gt;
tell(makeFlying(true));&amp;lt;br /&amp;gt;&lt;br /&gt;
me-&amp;amp;gt;move(512 * 16, 600 * 16);&amp;lt;br /&amp;gt;&lt;br /&gt;
tell(makeSendPosition(true));&amp;lt;br /&amp;gt;&lt;br /&gt;
                                                                                                                                                                                                                                                                                &amp;lt;/font&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>D1st0rt</name></author>	</entry>

	<entry>
		<id>http://wiki.minegoboom.com/index.php?title=Writing_Modules_In_Python&amp;diff=1165</id>
		<title>Writing Modules In Python</title>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=Writing_Modules_In_Python&amp;diff=1165"/>
				<updated>2005-01-21T00:18:43Z</updated>
		
		<summary type="html">&lt;p&gt;D1st0rt: rgn caching grammar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basic python module ==&lt;br /&gt;
I have tried to comment what is going on in the source. This module demonstrates callbacks, commands and using interfaces.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# demo asss python module&lt;br /&gt;
# dec 28 2004 smong&lt;br /&gt;
&lt;br /&gt;
# nearly always use this&lt;br /&gt;
from asss import *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# get some interfaces&lt;br /&gt;
# see chat.h for where I_CHAT comes from, see other .h files for more (fx:&lt;br /&gt;
#  game.h)&lt;br /&gt;
chat = get_interface(I_CHAT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# a callback&lt;br /&gt;
# this function is called when a player enters/leaves, see core.h for PA_???&lt;br /&gt;
#  constants&lt;br /&gt;
def paction(p, action, arena):&lt;br /&gt;
    # start indenting&lt;br /&gt;
    if action == PA_ENTERARENA:&lt;br /&gt;
        # see chat.h for the names of more functions like SendMessage&lt;br /&gt;
        chat.SendMessage(p, &amp;quot;hello &amp;quot; + p.name)&lt;br /&gt;
&lt;br /&gt;
# tell asss to call 'paction' when CB_PLAYERACTION is signalled&lt;br /&gt;
# see .h files for CB_??? names&lt;br /&gt;
cb1 = reg_callback(CB_PLAYERACTION, paction)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# a command&lt;br /&gt;
# see cmdman.h for what each parameter does&lt;br /&gt;
def c_moo(cmd, params, p, targ):&lt;br /&gt;
# help text (?help moo)&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;\&lt;br /&gt;
Module: &amp;lt;py&amp;gt; demo&lt;br /&gt;
Targets: none&lt;br /&gt;
a sample command.&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    chat.SendMessage(p, &amp;quot;moo cows&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# tell asss to call 'c_moo' when a player types ?moo&lt;br /&gt;
# note: add cmd_moo to conf/groupdef.dir/default so players have permission to&lt;br /&gt;
#  use this command.&lt;br /&gt;
cmd1 = add_command(&amp;quot;moo&amp;quot;, c_moo)&lt;br /&gt;
&lt;br /&gt;
# setting chat (or other interfaces), cb* or cmd* to None is equivalent to&lt;br /&gt;
#  unregistering that item.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Save this in bin/demo.py. Then ingame make sure pymod is loaded by using ?lsmod and ?insmod. Then add this module with the following command: ?insmod &amp;lt;py&amp;gt; demo. Re-entering the arena and typing ?moo should do some stuff.&lt;br /&gt;
&lt;br /&gt;
== Code snippets ==&lt;br /&gt;
The bread and butter of most custom modules.&lt;br /&gt;
=== Callbacks ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from asss import *&lt;br /&gt;
&lt;br /&gt;
chat = get_interface(I_CHAT)&lt;br /&gt;
&lt;br /&gt;
def goal(arena, p, bid, x, y):&lt;br /&gt;
    chat.SendArenaMessage(arena, &amp;quot;goal.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
cb1 = reg_callback(CB_GOAL, goal) &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Commands ===&lt;br /&gt;
Useful for controlling events, fx: ?elim start. In this case the command is ?t1.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from asss import *&lt;br /&gt;
&lt;br /&gt;
chat = get_interface(I_CHAT)&lt;br /&gt;
&lt;br /&gt;
def c_mycmd(cmd, params, p, targ):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;\&lt;br /&gt;
some help text&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    chat.SendMessage(p, &amp;quot;moo.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
cmd1 = add_command(&amp;quot;t1&amp;quot;, c_mycmd)&lt;br /&gt;
#where the &amp;quot;t1&amp;quot; is located would be the name of the command, ex: ?t1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Per-player/arena data ===&lt;br /&gt;
Use this to store game state, player score, etc.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def shipchange(p, newship, newfreq):&lt;br /&gt;
    # prefix mymod_ an abbreviation of your module name to the variable&lt;br /&gt;
    #  so that it doesn't clash with other modules. per arena data works&lt;br /&gt;
    #  in exactly the same way.&lt;br /&gt;
    p.mymod_lastship = p.ship&lt;br /&gt;
&lt;br /&gt;
cb1 = reg_callback(CB_SHIPCHANGE, shipchange)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attach/Detach ===&lt;br /&gt;
Attaching and detaching is similar to load/unload in a C module except it is arena specific. So you can use it to initialise per-arena data.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def mm_attach(arena):&lt;br /&gt;
    # do stuff with arena&lt;br /&gt;
def mm_detach(arena):&lt;br /&gt;
    # undo stuff&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Looping over all players ===&lt;br /&gt;
This example counts the number of players in an arena.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def count_players(arena):&lt;br /&gt;
    # a list must be used as all other variables are immutable to&lt;br /&gt;
    #  nested functions.&lt;br /&gt;
    players = [0]&lt;br /&gt;
    def cb_count(p):&lt;br /&gt;
        if p.arena == arena:&lt;br /&gt;
            players[0] = players[0] + 1&lt;br /&gt;
    for_each_player(cb_count)&lt;br /&gt;
    return players[0]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Good for checking if a game is over yet. '''A reference to the timer is returned and must be retained''' (you can use per-arena data to store it). Losing the reference will cancel the timer.&lt;br /&gt;
&lt;br /&gt;
''initial'' is the time in 1/100th's of a second before the nested function timer() will be called, you can cancel the timer before it is called. ''interval'' is the time gap, again in 1/100th's of a second between all future calls of timer(). So make_hello_timer(100, 200, arena) will make it send the arena message &amp;quot;hello&amp;quot; every 2 seconds starting from 1 second after make_hello_timer() was called.&lt;br /&gt;
&lt;br /&gt;
The parameter ''arena'' is needed in this case because SendArenaMessage() requires an arena parameter.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def make_hello_timer(initial, interval, arena):&lt;br /&gt;
    def timer():&lt;br /&gt;
        # announce&lt;br /&gt;
        chat.SendArenaMessage(arena, &amp;quot;hello&amp;quot;)&lt;br /&gt;
        # non-repeating timer. return 1 for it to be called after the next interval&lt;br /&gt;
        return 0&lt;br /&gt;
    return set_timer(timer, initial, interval)&lt;br /&gt;
&lt;br /&gt;
def somefunc(arena):&lt;br /&gt;
    # create a hello timer that will execute after 1 second, and then every&lt;br /&gt;
    #  2 seconds until cancelled. timers can cancel themselves, see above.&lt;br /&gt;
    myref = make_hello_timer(100, 200, arena)&lt;br /&gt;
&lt;br /&gt;
    # cancel the timer by losing the reference to it&lt;br /&gt;
    myref = None&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Regions ===&lt;br /&gt;
This is untested but it should go something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mapdata = get_interface(I_MAPDATA)&lt;br /&gt;
&lt;br /&gt;
# regionname is a string, x and y are map tile coords.&lt;br /&gt;
def region_contains(arena, regionname, x, y):&lt;br /&gt;
    success = 0&lt;br /&gt;
&lt;br /&gt;
    rgn = mapdata.FindRegionByName(arena, regionname)&lt;br /&gt;
&lt;br /&gt;
    if rgn != None and mapdata.Contains(rgn, x, y):&lt;br /&gt;
        success = 1&lt;br /&gt;
&lt;br /&gt;
    return success&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
It is a good idea to cache ''rgn'' within [[#Per-player.2Farena_data|per-arena data]] so you don't add unecessary load to the server looking it up everytime.&lt;br /&gt;
&lt;br /&gt;
== Trouble shooting ==&lt;br /&gt;
Look at the asss console for execution errors (at the time of writing not all errors are relayed to logged in staff), and if that doesn't help, add some chat.SendArenaMessage(ALLARENAS, &amp;quot;i'm at line ...&amp;quot;) type messages to locate the buggy piece of code.&lt;br /&gt;
&lt;br /&gt;
[[Category: Module]]&lt;br /&gt;
[[Category: Tutorial]]&lt;/div&gt;</summary>
		<author><name>D1st0rt</name></author>	</entry>

	<entry>
		<id>http://wiki.minegoboom.com/index.php?title=Category:Settings&amp;diff=857</id>
		<title>Category:Settings</title>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=Category:Settings&amp;diff=857"/>
				<updated>2005-01-14T21:16:27Z</updated>
		
		<summary type="html">&lt;p&gt;D1st0rt: suggestion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
(D1s: Just a thought, but wouldn't it be better to be 1 page with a table of contents?... I'd do it but I don't know how)&lt;br /&gt;
(ed: To be an online template.sss)&lt;br /&gt;
&lt;br /&gt;
[[Misc]]&lt;br /&gt;
*[[Bomb]]&lt;br /&gt;
*[[Mine]]&lt;br /&gt;
*[[Shrapnel]]&lt;br /&gt;
*[[Burst]]&lt;br /&gt;
*[[Toggle]]&lt;br /&gt;
*[[Prize]]&lt;br /&gt;
*[[Radar]]&lt;br /&gt;
*[[Team]]&lt;br /&gt;
*[[Kill]]&lt;br /&gt;
*[[Repel]]&lt;br /&gt;
*[[Message]]&lt;br /&gt;
*[[Wormhole]]&lt;br /&gt;
*[[Latency]]&lt;br /&gt;
*[[Brick]]&lt;br /&gt;
*[[Rocket]]&lt;br /&gt;
*[[Door]]&lt;br /&gt;
*[[Territory]]&lt;br /&gt;
*[[Periodic]]&lt;br /&gt;
*[[Security]]&lt;br /&gt;
*[[Packetloss]]&lt;br /&gt;
*[[Routing]]&lt;br /&gt;
*[[King]]&lt;br /&gt;
*[[Bullet]]&lt;br /&gt;
&lt;br /&gt;
[[PrizeWeight]]&lt;br /&gt;
&lt;br /&gt;
[[Cost]]&lt;br /&gt;
&lt;br /&gt;
[[Ship]]&lt;br /&gt;
&lt;br /&gt;
[[Flag]]&lt;br /&gt;
&lt;br /&gt;
[[Soccer]]&lt;br /&gt;
&lt;br /&gt;
arena.conf&lt;br /&gt;
*[[General]]&lt;br /&gt;
*[[Module-settings|Modules]]&lt;br /&gt;
&lt;br /&gt;
[[Category: Tutorial]]&lt;/div&gt;</summary>
		<author><name>D1st0rt</name></author>	</entry>

	<entry>
		<id>http://wiki.minegoboom.com/index.php?title=Hyperspace&amp;diff=755</id>
		<title>Hyperspace</title>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=Hyperspace&amp;diff=755"/>
				<updated>2005-01-14T02:25:19Z</updated>
		
		<summary type="html">&lt;p&gt;D1st0rt: AreaBot history&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SSCX-A Hyperspace was one of the first zones to adopt [[ASSS]].&lt;br /&gt;
&lt;br /&gt;
== Gameplay ==&lt;br /&gt;
&lt;br /&gt;
== Staff ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=0 frame=void rules=cols width=50%&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td align=center colspan=3&amp;gt;&amp;lt;h3&amp;gt;Sysops and Smods&amp;lt;/h3&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td align=center&amp;gt;[[User:Dr Brain|Dr Brain]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=center&amp;gt;Picano&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=center&amp;gt;Nerusai&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=0 frame=void rules=cols width=50%&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td align=center colspan=4&amp;gt;&amp;lt;h3&amp;gt;Moderators&amp;lt;/h3&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td align=center&amp;gt;D1st0rt&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=center&amp;gt;Coenny&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=center&amp;gt;Quigybobo&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=center&amp;gt;Bomook&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td align=center&amp;gt;Wargh&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=center&amp;gt;FunkmastaD&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=center&amp;gt;nikegurl&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=center&amp;gt;Lanvalk&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
=== Event Horizon ===&lt;br /&gt;
&lt;br /&gt;
Hyperspace started life as a LAN zone played by a small group of friends, Dr Brain among them. They eventually decided to put it online to try and get more players in it. Having something of a scientific bent, they decided to name it ''Event Horizon'' after the point of no return surrounding black holes. The zone, once online never took off. It was briefly hosted on Can-Link before the hosting service imploded. After considering that the zone had only reached a maximum population of 4 players, the zone was abandoned and the group persued more rewarding games such as Infantry and Starcraft.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Dog Fight ===&lt;br /&gt;
&lt;br /&gt;
Months later, Dr Brain revived the zone under the name ''Dog Fight'' with a new map. Again, nothing happened with the zone and it was closed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Jeff's Zone ===&lt;br /&gt;
&lt;br /&gt;
In order to experiment with [[Subgame2]] Dr Brain again hosted Dog Fight under the new name ''Jeff's Stupid Zone''. After some days of fiddling, Dr Brain finally figured out how to make Hypertunnels work. He remade the map and added some Hypertunnels around the very edge of the map. The zone's population doubled to a whole 6 players at peak times. Encouraged by this incredible population boost, more hypertunnels were added and the zone was renamed to ''Jeff's Zone''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hosting, at last ===&lt;br /&gt;
&lt;br /&gt;
Ever since the collapse of Can-Link, the zone had been hosted by Dr Brain on his cable connection. This lead to occasional downtime because of computer crashes and also to more lag than was preferable. SSDZ offered its services and the zone was moved.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hyperspace ===&lt;br /&gt;
&lt;br /&gt;
Dr Brain felt, now that the zone was picking up, that the name ''Jeff's Zone'' was no longer good enough. So, he started asking the player population about new name ideas. Someone suggested the name ''Hyperspeed'' and everyone agreed that it was a great name. Somehow, Dr Brain forgot the exact details of the name and changed the name to ''Hyperspace''. Only later did he realize that everyone had agreed to ''Hyperspeed'', but by then, it was too late to change.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Project 0 ===&lt;br /&gt;
&lt;br /&gt;
This zone was created mainly for graphics testing but later on became  &amp;quot;known&amp;quot; for a small heavily bot maintained arena called Warp2 (warpto joke).  Many colorful graphics and anime girls (specifically catgirls) were featured here.&lt;br /&gt;
&lt;br /&gt;
Average population was around eight and at max 14, not counting 6 bots (only 1 full time).&lt;br /&gt;
&lt;br /&gt;
=== SSXH ===&lt;br /&gt;
&lt;br /&gt;
The intermittent failures of SSDZ lead Dr Brain and picano2.0 to search for new hosting. SSXH under Delta_5 agreed to host the zone and a long period of properity for Hyperspace started.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SSND/SSDX ===&lt;br /&gt;
&lt;br /&gt;
Eventually, SSXH decided to close down. A new host was needed and the SSDX network accepted Hyperspace. After a merger between SSDX and SSN, and several moves between servers on the SSN network, Hyperspace eventually settled down. Unfortuantly, the peace was not to last. Within weeks of quieting down, SSN closed down for no obvious reason.&lt;br /&gt;
&lt;br /&gt;
=== SSI ===&lt;br /&gt;
&lt;br /&gt;
Due to the collapse of SSN, Hyperspace was again hostless and had to be hosted by Dr Brain's less-than-perfect connection. Eventually, hosting was secured from SSI (run by 1stStrike and Argyle). Again, the zone flourished.&lt;br /&gt;
&lt;br /&gt;
=== TWCore &amp;amp; AreaBot ===&lt;br /&gt;
&lt;br /&gt;
As part of the SSI hosting package, Hyperspace developers were given access to the [[TWCore]] bot system (at the time, it was not public access). Everything was great for a while with small populations, but changes were needed to support the growing population. Initially, all kills gave 50 'HS Bucks'. This was changed to an earnings formula by [[User:D1st0rt|D1st0rt]] which was roughly 1+(killed bty / killer bty) * 50. Eventually, as winnings increased, all accounts were reset and prices were raised significantly. As the population in a single arena approached 30, the strain on the AreaBot became too great and it would cease to function. The ?help command was flooded with &amp;quot;FIX THE BOT NOW N00B STAFFS!!!&amp;quot; while available mods scrambled to kill the existing bot and spawn another from the hub. Over time, it got so bad that the hub itself died and had to be manually restarted by 1stStrike. This is considered the &amp;quot;Dark Age&amp;quot; of Hyperspace for the moderating team. In response to the situation, Dr Brain began working on a new system for the then unheard of and highly experimental [[ASSS]] server. The zone took a leave of absence for a few months before re-emerging as SSCX-A.&lt;br /&gt;
&lt;br /&gt;
-add more-&lt;br /&gt;
&lt;br /&gt;
=== Getting SSC ===&lt;br /&gt;
&lt;br /&gt;
=== SSCX-A ===&lt;br /&gt;
&lt;br /&gt;
[[Category: Zones]]&lt;/div&gt;</summary>
		<author><name>D1st0rt</name></author>	</entry>

	<entry>
		<id>http://wiki.minegoboom.com/index.php?title=Talk:Hosts&amp;diff=989</id>
		<title>Talk:Hosts</title>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=Talk:Hosts&amp;diff=989"/>
				<updated>2005-01-14T02:11:53Z</updated>
		
		<summary type="html">&lt;p&gt;D1st0rt: guess it doesn't add name automatically&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:CypherJF|CypherJF]]: Actually I don't think SSN is run by L Chance anymore. I'm not sure the history of it but the latest back I can remember was Altec . running it with Sideburn? Spring/Summer of 2004, Altec . and L Chance brought back SSN using Lord Maucaub's biller system. They shut it back down after HALO switched back to SSZ; and now I believe Dark Mistress / TheBest999 / Cospar / MS-DOS; someone is running it.&lt;br /&gt;
&lt;br /&gt;
[[User:Smong|Smong]]: I think NTC has it now. They keep changing tags which is annoying. For the record I remember them with SSDM and TNT too if you want to stick that in a 'most annoying network decisions ever' page.&lt;br /&gt;
&lt;br /&gt;
[[User:CypherJF|CypherJF]]: Yeah NTC is the Dark Mistress / TheBest999 / Cospar / MS-DOS network.&lt;br /&gt;
&lt;br /&gt;
[[User:Smong|Smong]]:Someone add NTC and SSDT at least. Also I think this page should be called Networks, but that is more jargon I guess and could easily be confused.&lt;br /&gt;
&lt;br /&gt;
[[User:D1st0rt|D1st0rt]]:Whoa 17th is near me? Trench still has a lower ping&lt;/div&gt;</summary>
		<author><name>D1st0rt</name></author>	</entry>

	<entry>
		<id>http://wiki.minegoboom.com/index.php?title=Talk:Hosts&amp;diff=747</id>
		<title>Talk:Hosts</title>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=Talk:Hosts&amp;diff=747"/>
				<updated>2005-01-14T02:10:43Z</updated>
		
		<summary type="html">&lt;p&gt;D1st0rt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:CypherJF|CypherJF]]: Actually I don't think SSN is run by L Chance anymore. I'm not sure the history of it but the latest back I can remember was Altec . running it with Sideburn? Spring/Summer of 2004, Altec . and L Chance brought back SSN using Lord Maucaub's biller system. They shut it back down after HALO switched back to SSZ; and now I believe Dark Mistress / TheBest999 / Cospar / MS-DOS; someone is running it.&lt;br /&gt;
&lt;br /&gt;
[[User:Smong|Smong]]: I think NTC has it now. They keep changing tags which is annoying. For the record I remember them with SSDM and TNT too if you want to stick that in a 'most annoying network decisions ever' page.&lt;br /&gt;
&lt;br /&gt;
[[User:CypherJF|CypherJF]]: Yeah NTC is the Dark Mistress / TheBest999 / Cospar / MS-DOS network.&lt;br /&gt;
&lt;br /&gt;
[[User:Smong|Smong]]:Someone add NTC and SSDT at least. Also I think this page should be called Networks, but that is more jargon I guess and could easily be confused.&lt;br /&gt;
&lt;br /&gt;
Whoa 17th is near me?&lt;/div&gt;</summary>
		<author><name>D1st0rt</name></author>	</entry>

	<entry>
		<id>http://wiki.minegoboom.com/index.php?title=CCC&amp;diff=915</id>
		<title>CCC</title>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=CCC&amp;diff=915"/>
				<updated>2005-01-14T02:03:35Z</updated>
		
		<summary type="html">&lt;p&gt;D1st0rt: spelling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CCC is a chat client using the [[ChatNet Protocol|TCP chat protocol]]. It's written in Python by [[grelminar]]. It is available in the [[ASSS]] distribution, or from http://sscx.net/asss/ccc.&lt;br /&gt;
&lt;br /&gt;
Features:&lt;br /&gt;
&lt;br /&gt;
* runs in a console windows, so it's easy to use over ssh&lt;br /&gt;
* auto-reconnecting after disconnection&lt;br /&gt;
* complete logging of everything to a file&lt;br /&gt;
* double-colon support&lt;br /&gt;
* separate windows for different chat channels, mod chat, and private messages&lt;br /&gt;
* multiple profile support&lt;br /&gt;
* auto-enter commands&lt;br /&gt;
&lt;br /&gt;
[[Category: ChatNet Clients]]&lt;/div&gt;</summary>
		<author><name>D1st0rt</name></author>	</entry>

	<entry>
		<id>http://wiki.minegoboom.com/index.php?title=Writing_Modules_In_C&amp;diff=24</id>
		<title>Writing Modules In C</title>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=Writing_Modules_In_C&amp;diff=24"/>
				<updated>2005-01-10T22:03:23Z</updated>
		
		<summary type="html">&lt;p&gt;D1st0rt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The easiest way to write a module in C is to work off a template, as certain parts of all modules are identical. Here is a template that does nothing more than connect with the server:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/*&lt;br /&gt;
	Template Module&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;asss.h&amp;quot;&lt;br /&gt;
// Interfaces&lt;br /&gt;
local Imodman *mm;&lt;br /&gt;
&lt;br /&gt;
// The entry point:&lt;br /&gt;
EXPORT int MM_testModule(int action, Imodman *mm_, Arena *arena)&lt;br /&gt;
{&lt;br /&gt;
	if (action == MM_LOAD)&lt;br /&gt;
	{&lt;br /&gt;
		mm = mm_;&lt;br /&gt;
		return MM_OK;&lt;br /&gt;
	}&lt;br /&gt;
	else if (action == MM_UNLOAD)&lt;br /&gt;
	{	&lt;br /&gt;
		return MM_OK;&lt;br /&gt;
	}&lt;br /&gt;
	else if (action == MM_ATTACH)&lt;br /&gt;
	{		&lt;br /&gt;
		return MM_OK;&lt;br /&gt;
	}&lt;br /&gt;
	else if (action == MM_DETACH)&lt;br /&gt;
	{&lt;br /&gt;
		return MM_OK;&lt;br /&gt;
	}&lt;br /&gt;
	return MM_FAIL;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>D1st0rt</name></author>	</entry>

	<entry>
		<id>http://wiki.minegoboom.com/index.php?title=Creating_New_Subarenas&amp;diff=32</id>
		<title>Creating New Subarenas</title>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=Creating_New_Subarenas&amp;diff=32"/>
				<updated>2005-01-10T21:58:15Z</updated>
		
		<summary type="html">&lt;p&gt;D1st0rt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To create a new arena type '''?makearena (arena name)'''. Settings changes made in this arena will now only apply to this arena.&lt;br /&gt;
&lt;br /&gt;
To change the map, change the location of the file in the [General] Section&lt;/div&gt;</summary>
		<author><name>D1st0rt</name></author>	</entry>

	<entry>
		<id>http://wiki.minegoboom.com/index.php?title=Writing_Modules_In_C&amp;diff=23</id>
		<title>Writing Modules In C</title>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=Writing_Modules_In_C&amp;diff=23"/>
				<updated>2005-01-10T21:53:23Z</updated>
		
		<summary type="html">&lt;p&gt;D1st0rt: formatted code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The easiest way to write a module in C is to work off a template, as certain parts of all modules are identical. Here is a template that does nothing more than connect with the server:&lt;br /&gt;
&lt;br /&gt;
(TODO: How do I format code?)&lt;br /&gt;
&amp;lt;pre&amp;gt;/*&lt;br /&gt;
	Template Module&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;asss.h&amp;quot;&lt;br /&gt;
// Interfaces&lt;br /&gt;
local Imodman *mm;&lt;br /&gt;
&lt;br /&gt;
// The entry point:&lt;br /&gt;
EXPORT int MM_testModule(int action, Imodman *mm_, Arena *arena)&lt;br /&gt;
{&lt;br /&gt;
	if (action == MM_LOAD)&lt;br /&gt;
	{&lt;br /&gt;
		mm = mm_;&lt;br /&gt;
		return MM_OK;&lt;br /&gt;
	}&lt;br /&gt;
	else if (action == MM_UNLOAD)&lt;br /&gt;
	{	&lt;br /&gt;
		return MM_OK;&lt;br /&gt;
	}&lt;br /&gt;
	else if (action == MM_ATTACH)&lt;br /&gt;
	{		&lt;br /&gt;
		return MM_OK;&lt;br /&gt;
	}&lt;br /&gt;
	else if (action == MM_DETACH)&lt;br /&gt;
	{&lt;br /&gt;
		return MM_OK;&lt;br /&gt;
	}&lt;br /&gt;
	return MM_FAIL;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>D1st0rt</name></author>	</entry>

	<entry>
		<id>http://wiki.minegoboom.com/index.php?title=TWCore&amp;diff=164</id>
		<title>TWCore</title>
		<link rel="alternate" type="text/html" href="http://wiki.minegoboom.com/index.php?title=TWCore&amp;diff=164"/>
				<updated>2005-01-10T21:45:38Z</updated>
		
		<summary type="html">&lt;p&gt;D1st0rt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TWCore is an open source bot core written in Java maintained by qan. Widely used in Trench Wars(TW), it can be downloaded from [http://twcore.twzone.net/core/ here]. It's rivals include [[MERVCore]] and [[Powerbot]].&lt;/div&gt;</summary>
		<author><name>D1st0rt</name></author>	</entry>

	</feed>