<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.bzflag.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Catay</id>
	<title>BZFlagWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.bzflag.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Catay"/>
	<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/Special:Contributions/Catay"/>
	<updated>2026-05-05T01:29:24Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Bz_eHostBanNotifyEvent&amp;diff=4516</id>
		<title>Bz eHostBanNotifyEvent</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Bz_eHostBanNotifyEvent&amp;diff=4516"/>
		<updated>2008-04-23T16:23:00Z</updated>

		<summary type="html">&lt;p&gt;Catay: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BZFS_API_Doc}}&lt;br /&gt;
{{BZFS_API_Events}}&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
The &#039;&#039;&#039;bz_eHostBanNotifyEvent&#039;&#039;&#039; is an API event that is called each time a&lt;br /&gt;
hostban is executed.&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
&#039;&#039;&#039;bz_eHostBanNotifyEvent&#039;&#039;&#039; returns the &#039;&#039;&#039;bz_HostBanEventData_V1&#039;&#039;&#039; data&lt;br /&gt;
class.&lt;br /&gt;
  {| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;20&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
  !name&lt;br /&gt;
  !type&lt;br /&gt;
  !value description&lt;br /&gt;
  |-&lt;br /&gt;
  |eventType&lt;br /&gt;
  |[[Event(API)|bz_eEventType]]&lt;br /&gt;
  |bz_eHostBanNotifyEvent&lt;br /&gt;
  |-&lt;br /&gt;
  |bannerID&lt;br /&gt;
  |int&lt;br /&gt;
  |This value is the player ID for the banner.&lt;br /&gt;
  |-&lt;br /&gt;
  |duration&lt;br /&gt;
  |int&lt;br /&gt;
  |This value is the duration of the ban in minutes.&lt;br /&gt;
  |-&lt;br /&gt;
  |reason&lt;br /&gt;
  |[[bz_ApiString]]&lt;br /&gt;
  |This value contains the reason why and by who a player got banned.&lt;br /&gt;
  |-&lt;br /&gt;
  |hostPattern&lt;br /&gt;
  |[[bz_ApiString]]&lt;br /&gt;
  |This value contains the host pattern that is banned.&lt;br /&gt;
  |-&lt;br /&gt;
  |eventTime&lt;br /&gt;
  |double&lt;br /&gt;
  |This value is the local server time of the event.&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
==Uses==&lt;br /&gt;
This event is a notification only event, none of the data returned&lt;br /&gt;
can be changed.&lt;/div&gt;</summary>
		<author><name>Catay</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Bz_eHostBanModifyEvent&amp;diff=4515</id>
		<title>Bz eHostBanModifyEvent</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Bz_eHostBanModifyEvent&amp;diff=4515"/>
		<updated>2008-04-23T16:21:53Z</updated>

		<summary type="html">&lt;p&gt;Catay: New page: {{BZFS_API_Doc}} {{BZFS_API_Events}}  ==Overview== The &amp;#039;&amp;#039;&amp;#039;bz_eHostBanModifyEvent&amp;#039;&amp;#039;&amp;#039; is an API event that is called each time  before a hostban is going to happen.  ==Data== &amp;#039;&amp;#039;&amp;#039;bz_eHostBanM...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BZFS_API_Doc}}&lt;br /&gt;
{{BZFS_API_Events}}&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
The &#039;&#039;&#039;bz_eHostBanModifyEvent&#039;&#039;&#039; is an API event that is called each time &lt;br /&gt;
before a hostban is going to happen.&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
&#039;&#039;&#039;bz_eHostBanModifyEvent&#039;&#039;&#039; returns the &#039;&#039;&#039;bz_HostBanEventData_V1&#039;&#039;&#039; data&lt;br /&gt;
class.&lt;br /&gt;
  {| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;20&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
  !name&lt;br /&gt;
  !type&lt;br /&gt;
  !value description&lt;br /&gt;
  |-&lt;br /&gt;
  |eventType&lt;br /&gt;
  |[[Event(API)|bz_eEventType]]&lt;br /&gt;
  |bz_eHostBanModifyEvent&lt;br /&gt;
  |-&lt;br /&gt;
  |bannerID&lt;br /&gt;
  |int&lt;br /&gt;
  |This value is the player ID for the banner.&lt;br /&gt;
  |-&lt;br /&gt;
  |duration&lt;br /&gt;
  |int&lt;br /&gt;
  |This value is the duration of the ban in minutes.&lt;br /&gt;
  |-&lt;br /&gt;
  |reason&lt;br /&gt;
  |[[bz_ApiString]]&lt;br /&gt;
  |This value contains the reason why and by who a player got banned.&lt;br /&gt;
  |-&lt;br /&gt;
  |hostPattern&lt;br /&gt;
  |[[bz_ApiString]]&lt;br /&gt;
  |This value contains the host pattern that is banned.&lt;br /&gt;
  |-&lt;br /&gt;
  |eventTime&lt;br /&gt;
  |double&lt;br /&gt;
  |This value is the local server time of the event.&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
==Uses==&lt;br /&gt;
This event is a modification event, all the members except evenTime can&lt;br /&gt;
be changed. In case bannerID is changed to a non-existant ID , the ban &lt;br /&gt;
will fail.&lt;/div&gt;</summary>
		<author><name>Catay</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Bz_eHostBanNotifyEvent&amp;diff=4514</id>
		<title>Bz eHostBanNotifyEvent</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Bz_eHostBanNotifyEvent&amp;diff=4514"/>
		<updated>2008-04-23T16:17:27Z</updated>

		<summary type="html">&lt;p&gt;Catay: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BZFS_API_Doc}}&lt;br /&gt;
{{BZFS_API_Events}}&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
The &#039;&#039;&#039;bz_eHostBanNotifyEvent&#039;&#039;&#039; is an API event that is called each time a&lt;br /&gt;
regular ban is executed.&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
&#039;&#039;&#039;bz_eHostBanNotifyEvent&#039;&#039;&#039; returns the &#039;&#039;&#039;bz_HostBanEventData_V1&#039;&#039;&#039; data&lt;br /&gt;
class.&lt;br /&gt;
  {| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;20&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
  !name&lt;br /&gt;
  !type&lt;br /&gt;
  !value description&lt;br /&gt;
  |-&lt;br /&gt;
  |eventType&lt;br /&gt;
  |[[Event(API)|bz_eEventType]]&lt;br /&gt;
  |bz_eHostBanNotifyEvent&lt;br /&gt;
  |-&lt;br /&gt;
  |bannerID&lt;br /&gt;
  |int&lt;br /&gt;
  |This value is the player ID for the banner.&lt;br /&gt;
  |-&lt;br /&gt;
  |duration&lt;br /&gt;
  |int&lt;br /&gt;
  |This value is the duration of the ban in minutes.&lt;br /&gt;
  |-&lt;br /&gt;
  |reason&lt;br /&gt;
  |[[bz_ApiString]]&lt;br /&gt;
  |This value contains the reason why and by who a player got banned.&lt;br /&gt;
  |-&lt;br /&gt;
  |hostPattern&lt;br /&gt;
  |[[bz_ApiString]]&lt;br /&gt;
  |This value contains the host pattern that is banned.&lt;br /&gt;
  |-&lt;br /&gt;
  |eventTime&lt;br /&gt;
  |double&lt;br /&gt;
  |This value is the local server time of the event.&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
==Uses==&lt;br /&gt;
This event is a notification only event, none of the data returned&lt;br /&gt;
can be changed.&lt;/div&gt;</summary>
		<author><name>Catay</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Bz_eHostBanEvent&amp;diff=4513</id>
		<title>Bz eHostBanEvent</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Bz_eHostBanEvent&amp;diff=4513"/>
		<updated>2008-04-23T16:15:07Z</updated>

		<summary type="html">&lt;p&gt;Catay: Bz eHostBanEvent moved to Bz eHostBanNotifyEvent: event name changed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Bz eHostBanNotifyEvent]]&lt;/div&gt;</summary>
		<author><name>Catay</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Bz_eHostBanNotifyEvent&amp;diff=4512</id>
		<title>Bz eHostBanNotifyEvent</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Bz_eHostBanNotifyEvent&amp;diff=4512"/>
		<updated>2008-04-23T16:15:07Z</updated>

		<summary type="html">&lt;p&gt;Catay: Bz eHostBanEvent moved to Bz eHostBanNotifyEvent: event name changed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BZFS_API_Doc}}&lt;br /&gt;
{{BZFS_API_Events}}&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
The &#039;&#039;&#039;bz_eHostBanEvent&#039;&#039;&#039; is an API event that is called each time a&lt;br /&gt;
regular ban is executed.&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
&#039;&#039;&#039;bz_eHostBanEvent&#039;&#039;&#039; returns the &#039;&#039;&#039;bz_HostBanEventData_V1&#039;&#039;&#039; data&lt;br /&gt;
class.&lt;br /&gt;
&lt;br /&gt;
  {| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;20&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
  !name&lt;br /&gt;
  !type&lt;br /&gt;
  !value description&lt;br /&gt;
  |-&lt;br /&gt;
  |eventType&lt;br /&gt;
  |[[Event(API)|bz_eEventType]]&lt;br /&gt;
  |bz_eHostBanEvent&lt;br /&gt;
  |-&lt;br /&gt;
  |bannerID&lt;br /&gt;
  |int&lt;br /&gt;
  |This value is the player ID for the banner.&lt;br /&gt;
  |-&lt;br /&gt;
  |duration&lt;br /&gt;
  |int&lt;br /&gt;
  |This value is the duration of the ban in minutes.&lt;br /&gt;
  |-&lt;br /&gt;
  |reason&lt;br /&gt;
  |[[bz_ApiString]]&lt;br /&gt;
  |This value contains the reason why and by who a player got banned.&lt;br /&gt;
  |-&lt;br /&gt;
  |hostPattern&lt;br /&gt;
  |[[bz_ApiString]]&lt;br /&gt;
  |This value contains the host pattern that is banned.&lt;br /&gt;
  |-&lt;br /&gt;
  |eventTime&lt;br /&gt;
  |double&lt;br /&gt;
  |This value is the local server time of the event.&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
==Uses==&lt;br /&gt;
This event is a notification only event, none of the data returned&lt;br /&gt;
can be changed.&lt;/div&gt;</summary>
		<author><name>Catay</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Events_(API)&amp;diff=4511</id>
		<title>Events (API)</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Events_(API)&amp;diff=4511"/>
		<updated>2008-04-23T16:10:43Z</updated>

		<summary type="html">&lt;p&gt;Catay: /* Events */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Fill in articles for all API events}}&lt;br /&gt;
&lt;br /&gt;
{{BZFS_API_Doc}}&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
API events are callbacks that a [[Plug-ins|plug-in]] can install into [[BZFS]] to be called in response to specific actions or state changes in the server side game world. Events are the primary method of communication from BZFS to installed plug-ins. Specific events exist for nearly all logical actions that can happen during a game of BZFlag.&lt;br /&gt;
&lt;br /&gt;
==Installation and Removal==&lt;br /&gt;
The callbacks for events are typically installed during the [[bz_Load]] entry point in a plug-in, so they can be active when a plug-in is first loaded.&lt;br /&gt;
&lt;br /&gt;
The plug-in must call the function;&lt;br /&gt;
&lt;br /&gt;
 BZF_API bool [[bz_registerEvent]] ( bz_eEventType eventType, [[bz_EventHandler]]* eventHandler );&lt;br /&gt;
&lt;br /&gt;
The plug-in registers and event callback derived from [[bz_EventHandler]] for each specific event types it wishes to monitor.&lt;br /&gt;
&lt;br /&gt;
When a plug-in no longer needs to monitor an event, or when it is unloaded in the [[bz_Unload]] entry point, the plug-in must remove the installed callback by calling the function;&lt;br /&gt;
&lt;br /&gt;
 BZF_API bool [[bz_removeEvent]] ( bz_eEventType eventType, [[bz_EventHandler]]* eventHandler );&lt;br /&gt;
&lt;br /&gt;
==Event Handler==&lt;br /&gt;
The plug-in must define a class that is derived from [[bz_EventHandler]] and pass a pointer to an object of that class when ever it registers an event callback.&lt;br /&gt;
&lt;br /&gt;
When ever a specific event is triggered, BZFS will call the &#039;process&#039; method of the installed callback class.&lt;br /&gt;
&lt;br /&gt;
   virtual void process ( bz_EventData *eventData ) = 0;&lt;br /&gt;
&lt;br /&gt;
==Event Data==&lt;br /&gt;
With each call to the &#039;process&#039; method of the installed event handler, BZFS will pass the plug-in a pointer to a class that contains all the data provided by the event. Each event derives a specific data class from [[bz_EventData]] that contains the specific member variables that contain the data. The base class [[bz_EventData]] contains the data member;&lt;br /&gt;
   bz_eEventType	eventType;&lt;br /&gt;
This data member allows a plug-in to identify the specific event and cast the &#039;bz_EventData&#039; pointer to the appropriate specific data class. This is usefull for plug-ins that use the same &#039;bz_EventHandler&#039; to process more then one specific message.&lt;br /&gt;
&lt;br /&gt;
Please see the descriptions of each specific event for information and descriptions of the data classes for each event. Some specific events allow plug-ins to change the values of data members in the data class and will use the modified values instead.&lt;br /&gt;
&lt;br /&gt;
Plug-ins should never delete or free the memory for a data class. BZFS will manage all pointers passed to plug-ins.&lt;br /&gt;
&lt;br /&gt;
==Events==&lt;br /&gt;
The following list contains all the event types currently supported by BZFS version 2.99&lt;br /&gt;
&lt;br /&gt;
  [[bz_eNullEvent]]&lt;br /&gt;
  [[bz_eCaptureEvent]]&lt;br /&gt;
  [[bz_ePlayerDieEvent]]&lt;br /&gt;
  [[bz_ePlayerSpawnEvent]]&lt;br /&gt;
  [[bz_eZoneEntryEvent]]&lt;br /&gt;
  [[bz_eZoneExitEvent]]&lt;br /&gt;
  [[bz_ePlayerJoinEvent]]&lt;br /&gt;
  [[bz_ePlayerPartEvent]]&lt;br /&gt;
  [[bz_eRawChatMessageEvent]]&lt;br /&gt;
  [[bz_eFilteredChatMessageEvent]]&lt;br /&gt;
  [[bz_eUnknownSlashCommand]]&lt;br /&gt;
  [[bz_eGetPlayerSpawnPosEvent]]&lt;br /&gt;
  [[bz_eGetAutoTeamEvent]]&lt;br /&gt;
  [[bz_eAllowPlayer]]&lt;br /&gt;
  [[bz_eTickEvent]]&lt;br /&gt;
  [[bz_eGetWorldEvent]]&lt;br /&gt;
  [[bz_eGetPlayerInfoEvent]]&lt;br /&gt;
  [[bz_eAllowSpawn]]&lt;br /&gt;
  [[bz_eListServerUpdateEvent]]&lt;br /&gt;
  [[bz_eBanEvent]]&lt;br /&gt;
  [[bz_eHostBanNotifyEvent]]&lt;br /&gt;
  [[bz_eHostBanModifyEvent]]&lt;br /&gt;
  [[bz_eIdBanEvent]]&lt;br /&gt;
  [[bz_eKickEvent]]&lt;br /&gt;
  [[bz_eKillEvent]]&lt;br /&gt;
  [[bz_ePlayerPausedEvent]]&lt;br /&gt;
  [[bz_eMessageFilteredEvent]]&lt;br /&gt;
  [[bz_eGameStartEvent]]&lt;br /&gt;
  [[bz_eGameEndEvent]]&lt;br /&gt;
  [[bz_eSlashCommandEvent]]&lt;br /&gt;
  [[bz_ePlayerAuthEvent]]&lt;br /&gt;
  [[bz_eServerMsgEvent]]&lt;br /&gt;
  [[bz_eShotFiredEvent]]&lt;br /&gt;
  [[bz_eAnointRabbitEvent]]&lt;br /&gt;
  [[bz_eNewRabbitEvent]]&lt;br /&gt;
  [[bz_eReloadEvent]]&lt;br /&gt;
  [[bz_ePlayerUpdateEvent]]&lt;br /&gt;
  [[bz_eNetDataSendEvent]]&lt;br /&gt;
  [[bz_eNetDataReceveEvent]]&lt;br /&gt;
  [[bz_eLoggingEvent]]&lt;br /&gt;
  [[bz_eFlagTransferredEvent]]&lt;br /&gt;
  [[bz_eFlagGrabbedEvent]]&lt;br /&gt;
  [[bz_eFlagDroppedEvent]]&lt;br /&gt;
  [[bz_eShotEndedEvent]]&lt;br /&gt;
  [[bz_eNewNonPlayerConnection]]&lt;br /&gt;
  [[bz_eIdleNewNonPlayerConnection]]&lt;br /&gt;
  [[bz_ePlayerCollision]]&lt;br /&gt;
  [[bz_eFlagResetEvent]]&lt;br /&gt;
  [[bz_eWorldFinalized]]&lt;br /&gt;
  [[bz_eAllowCTFCaptureEvent]]&lt;br /&gt;
  [[bz_eAllowFlagGrabEvent]]&lt;br /&gt;
  [[bz_eAllowKillCommandEvent]]&lt;br /&gt;
  [[bz_eReportFiledEvent]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There exists one additional event in the &#039;bz_eEventType&#039; enumeration in &#039;bzfsAPI.h&#039;, &#039;&#039;bz_eLastEvent&#039;&#039;. This event is simply used by BZFS to assist in the counting of the total number of events, it will never be called and can not be installed.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[BZFS API]]&lt;br /&gt;
&lt;br /&gt;
[[plug-ins]]&lt;br /&gt;
&lt;br /&gt;
[[Category:BZFS_API_Events]]&lt;/div&gt;</summary>
		<author><name>Catay</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Functions_(API)&amp;diff=4489</id>
		<title>Functions (API)</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Functions_(API)&amp;diff=4489"/>
		<updated>2008-04-21T22:20:24Z</updated>

		<summary type="html">&lt;p&gt;Catay: /* Server Administration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Fill in articles for all API Functions}}&lt;br /&gt;
&lt;br /&gt;
{{BZFS_API_Doc}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The BZFS API provides a number of functions to plug-ins for use in querying the current game state. Functions are used both to get information about the game, and to trigger in game actions, such as activating a world weapon.&lt;br /&gt;
&lt;br /&gt;
==Function Groups==&lt;br /&gt;
Functions are broken into a series of groups based on the type of action or information they deal with.&lt;br /&gt;
&lt;br /&gt;
===Event Registration===&lt;br /&gt;
 BZF_API bool [[bz_registerEvent]] ( [[Events(API)|bz_eEventType]] eventType, [[Events(API)|bz_EventHandler]]* eventHandler );&lt;br /&gt;
 BZF_API bool [[bz_removeEvent]] ( [[Events(API)|bz_eEventType]] eventType, [[Events(API)|bz_EventHandler]]* eventHandler );&lt;br /&gt;
&lt;br /&gt;
===Non-Player Connections===&lt;br /&gt;
 BZF_API bool [[bz_registerNonPlayerConnectionHandler]] ( int connectionID, [[bz_NonPlayerConnectionHandler]]* handler );&lt;br /&gt;
 BZF_API bool [[bz_removeNonPlayerConnectionHandler]] ( int connectionID, [[bz_NonPlayerConnectionHandler]]* handler );&lt;br /&gt;
 BZF_API bool [[bz_sendNonPlayerData]] ( int connectionID, const void *data, unsigned int size );&lt;br /&gt;
 BZF_API bool [[bz_disconectNonPlayerConnection]] ( int connectionID );&lt;br /&gt;
&lt;br /&gt;
===Player Information===&lt;br /&gt;
&lt;br /&gt;
 BZF_API bool [[bz_getPlayerIndexList]] ( [[bz_APIIntList]] *playerList );&lt;br /&gt;
 BZF_API [[bz_APIIntList]] *[[bz_getPlayerIndexList]] ( void );&lt;br /&gt;
 BZF_API [[bz_BasePlayerRecord]] *[[bz_getPlayerByIndex]] ( int index );&lt;br /&gt;
 BZF_API bool [[bz_updatePlayerData]] ( [[bz_BasePlayerRecord]] *playerRecord );&lt;br /&gt;
 BZF_API bool [[bz_hasPerm]] ( int playerID, const char* perm );&lt;br /&gt;
 BZF_API bool [[bz_grantPerm]] ( int playerID, const char* perm );&lt;br /&gt;
 BZF_API bool [[bz_revokePerm]] ( int playerID, const char* perm );&lt;br /&gt;
 BZF_API bool [[bz_getAdmin]] ( int playerID );&lt;br /&gt;
 BZF_API bool [[bz_validAdminPassword]] ( const char* passwd );&lt;br /&gt;
 BZF_API bool [[bz_freePlayerRecord]] ( [[bz_BasePlayerRecord]] *playerRecord );&lt;br /&gt;
 BZF_API const char* [[bz_getPlayerFlag]] ( int playerID );&lt;br /&gt;
 BZF_API bool [[bz_getPlayerCurrentState]] ( int playerID, [[bz_PlayerUpdateState]] &amp;amp;state );&lt;br /&gt;
 BZF_API bool [[bz_isPlayerPaused]] ( int playerID );&lt;br /&gt;
 BZF_API bool [[bz_setPlayerOperator]] ( int playerId );&lt;br /&gt;
 BZF_API [[bz_APIIntList]]* [[bz_getPlayerIndexList]] ( void );&lt;br /&gt;
 BZF_API bool [[bz_canPlayerSpawn]]( int playerID );&lt;br /&gt;
 BZF_API bool [[bz_setPlayerSpawnable]]( int playerID, bool spawn );&lt;br /&gt;
 BZF_API bool [[bz_setPlayerLimboText]]( int playerID, const char* text );&lt;br /&gt;
 BZF_API int [[bz_getPlayerCount]] ( void );&lt;br /&gt;
 BZF_API bool [[bz_anyPlayers]] ( void );&lt;br /&gt;
&lt;br /&gt;
=== Team Management===&lt;br /&gt;
 BZF_API unsigned int [[bz_getTeamPlayerLimit]] ( bz_eTeamType team )&lt;br /&gt;
 BZF_API int [[bz_getTeamCount]] ([[bz_eTeamType]] team );&lt;br /&gt;
 BZF_API int [[bz_getTeamScore]] ([[bz_eTeamType]] team );&lt;br /&gt;
 BZF_API int [[bz_getTeamWins]] ([[bz_eTeamType]] team );&lt;br /&gt;
 BZF_API int [[bz_getTeamLosses]] ([[bz_eTeamType]] team );&lt;br /&gt;
 BZF_API void [[bz_setTeamWins]] ([[bz_eTeamType]] team, int wins );&lt;br /&gt;
 BZF_API void [[bz_setTeamLosses]] ([[bz_eTeamType]] team, int losses );&lt;br /&gt;
 BZF_API void [[bz_resetTeamScore]] ([[bz_eTeamType]] team );&lt;br /&gt;
 BZF_API void [[bz_resetTeamScores]] ( void );&lt;br /&gt;
 BZF_API void [[bz_changeTeam]]( int player, [[bz_eTeamType]] team );&lt;br /&gt;
&lt;br /&gt;
=== Score Management ===&lt;br /&gt;
 BZF_API bool [[bz_setPlayerWins]] (int playerId, int wins);&lt;br /&gt;
 BZF_API bool [[bz_setPlayerLosses]] (int playerId, int losses);&lt;br /&gt;
 BZF_API bool [[bz_setPlayerTKs]] (int playerId, int tks);&lt;br /&gt;
 BZF_API bool [[bz_resetPlayerScore]] (int playerId);&lt;br /&gt;
 BZF_API int [[bz_getPlayerWins]] (int playerId);&lt;br /&gt;
 BZF_API int [[bz_getPlayerLosses]] (int playerId);&lt;br /&gt;
 BZF_API int [[bz_getPlayerTKs]] (int playerId);&lt;br /&gt;
&lt;br /&gt;
=== Latency Information ===&lt;br /&gt;
 BZF_API int [[bz_getPlayerLag]] ( int playerId );&lt;br /&gt;
 BZF_API int [[bz_getPlayerJitter]] ( int playerId );&lt;br /&gt;
 BZF_API float [[bz_getPlayerPacketloss]] ( int playerId );&lt;br /&gt;
&lt;br /&gt;
=== Permission Group Management ===&lt;br /&gt;
 BZF_API [[bz_APIStringList]]* [[bz_getGroupList]] ( void );&lt;br /&gt;
 BZF_API [[bz_APIStringList]]* [[bz_getGroupPerms]] ( const char* group );&lt;br /&gt;
 BZF_API bool [[bz_groupAllowPerm]]( const char* group, const char* perm );&lt;br /&gt;
&lt;br /&gt;
=== Chat Messages ===&lt;br /&gt;
 BZF_API bool [[bz_sendTextMessage]] (int from, int to, const char* message);&lt;br /&gt;
 BZF_API bool [[bz_sendTextMessage]] (int from, [[bz_eTeamType]] to, const char* message);&lt;br /&gt;
 BZF_API bool [[bz_sendTextMessagef]] (int from, int to, const char* fmt, ...);&lt;br /&gt;
 BZF_API bool [[bz_sendTextMessagef]] (int from, [[bz_eTeamType]] to, const char* fmt, ...);&lt;br /&gt;
 BZF_API bool [[bz_sendFetchResMessage]] ( int playerID,  const char* URL );&lt;br /&gt;
&lt;br /&gt;
=== Server Management ===&lt;br /&gt;
 BZF_API bool [[bz_restart]] ( void );&lt;br /&gt;
 BZF_API void [[bz_shutdown]] ();&lt;br /&gt;
 BZF_API void [[bz_superkill]] ();&lt;br /&gt;
 BZF_API void [[bz_gameOver]] (int playerID, bz_eTeamType = eNoTeam);&lt;br /&gt;
 BZF_API void [[bz_reloadLocalBans]] ();&lt;br /&gt;
 BZF_API void [[bz_reloadMasterBans]] ();&lt;br /&gt;
 BZF_API void [[bz_reloadGroups]] ();&lt;br /&gt;
 BZF_API void [[bz_reloadUsers]] ();&lt;br /&gt;
 BZF_API void [[bz_reloadHelp]] ();&lt;br /&gt;
&lt;br /&gt;
=== Rabbit Hunt===&lt;br /&gt;
 BZF_API void [[bz_newRabbit]]( int player, bool swap );&lt;br /&gt;
 BZF_API void [[bz_removeRabbit]]( int player );&lt;br /&gt;
&lt;br /&gt;
=== Map Management ===&lt;br /&gt;
 BZF_API void [[bz_setClientWorldDownloadURL]]( const char* URL );&lt;br /&gt;
 BZF_API const bzApiString [[bz_getClientWorldDownloadURL]] ( void );&lt;br /&gt;
 BZF_API bool [[bz_saveWorldCacheFile]]( const char* file );&lt;br /&gt;
&lt;br /&gt;
=== Flag Management ===&lt;br /&gt;
&lt;br /&gt;
 BZF_API bool [[bz_givePlayerFlag]] ( int playerID, const char* flagType, bool force );&lt;br /&gt;
 BZF_API bool [[bz_removePlayerFlag]] ( int playerID );&lt;br /&gt;
 BZF_API void [[bz_resetFlags]] ( bool onlyUnused );&lt;br /&gt;
 BZF_API unsigned int [[bz_getNumFlags]] ( void );&lt;br /&gt;
 BZF_API const [[bz_ApiString]] [[bz_getFlagName]]( int flag );&lt;br /&gt;
 BZF_API bool [[bz_resetFlag]] ( int flag );&lt;br /&gt;
 BZF_API int [[bz_flagPlayer]] ( int flag );&lt;br /&gt;
 BZF_API bool [[bz_getFlagPosition]] ( int flag, float* pos );&lt;br /&gt;
 BZF_API bool [[bz_moveFlag]] ( int flag, float pos[3], bool reset = true );&lt;br /&gt;
 BZF_API bool [[bz_RegisterCustomFlag]] ( const char* abbr, const char* name, const char* helpString, bz_eShotType shotType, bz_eFlagQuality quality );&lt;br /&gt;
&lt;br /&gt;
=== Shot Type Control ===&lt;br /&gt;
 BZF_API bool [[bz_setPlayerShotType]]( int playerId, [[bz_eShotType]] shotType );&lt;br /&gt;
&lt;br /&gt;
=== World Weapon Management ===&lt;br /&gt;
 BZF_API bool [[bz_fireWorldWep]] ( const char* flagType, float lifetime, float *pos, float tilt, float direction, int shotID , float dt );&lt;br /&gt;
 BZF_API int [[bz_fireWorldGM]] ( int targetPlayerID, float lifetime, float *pos, float tilt, float direction, float dt);&lt;br /&gt;
&lt;br /&gt;
=== Server Time ===&lt;br /&gt;
 BZF_API double [[bz_getCurrentTime]] ( void );&lt;br /&gt;
 BZF_API float [[bz_getMaxWaitTime]] ( void );&lt;br /&gt;
 BZF_API void [[bz_setMaxWaitTime]] ( float maxTime );&lt;br /&gt;
 BZF_API void [[bz_getLocaltime]] ( [[bz_localTime]] *ts );&lt;br /&gt;
&lt;br /&gt;
=== Global Database Management (BZDB) ===&lt;br /&gt;
 BZF_API double [[bz_getBZDBDouble]] ( const char* variable );&lt;br /&gt;
 BZF_API [[bz_ApiString]] [[bz_getBZDBString]]( const char* variable );&lt;br /&gt;
 BZF_API bool [[bz_getBZDBBool]]( const char* variable );&lt;br /&gt;
 BZF_API int [[bz_getBZDBInt]]( const char* variable );&lt;br /&gt;
 BZF_API int [[bz_getBZDBItemPerms]] ( const char* variable );&lt;br /&gt;
 BZF_API bool [[bz_getBZDBItemPersistent]]( const char* variable );&lt;br /&gt;
 BZF_API bool [[bz_BZDBItemExists]]( const char* variable );&lt;br /&gt;
 BZF_API bool [[bz_setBZDBDouble]] ( const char* variable, double val, int perms = 0, bool persistent = false );&lt;br /&gt;
 BZF_API bool [[bz_setBZDBString]]( const char* variable, const char *val, int perms = 0, bool persistent = false  );&lt;br /&gt;
 BZF_API bool [[bz_setBZDBBool]]( const char* variable, bool val, int perms = 0, bool persistent = false  );&lt;br /&gt;
 BZF_API bool [[bz_setBZDBInt]]( const char* variable, int val, int perms = 0, bool persistent = false  );&lt;br /&gt;
 BZF_API int [[bz_getBZDBVarList]]( bz_APIStringList	*varList );&lt;br /&gt;
 BZF_API void [[bz_resetBZDBVar]]( const char* variable );&lt;br /&gt;
 BZF_API void [[bz_resetALLBZDBVars]]( void );&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
 BZF_API void [[bz_debugMessage]] ( int level, const char* message );&lt;br /&gt;
 BZF_API void [[bz_debugMessagef]]( int level, const char* fmt, ... )&lt;br /&gt;
 BZF_API int [[bz_getDebugLevel]] ( void );&lt;br /&gt;
&lt;br /&gt;
===Server Administration===&lt;br /&gt;
 BZF_API bool [[bz_kickUser]] ( int playerIndex, const char* reason, bool notify );&lt;br /&gt;
 BZF_API bool [[bz_IPBanUser]] ( int playerIndex, const char* ip, int durration, const char* reason );&lt;br /&gt;
 BZF_API bool [[bz_IDBanUser]] ( int playerIndex, const char *bzID , int duration, const char *reason );&lt;br /&gt;
 BZF_API bool [[bz_IPUnbanUser]] ( const char* ip );&lt;br /&gt;
 BZF_API bool [[bz_IDUnbanUser]] ( const char* bzID );&lt;br /&gt;
 &lt;br /&gt;
 BZF_API int [[bz_getLagWarn]]( void );&lt;br /&gt;
 BZF_API bool [[bz_setLagWarn]]( int lagwarn );&lt;br /&gt;
 BZF_API bool [[bz_pollActive]]( void );&lt;br /&gt;
 BZF_API bool [[bz_pollVeto]]( void );&lt;br /&gt;
&lt;br /&gt;
=== Reporting ===&lt;br /&gt;
 BZF_API [[bz_APIStringList]]* bz_getReports( void );&lt;br /&gt;
 BZF_API [[bool bz_fileReport]]( const char* message );&lt;br /&gt;
&lt;br /&gt;
=== Timed Game Management===&lt;br /&gt;
 BZF_API bool [[bz_setTimeLimit]]( float timeLimit );&lt;br /&gt;
 BZF_API float [[bz_getTimeLimit]]( void );&lt;br /&gt;
 BZF_API bool [[bz_isTimeManualStart]]( void );&lt;br /&gt;
 BZF_API bool [[bz_isCountDownActive]]( void );&lt;br /&gt;
 BZF_API bool [[bz_isCountDownInProgress]]( void );&lt;br /&gt;
 BZF_API void [[bz_pauseCountdown]] ( const char *pausedBy );&lt;br /&gt;
 BZF_API void [[bz_resumeCountdown]] ( const char *resumedBy );&lt;br /&gt;
 BZF_API void [[bz_startCountdown]] ( int delay, float limit, const char *byWho );&lt;br /&gt;
&lt;br /&gt;
=== Custom Text Commands===&lt;br /&gt;
 BZF_API bool [[bz_registerCustomSlashCommand]] ( const char* command, [[bz_CustomSlashCommandHandler]] *handler );&lt;br /&gt;
 BZF_API bool [[bz_removeCustomSlashCommand]] ( const char* command );&lt;br /&gt;
&lt;br /&gt;
===Plug-in Management===&lt;br /&gt;
 BZF_API int [[bz_getLoadedPlugins]]( bz_APIStringList * list );&lt;br /&gt;
 BZF_API bool [[bz_loadPlugin]]( const char* path, const char* params );&lt;br /&gt;
 BZF_API bool [[bz_unloadPlugin]]( const char* path );&lt;br /&gt;
 BZF_API bool [[bz_registerCustomPluginHandler]] ( const char* extension, [[bz_APIPluginHandler]] * handler );&lt;br /&gt;
 BZF_API bool [[bz_removeCustomPluginHandler]] ( const char* extension, [[bz_APIPluginHandler]] * handler );&lt;br /&gt;
&lt;br /&gt;
=== Public Server Information===&lt;br /&gt;
 BZF_API bool [[bz_getPublic]]( void );&lt;br /&gt;
 BZF_API [[bz_ApiString]] [[bz_getPublicAddr]]( void );&lt;br /&gt;
 BZF_API [[bz_ApiString]] [[bz_getPublicDescription]]( void );&lt;br /&gt;
 BZF_API void [[bz_updateListServer]] ( void );&lt;br /&gt;
&lt;br /&gt;
===HTTP Transfer===&lt;br /&gt;
 BZF_API bool [[bz_addURLJob]] ( const char* URL, [[bz_BaseURLHandler]]* handler = NULL, const char* postData = NULL );&lt;br /&gt;
 BZF_API bool [[bz_removeURLJob]] ( const char* URL );&lt;br /&gt;
 BZF_API bool [[bz_stopAllURLJobs]] ( void );&lt;br /&gt;
&lt;br /&gt;
===Inter-Plug-in Communications===&lt;br /&gt;
 BZF_API bool [[bz_clipFieldExists]] ( const char *name );&lt;br /&gt;
 BZF_API const char* [[bz_getclipFieldString]] ( const char *name );&lt;br /&gt;
 BZF_API float [[bz_getclipFieldFloat]] ( const char *name );&lt;br /&gt;
 BZF_API int [[bz_getclipFieldInt]] ( const char *name );&lt;br /&gt;
 BZF_API bool [[bz_setclipFieldString]] ( const char *name, const char* data );&lt;br /&gt;
 BZF_API bool [[bz_setclipFieldFloat]] ( const char *name, float data );&lt;br /&gt;
 BZF_API bool [[bz_setclipFieldInt]] ( const char *name, int data );&lt;br /&gt;
 BZF_API bool [[bz_addClipFieldNotifier]] ( const char *name, [[bz_ClipFiledNotifier *cb );&lt;br /&gt;
 BZF_API [[_removeClipFieldNotifier]] ( const char *name, [[bz_ClipFiledNotifier *cb );&lt;br /&gt;
&lt;br /&gt;
===Game Recording===&lt;br /&gt;
 BZF_API bool [[bz_saveRecBuf]]( const char * _filename, int seconds);&lt;br /&gt;
 BZF_API bool [[bz_startRecBuf]]( void );&lt;br /&gt;
 BZF_API bool [[bz_stopRecBuf]]( void );&lt;br /&gt;
&lt;br /&gt;
===Map Management===&lt;br /&gt;
====Map Information====&lt;br /&gt;
 BZF_API void [[bz_getWorldSize]]( float *size, float *wallHeight );&lt;br /&gt;
 BZF_API int [[bz_getWorldObjectCount]]( void );&lt;br /&gt;
 BZF_API [[bz_APIWorldObjectList]]* [[bz_getWorldObjectList]]( void );&lt;br /&gt;
 BZF_API void [[bz_releaseWorldObjectList]]( [[bz_APIWorldObjectList]]* list );&lt;br /&gt;
&lt;br /&gt;
====Map Collisions====&lt;br /&gt;
 [[bz_eAPIColType]] [[bz_cylinderInMapObject]] ( float pos[3], float height, float radius, [[bz_APIBaseWorldObject]] **object );&lt;br /&gt;
 [[bz_eAPIColType]] [[bz_boxInMapObject]] ( float pos[3], float size[3], float angle, [[bz_APIBaseWorldObject]] **object );&lt;br /&gt;
&lt;br /&gt;
====Custom Map Objects====&lt;br /&gt;
 BZF_API bool [[bz_registerCustomMapObject]] ( const char* object, [[bz_CustomMapObjectHandler]] *handler );&lt;br /&gt;
 BZF_API bool [[bz_removeCustomMapObject]] ( const char* object );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Misc===&lt;br /&gt;
 BZF_API bool [[bz_getStandardSpawn]] ( int playerID, float pos[3], float *rot );&lt;br /&gt;
 BZF_API bool [[bz_killPlayer]] ( int playerID, bool spawnOnBase, int killerID = -1, const char* flagID = NULL );&lt;br /&gt;
 BZF_API bool [[bz_sendPlayCustomLocalSound]] ( int playerID, const char* soundName );&lt;br /&gt;
 BZF_API [[bz_ApiString]] [[bz_filterPath]] ( const char* path );&lt;br /&gt;
 BZF_API const char *[[bz_format]](const char* fmt, ...)_ATTRIBUTE12;&lt;br /&gt;
 BZF_API const char *[[bz_toupper]](const char* val );&lt;br /&gt;
 BZF_API const char *[[bz_tolower]](const char* val );&lt;br /&gt;
 BZF_API const char *[[bz_urlEncode]](const char* val );&lt;br /&gt;
 BZF_API [[bz_eGameType]] [[bz_getGameType]]( void );&lt;br /&gt;
 BZF_API [[bz_eTeamType]] [[bz_checkBaseAtPoint]] ( float pos[3] );&lt;br /&gt;
&lt;br /&gt;
===Server Side Players (Development)===&lt;br /&gt;
 BZF_API int [[bz_addServerSidePlayer]] ( [[bz_ServerSidePlayerHandler]] *handler );&lt;br /&gt;
 BZF_API bool [[bz_removeServerSidePlayer]] ( int playerID, [[bz_ServerSidePlayerHandler]] *handler );&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[BZFS API]]&lt;br /&gt;
&lt;br /&gt;
[[plug-ins]]&lt;br /&gt;
&lt;br /&gt;
[[Category:BZFS_API_Functions]]&lt;/div&gt;</summary>
		<author><name>Catay</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Bz_eHostBanNotifyEvent&amp;diff=4469</id>
		<title>Bz eHostBanNotifyEvent</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Bz_eHostBanNotifyEvent&amp;diff=4469"/>
		<updated>2008-04-20T00:31:52Z</updated>

		<summary type="html">&lt;p&gt;Catay: /* Data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BZFS_API_Doc}}&lt;br /&gt;
{{BZFS_API_Events}}&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
The &#039;&#039;&#039;bz_eHostBanEvent&#039;&#039;&#039; is an API event that is called each time a&lt;br /&gt;
regular ban is executed.&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
&#039;&#039;&#039;bz_eHostBanEvent&#039;&#039;&#039; returns the &#039;&#039;&#039;bz_HostBanEventData_V1&#039;&#039;&#039; data&lt;br /&gt;
class.&lt;br /&gt;
&lt;br /&gt;
  {| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;20&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
  !name&lt;br /&gt;
  !type&lt;br /&gt;
  !value description&lt;br /&gt;
  |-&lt;br /&gt;
  |eventType&lt;br /&gt;
  |[[Event(API)|bz_eEventType]]&lt;br /&gt;
  |bz_eHostBanEvent&lt;br /&gt;
  |-&lt;br /&gt;
  |bannerID&lt;br /&gt;
  |int&lt;br /&gt;
  |This value is the player ID for the banner.&lt;br /&gt;
  |-&lt;br /&gt;
  |duration&lt;br /&gt;
  |int&lt;br /&gt;
  |This value is the duration of the ban in minutes.&lt;br /&gt;
  |-&lt;br /&gt;
  |reason&lt;br /&gt;
  |[[bz_ApiString]]&lt;br /&gt;
  |This value contains the reason why and by who a player got banned.&lt;br /&gt;
  |-&lt;br /&gt;
  |hostPattern&lt;br /&gt;
  |[[bz_ApiString]]&lt;br /&gt;
  |This value contains the host pattern that is banned.&lt;br /&gt;
  |-&lt;br /&gt;
  |eventTime&lt;br /&gt;
  |double&lt;br /&gt;
  |This value is the local server time of the event.&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
==Uses==&lt;br /&gt;
This event is a notification only event, none of the data returned&lt;br /&gt;
can be changed.&lt;/div&gt;</summary>
		<author><name>Catay</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Bz_eHostBanNotifyEvent&amp;diff=4468</id>
		<title>Bz eHostBanNotifyEvent</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Bz_eHostBanNotifyEvent&amp;diff=4468"/>
		<updated>2008-04-20T00:30:17Z</updated>

		<summary type="html">&lt;p&gt;Catay: New page: {{BZFS_API_Doc}} {{BZFS_API_Events}}  ==Overview== The &amp;#039;&amp;#039;&amp;#039;bz_eHostBanEvent&amp;#039;&amp;#039;&amp;#039; is an API event that is called each time a regular ban is executed.  ==Data== &amp;#039;&amp;#039;&amp;#039;bz_eHostBanEvent&amp;#039;&amp;#039;&amp;#039; returns t...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BZFS_API_Doc}}&lt;br /&gt;
{{BZFS_API_Events}}&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
The &#039;&#039;&#039;bz_eHostBanEvent&#039;&#039;&#039; is an API event that is called each time a&lt;br /&gt;
regular ban is executed.&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
&#039;&#039;&#039;bz_eHostBanEvent&#039;&#039;&#039; returns the &#039;&#039;&#039;bz_HostBanEventData_V1&#039;&#039;&#039; data&lt;br /&gt;
class.&lt;br /&gt;
&lt;br /&gt;
  {| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;20&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
  !name&lt;br /&gt;
  !type&lt;br /&gt;
  !value description&lt;br /&gt;
  |-&lt;br /&gt;
  |eventType&lt;br /&gt;
  |[[Event(API)|bz_eEventType]]&lt;br /&gt;
  |bz_eHostBanEvent&lt;br /&gt;
  |-&lt;br /&gt;
  |bannerID&lt;br /&gt;
  |int&lt;br /&gt;
  |This value is the player ID for the banner.&lt;br /&gt;
  |-&lt;br /&gt;
  |duration&lt;br /&gt;
  |int&lt;br /&gt;
  |This value is the duration of the ban in minutes.&lt;br /&gt;
  |-&lt;br /&gt;
  |reason&lt;br /&gt;
  |[[bz_ApiString]]==Uses==&lt;br /&gt;
  |This value contains the reason why and by who a player got banned.&lt;br /&gt;
  |-&lt;br /&gt;
  |hostPattern&lt;br /&gt;
  |[[bz_ApiString]]&lt;br /&gt;
  |This value contains the host pattern that is banned.&lt;br /&gt;
  |-&lt;br /&gt;
  |eventTime&lt;br /&gt;
  |double==Uses==&lt;br /&gt;
  |This value is the local server time of the event.&lt;br /&gt;
  |}&lt;br /&gt;
==Uses==&lt;br /&gt;
This event is a notification only event, none of the data returned&lt;br /&gt;
can be changed.&lt;/div&gt;</summary>
		<author><name>Catay</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Bz_eIdBanEvent&amp;diff=4467</id>
		<title>Bz eIdBanEvent</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Bz_eIdBanEvent&amp;diff=4467"/>
		<updated>2008-04-20T00:15:54Z</updated>

		<summary type="html">&lt;p&gt;Catay: /* Data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BZFS_API_Doc}}&lt;br /&gt;
{{BZFS_API_Events}}&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
The &#039;&#039;&#039;bz_eIdBanEvent&#039;&#039;&#039; is an API event that is called each time a&lt;br /&gt;
ban on bzid (idban) is executed.&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
&#039;&#039;&#039;bz_eIdBanEvent&#039;&#039;&#039; returns the &#039;&#039;&#039;bz_IdBanEventData_V1&#039;&#039;&#039; data&lt;br /&gt;
class.&lt;br /&gt;
&lt;br /&gt;
  {| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;20&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
  !name&lt;br /&gt;
  !type&lt;br /&gt;
  !value description&lt;br /&gt;
  |-&lt;br /&gt;
  |eventType    &lt;br /&gt;
  |[[Event(API)|bz_eEventType]]&lt;br /&gt;
  |bz_eIdBanEvent&lt;br /&gt;
  |-&lt;br /&gt;
  |bannerID&lt;br /&gt;
  |int&lt;br /&gt;
  |This value is the player ID for the banner.&lt;br /&gt;
  |-&lt;br /&gt;
  |banneeID&lt;br /&gt;
  |int&lt;br /&gt;
  |This value is the player ID for the bannee.&lt;br /&gt;
  |-&lt;br /&gt;
  |duration&lt;br /&gt;
  |int&lt;br /&gt;
  |This value is the duration of the ban in minutes.&lt;br /&gt;
  |-&lt;br /&gt;
  |reason&lt;br /&gt;
  |[[bz_ApiString]]&lt;br /&gt;
  |This value contains the reason why and by who a player got banned.&lt;br /&gt;
  |-&lt;br /&gt;
  |bzId&lt;br /&gt;
  |[[bz_ApiString]]&lt;br /&gt;
  |This value contains the BZFlag unique player identifier aka the bzid.&lt;br /&gt;
  |-  &lt;br /&gt;
  |eventTime&lt;br /&gt;
  |double&lt;br /&gt;
  |This value is the local server time of the event.&lt;br /&gt;
  |}&lt;br /&gt;
==Uses==&lt;br /&gt;
This event is a notification only event, none of the data returned&lt;br /&gt;
can be changed.&lt;/div&gt;</summary>
		<author><name>Catay</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Bz_eBanEvent&amp;diff=4466</id>
		<title>Bz eBanEvent</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Bz_eBanEvent&amp;diff=4466"/>
		<updated>2008-04-20T00:14:38Z</updated>

		<summary type="html">&lt;p&gt;Catay: New page: {{BZFS_API_Doc}} {{BZFS_API_Events}}  ==Overview== The &amp;#039;&amp;#039;&amp;#039;bz_eBanEvent&amp;#039;&amp;#039;&amp;#039; is an API event that is called each time a regular ban is executed.  ==Data== &amp;#039;&amp;#039;&amp;#039;bz_eBanEvent&amp;#039;&amp;#039;&amp;#039; returns the &amp;#039;&amp;#039;&amp;#039;bz...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BZFS_API_Doc}}&lt;br /&gt;
{{BZFS_API_Events}}&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
The &#039;&#039;&#039;bz_eBanEvent&#039;&#039;&#039; is an API event that is called each time a&lt;br /&gt;
regular ban is executed.&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
&#039;&#039;&#039;bz_eBanEvent&#039;&#039;&#039; returns the &#039;&#039;&#039;bz_BanEventData_V1&#039;&#039;&#039; data&lt;br /&gt;
class.&lt;br /&gt;
&lt;br /&gt;
  {| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;20&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
  !name&lt;br /&gt;
  !type&lt;br /&gt;
  !value description&lt;br /&gt;
  |-&lt;br /&gt;
  |eventType&lt;br /&gt;
  |[[Event(API)|bz_eEventType]]&lt;br /&gt;
  |bz_eBanEvent&lt;br /&gt;
  |-&lt;br /&gt;
  |bannerID&lt;br /&gt;
  |int&lt;br /&gt;
  |This value is the player ID for the banner.&lt;br /&gt;
  |-&lt;br /&gt;
  |banneeID&lt;br /&gt;
  |int&lt;br /&gt;
  |This value is the player ID for the bannee.&lt;br /&gt;
  |-&lt;br /&gt;
  |duration&lt;br /&gt;
  |int&lt;br /&gt;
  |This value is the duration of the ban in minutes.&lt;br /&gt;
  |-&lt;br /&gt;
  |reason&lt;br /&gt;
  |[[bz_ApiString]]&lt;br /&gt;
  |This value contains the reason why and by who a player got banned.&lt;br /&gt;
  |-&lt;br /&gt;
  |ipAddress&lt;br /&gt;
  |[[bz_ApiString]]&lt;br /&gt;
  |This value contains the ipaddress of the bannee.&lt;br /&gt;
  |-&lt;br /&gt;
  |eventTime&lt;br /&gt;
  |double&lt;br /&gt;
  |This value is the local server time of the event.&lt;br /&gt;
  |}&lt;br /&gt;
==Uses==&lt;br /&gt;
This event is a notification only event, none of the data returned&lt;br /&gt;
can be changed.&lt;/div&gt;</summary>
		<author><name>Catay</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Bz_eIdBanEvent&amp;diff=4465</id>
		<title>Bz eIdBanEvent</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Bz_eIdBanEvent&amp;diff=4465"/>
		<updated>2008-04-20T00:04:02Z</updated>

		<summary type="html">&lt;p&gt;Catay: New page: {{BZFS_API_Doc}} {{BZFS_API_Events}}  ==Overview== The &amp;#039;&amp;#039;&amp;#039;bz_eIdBanEvent&amp;#039;&amp;#039;&amp;#039; is an API event that is called each time a ban on bzid (idban) is executed.  ==Data== &amp;#039;&amp;#039;&amp;#039;bz_eIdBanEvent&amp;#039;&amp;#039;&amp;#039; retur...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BZFS_API_Doc}}&lt;br /&gt;
{{BZFS_API_Events}}&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
The &#039;&#039;&#039;bz_eIdBanEvent&#039;&#039;&#039; is an API event that is called each time a&lt;br /&gt;
ban on bzid (idban) is executed.&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
&#039;&#039;&#039;bz_eIdBanEvent&#039;&#039;&#039; returns the &#039;&#039;&#039;bz_IdBanEventData_V1&#039;&#039;&#039; data&lt;br /&gt;
class.&lt;br /&gt;
&lt;br /&gt;
  {| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;20&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
  !name&lt;br /&gt;
  !type&lt;br /&gt;
  !value description&lt;br /&gt;
  |-&lt;br /&gt;
  |eventType    &lt;br /&gt;
  |[[Event(API)|bz_eEventType]]&lt;br /&gt;
  |bz_eIdBanEvent&lt;br /&gt;
  |-&lt;br /&gt;
  |bannerID&lt;br /&gt;
  |int&lt;br /&gt;
  |This value is the player ID for the banner.&lt;br /&gt;
  |-&lt;br /&gt;
  |banneeID&lt;br /&gt;
  |int&lt;br /&gt;
  |This value is the player ID for the bannee.&lt;br /&gt;
  |-&lt;br /&gt;
  |duration&lt;br /&gt;
  |int&lt;br /&gt;
  |This value is the duration of the ban in minutes.&lt;br /&gt;
  |-&lt;br /&gt;
  |reason&lt;br /&gt;
  |[[bz_ApiString]]&lt;br /&gt;
  |This value contains the reason why and by who a player got banned.&lt;br /&gt;
  |-&lt;br /&gt;
  |bzId&lt;br /&gt;
  |[[bz_ApiString]]&lt;br /&gt;
  |This value contains the BZFlag unique player identifier aka the bzid.&lt;br /&gt;
  |-&lt;/div&gt;</summary>
		<author><name>Catay</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Events_(API)&amp;diff=4464</id>
		<title>Events (API)</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Events_(API)&amp;diff=4464"/>
		<updated>2008-04-19T23:33:50Z</updated>

		<summary type="html">&lt;p&gt;Catay: /* Events */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Fill in articles for all API events}}&lt;br /&gt;
&lt;br /&gt;
{{BZFS_API_Doc}}&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
API events are callbacks that a [[Plug-ins|plug-in]] can install into [[BZFS]] to be called in response to specific actions or state changes in the server side game world. Events are the primary method of communication from BZFS to installed plug-ins. Specific events exist for nearly all logical actions that can happen during a game of BZFlag.&lt;br /&gt;
&lt;br /&gt;
==Installation and Removal==&lt;br /&gt;
The callbacks for events are typically installed during the [[bz_Load]] entry point in a plug-in, so they can be active when a plug-in is first loaded.&lt;br /&gt;
&lt;br /&gt;
The plug-in must call the function;&lt;br /&gt;
&lt;br /&gt;
 BZF_API bool [[bz_registerEvent]] ( bz_eEventType eventType, [[bz_EventHandler]]* eventHandler );&lt;br /&gt;
&lt;br /&gt;
The plug-in registers and event callback derived from [[bz_EventHandler]] for each specific event types it wishes to monitor.&lt;br /&gt;
&lt;br /&gt;
When a plug-in no longer needs to monitor an event, or when it is unloaded in the [[bz_Unload]] entry point, the plug-in must remove the installed callback by calling the function;&lt;br /&gt;
&lt;br /&gt;
 BZF_API bool [[bz_removeEvent]] ( bz_eEventType eventType, [[bz_EventHandler]]* eventHandler );&lt;br /&gt;
&lt;br /&gt;
==Event Handler==&lt;br /&gt;
The plug-in must define a class that is derived from [[bz_EventHandler]] and pass a pointer to an object of that class when ever it registers an event callback.&lt;br /&gt;
&lt;br /&gt;
When ever a specific event is triggered, BZFS will call the &#039;process&#039; method of the installed callback class.&lt;br /&gt;
&lt;br /&gt;
   virtual void process ( bz_EventData *eventData ) = 0;&lt;br /&gt;
&lt;br /&gt;
==Event Data==&lt;br /&gt;
With each call to the &#039;process&#039; method of the installed event handler, BZFS will pass the plug-in a pointer to a class that contains all the data provided by the event. Each event derives a specific data class from [[bz_EventData]] that contains the specific member variables that contain the data. The base class [[bz_EventData]] contains the data member;&lt;br /&gt;
   bz_eEventType	eventType;&lt;br /&gt;
This data member allows a plug-in to identify the specific event and cast the &#039;bz_EventData&#039; pointer to the appropriate specific data class. This is usefull for plug-ins that use the same &#039;bz_EventHandler&#039; to process more then one specific message.&lt;br /&gt;
&lt;br /&gt;
Please see the descriptions of each specific event for information and descriptions of the data classes for each event. Some specific events allow plug-ins to change the values of data members in the data class and will use the modified values instead.&lt;br /&gt;
&lt;br /&gt;
Plug-ins should never delete or free the memory for a data class. BZFS will manage all pointers passed to plug-ins.&lt;br /&gt;
&lt;br /&gt;
==Events==&lt;br /&gt;
The following list contains all the event types currently supported by BZFS version 2.99&lt;br /&gt;
&lt;br /&gt;
  [[bz_eNullEvent]]&lt;br /&gt;
  [[bz_eCaptureEvent]]&lt;br /&gt;
  [[bz_ePlayerDieEvent]]&lt;br /&gt;
  [[bz_ePlayerSpawnEvent]]&lt;br /&gt;
  [[bz_eZoneEntryEvent]]&lt;br /&gt;
  [[bz_eZoneExitEvent]]&lt;br /&gt;
  [[bz_ePlayerJoinEvent]]&lt;br /&gt;
  [[bz_ePlayerPartEvent]]&lt;br /&gt;
  [[bz_eRawChatMessageEvent]]&lt;br /&gt;
  [[bz_eFilteredChatMessageEvent]]&lt;br /&gt;
  [[bz_eUnknownSlashCommand]]&lt;br /&gt;
  [[bz_eGetPlayerSpawnPosEvent]]&lt;br /&gt;
  [[bz_eGetAutoTeamEvent]]&lt;br /&gt;
  [[bz_eAllowPlayer]]&lt;br /&gt;
  [[bz_eTickEvent]]&lt;br /&gt;
  [[bz_eGetWorldEvent]]&lt;br /&gt;
  [[bz_eGetPlayerInfoEvent]]&lt;br /&gt;
  [[bz_eAllowSpawn]]&lt;br /&gt;
  [[bz_eListServerUpdateEvent]]&lt;br /&gt;
  [[bz_eBanEvent]]&lt;br /&gt;
  [[bz_eHostBanEvent]]&lt;br /&gt;
  [[bz_eIdBanEvent]]&lt;br /&gt;
  [[bz_eKickEvent]]&lt;br /&gt;
  [[bz_eKillEvent]]&lt;br /&gt;
  [[bz_ePlayerPausedEvent]]&lt;br /&gt;
  [[bz_eMessageFilteredEvent]]&lt;br /&gt;
  [[bz_eGameStartEvent]]&lt;br /&gt;
  [[bz_eGameEndEvent]]&lt;br /&gt;
  [[bz_eSlashCommandEvent]]&lt;br /&gt;
  [[bz_ePlayerAuthEvent]]&lt;br /&gt;
  [[bz_eServerMsgEvent]]&lt;br /&gt;
  [[bz_eShotFiredEvent]]&lt;br /&gt;
  [[bz_eAnointRabbitEvent]]&lt;br /&gt;
  [[bz_eNewRabbitEvent]]&lt;br /&gt;
  [[bz_eReloadEvent]]&lt;br /&gt;
  [[bz_ePlayerUpdateEvent]]&lt;br /&gt;
  [[bz_eNetDataSendEvent]]&lt;br /&gt;
  [[bz_eNetDataReceveEvent]]&lt;br /&gt;
  [[bz_eLoggingEvent]]&lt;br /&gt;
  [[bz_eFlagTransferredEvent]]&lt;br /&gt;
  [[bz_eFlagGrabbedEvent]]&lt;br /&gt;
  [[bz_eFlagDroppedEvent]]&lt;br /&gt;
  [[bz_eShotEndedEvent]]&lt;br /&gt;
  [[bz_eNewNonPlayerConnection]]&lt;br /&gt;
  [[bz_eIdleNewNonPlayerConnection]]&lt;br /&gt;
  [[bz_ePlayerCollision]]&lt;br /&gt;
  [[bz_eFlagResetEvent]]&lt;br /&gt;
  [[bz_eWorldFinalized]]&lt;br /&gt;
  [[bz_eAllowCTFCaptureEvent]]&lt;br /&gt;
  [[bz_eAllowFlagGrabEvent]]&lt;br /&gt;
  [[bz_eAllowKillCommandEvent]]&lt;br /&gt;
  [[bz_eReportFiledEvent]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There exists one additional event in the &#039;bz_eEventType&#039; enumeration in &#039;bzfsAPI.h&#039;, &#039;&#039;bz_eLastEvent&#039;&#039;. This event is simply used by BZFS to assist in the counting of the total number of events, it will never be called and can not be installed.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[BZFS API]]&lt;br /&gt;
&lt;br /&gt;
[[plug-ins]]&lt;br /&gt;
&lt;br /&gt;
[[Category:BZFS_API_Events]]&lt;/div&gt;</summary>
		<author><name>Catay</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Functions_(API)&amp;diff=4417</id>
		<title>Functions (API)</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Functions_(API)&amp;diff=4417"/>
		<updated>2008-04-07T21:00:48Z</updated>

		<summary type="html">&lt;p&gt;Catay: /* Global Database Management (BZDB) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Fill in articles for all API Functions}}&lt;br /&gt;
&lt;br /&gt;
{{BZFS_API_Doc}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The BZFS API provides a number of functions to plug-ins for use in querying the current game state. Functions are used both to get information about the game, and to trigger in game actions, such as activating a world weapon.&lt;br /&gt;
&lt;br /&gt;
==Function Groups==&lt;br /&gt;
Functions are broken into a series of groups based on the type of action or information they deal with.&lt;br /&gt;
&lt;br /&gt;
===Event Registration===&lt;br /&gt;
 BZF_API bool [[bz_registerEvent]] ( [[Events(API)|bz_eEventType]] eventType, [[Events(API)|bz_EventHandler]]* eventHandler );&lt;br /&gt;
 BZF_API bool [[bz_removeEvent]] ( [[Events(API)|bz_eEventType]] eventType, [[Events(API)|bz_EventHandler]]* eventHandler );&lt;br /&gt;
&lt;br /&gt;
===Non-Player Connections===&lt;br /&gt;
 BZF_API bool [[bz_registerNonPlayerConnectionHandler]] ( int connectionID, [[bz_NonPlayerConnectionHandler]]* handler );&lt;br /&gt;
 BZF_API bool [[bz_removeNonPlayerConnectionHandler]] ( int connectionID, [[bz_NonPlayerConnectionHandler]]* handler );&lt;br /&gt;
 BZF_API bool [[bz_sendNonPlayerData]] ( int connectionID, const void *data, unsigned int size );&lt;br /&gt;
 BZF_API bool [[bz_disconectNonPlayerConnection]] ( int connectionID );&lt;br /&gt;
&lt;br /&gt;
===Player Information===&lt;br /&gt;
&lt;br /&gt;
 BZF_API bool [[bz_getPlayerIndexList]] ( [[bz_APIIntList]] *playerList );&lt;br /&gt;
 BZF_API [[bz_APIIntList]] *[[bz_getPlayerIndexList]] ( void );&lt;br /&gt;
 BZF_API [[bz_BasePlayerRecord]] *[[bz_getPlayerByIndex]] ( int index );&lt;br /&gt;
 BZF_API bool [[bz_updatePlayerData]] ( [[bz_BasePlayerRecord]] *playerRecord );&lt;br /&gt;
 BZF_API bool [[bz_hasPerm]] ( int playerID, const char* perm );&lt;br /&gt;
 BZF_API bool [[bz_grantPerm]] ( int playerID, const char* perm );&lt;br /&gt;
 BZF_API bool [[bz_revokePerm]] ( int playerID, const char* perm );&lt;br /&gt;
 BZF_API bool [[bz_getAdmin]] ( int playerID );&lt;br /&gt;
 BZF_API bool [[bz_freePlayerRecord]] ( [[bz_BasePlayerRecord]] *playerRecord );&lt;br /&gt;
 BZF_API const char* [[bz_getPlayerFlag]] ( int playerID );&lt;br /&gt;
 BZF_API bool [[bz_getPlayerCurrentState]] ( int playerID, [[bz_PlayerUpdateState]] &amp;amp;state );&lt;br /&gt;
 BZF_API bool [[bz_isPlayerPaused]] ( int playerID );&lt;br /&gt;
 BZF_API bool [[bz_setPlayerOperator]] ( int playerId );&lt;br /&gt;
 BZF_API [[bz_APIIntList]]* [[bz_getPlayerIndexList]] ( void );&lt;br /&gt;
 BZF_API bool [[bz_canPlayerSpawn]]( int playerID );&lt;br /&gt;
 BZF_API bool [[bz_setPlayerSpawnable]]( int playerID, bool spawn );&lt;br /&gt;
 BZF_API bool [[bz_setPlayerLimboText]]( int playerID, const char* text );&lt;br /&gt;
 BZF_API int [[bz_getPlayerCount]] ( void );&lt;br /&gt;
 BZF_API bool [[bz_anyPlayers]] ( void );&lt;br /&gt;
&lt;br /&gt;
=== Team Management===&lt;br /&gt;
 BZF_API unsigned int [[bz_getTeamPlayerLimit]] ( bz_eTeamType team )&lt;br /&gt;
 BZF_API int [[bz_getTeamCount]] ([[bz_eTeamType]] team );&lt;br /&gt;
 BZF_API int [[bz_getTeamScore]] ([[bz_eTeamType]] team );&lt;br /&gt;
 BZF_API int [[bz_getTeamWins]] ([[bz_eTeamType]] team );&lt;br /&gt;
 BZF_API int [[bz_getTeamLosses]] ([[bz_eTeamType]] team );&lt;br /&gt;
 BZF_API void [[bz_setTeamWins]] ([[bz_eTeamType]] team, int wins );&lt;br /&gt;
 BZF_API void [[bz_setTeamLosses]] ([[bz_eTeamType]] team, int losses );&lt;br /&gt;
 BZF_API void [[bz_resetTeamScore]] ([[bz_eTeamType]] team );&lt;br /&gt;
 BZF_API void [[bz_resetTeamScores]] ( void );&lt;br /&gt;
 BZF_API void [[bz_changeTeam]]( int player, [[bz_eTeamType]] team );&lt;br /&gt;
&lt;br /&gt;
=== Score Management ===&lt;br /&gt;
 BZF_API bool [[bz_setPlayerWins]] (int playerId, int wins);&lt;br /&gt;
 BZF_API bool [[bz_setPlayerLosses]] (int playerId, int losses);&lt;br /&gt;
 BZF_API bool [[bz_setPlayerTKs]] (int playerId, int tks);&lt;br /&gt;
 BZF_API bool [[bz_resetPlayerScore]] (int playerId);&lt;br /&gt;
 BZF_API int [[bz_getPlayerWins]] (int playerId);&lt;br /&gt;
 BZF_API int [[bz_getPlayerLosses]] (int playerId);&lt;br /&gt;
 BZF_API int [[bz_getPlayerTKs]] (int playerId);&lt;br /&gt;
&lt;br /&gt;
=== Latency Information ===&lt;br /&gt;
 BZF_API int [[bz_getPlayerLag]] ( int playerId );&lt;br /&gt;
 BZF_API int [[bz_getPlayerJitter]] ( int playerId );&lt;br /&gt;
 BZF_API float [[bz_getPlayerPacketloss]] ( int playerId );&lt;br /&gt;
&lt;br /&gt;
=== Permission Group Management ===&lt;br /&gt;
 BZF_API [[bz_APIStringList]]* [[bz_getGroupList]] ( void );&lt;br /&gt;
 BZF_API [[bz_APIStringList]]* [[bz_getGroupPerms]] ( const char* group );&lt;br /&gt;
 BZF_API bool [[bz_groupAllowPerm]]( const char* group, const char* perm );&lt;br /&gt;
&lt;br /&gt;
=== Chat Messages ===&lt;br /&gt;
 BZF_API bool [[bz_sendTextMessage]] (int from, int to, const char* message);&lt;br /&gt;
 BZF_API bool [[bz_sendTextMessage]] (int from, [[bz_eTeamType]] to, const char* message);&lt;br /&gt;
 BZF_API bool [[bz_sendTextMessagef]] (int from, int to, const char* fmt, ...);&lt;br /&gt;
 BZF_API bool [[bz_sendTextMessagef]] (int from, [[bz_eTeamType]] to, const char* fmt, ...);&lt;br /&gt;
 BZF_API bool [[bz_sendFetchResMessage]] ( int playerID,  const char* URL );&lt;br /&gt;
&lt;br /&gt;
=== Server Management ===&lt;br /&gt;
 BZF_API bool [[bz_restart]] ( void );&lt;br /&gt;
 BZF_API void [[bz_shutdown]] ();&lt;br /&gt;
 BZF_API void [[bz_superkill]] ();&lt;br /&gt;
 BZF_API void [[bz_gameOver]] (int playerID, bz_eTeamType = eNoTeam);&lt;br /&gt;
 BZF_API void [[bz_reloadLocalBans]] ();&lt;br /&gt;
 BZF_API void [[bz_reloadMasterBans]] ();&lt;br /&gt;
 BZF_API void [[bz_reloadGroups]] ();&lt;br /&gt;
 BZF_API void [[bz_reloadUsers]] ();&lt;br /&gt;
 BZF_API void [[bz_reloadHelp]] ();&lt;br /&gt;
&lt;br /&gt;
=== Rabbit Hunt===&lt;br /&gt;
 BZF_API void [[bz_newRabbit]]( int player, bool swap );&lt;br /&gt;
 BZF_API void [[bz_removeRabbit]]( int player );&lt;br /&gt;
&lt;br /&gt;
=== Map Management ===&lt;br /&gt;
 BZF_API void [[bz_setClientWorldDownloadURL]]( const char* URL );&lt;br /&gt;
 BZF_API const bzApiString [[bz_getClientWorldDownloadURL]] ( void );&lt;br /&gt;
 BZF_API bool [[bz_saveWorldCacheFile]]( const char* file );&lt;br /&gt;
&lt;br /&gt;
=== Flag Management ===&lt;br /&gt;
&lt;br /&gt;
 BZF_API bool [[bz_givePlayerFlag]] ( int playerID, const char* flagType, bool force );&lt;br /&gt;
 BZF_API bool [[bz_removePlayerFlag]] ( int playerID );&lt;br /&gt;
 BZF_API void [[bz_resetFlags]] ( bool onlyUnused );&lt;br /&gt;
 BZF_API unsigned int [[bz_getNumFlags]] ( void );&lt;br /&gt;
 BZF_API const [[bz_ApiString]] [[bz_getFlagName]]( int flag );&lt;br /&gt;
 BZF_API bool [[bz_resetFlag]] ( int flag );&lt;br /&gt;
 BZF_API int [[bz_flagPlayer]] ( int flag );&lt;br /&gt;
 BZF_API bool [[bz_getFlagPosition]] ( int flag, float* pos );&lt;br /&gt;
 BZF_API bool [[bz_moveFlag]] ( int flag, float pos[3], bool reset = true );&lt;br /&gt;
 BZF_API bool [[bz_RegisterCustomFlag]] ( const char* abbr, const char* name, const char* helpString, bz_eShotType shotType, bz_eFlagQuality quality );&lt;br /&gt;
&lt;br /&gt;
=== Shot Type Control ===&lt;br /&gt;
 BZF_API bool [[bz_setPlayerShotType]]( int playerId, [[bz_eShotType]] shotType );&lt;br /&gt;
&lt;br /&gt;
=== World Weapon Management ===&lt;br /&gt;
 BZF_API bool [[bz_fireWorldWep]] ( const char* flagType, float lifetime, float *pos, float tilt, float direction, int shotID , float dt );&lt;br /&gt;
 BZF_API int [[bz_fireWorldGM]] ( int targetPlayerID, float lifetime, float *pos, float tilt, float direction, float dt);&lt;br /&gt;
&lt;br /&gt;
=== Server Time ===&lt;br /&gt;
 BZF_API double [[bz_getCurrentTime]] ( void );&lt;br /&gt;
 BZF_API float [[bz_getMaxWaitTime]] ( void );&lt;br /&gt;
 BZF_API void [[bz_setMaxWaitTime]] ( float maxTime );&lt;br /&gt;
 BZF_API void [[bz_getLocaltime]] ( [[bz_localTime]] *ts );&lt;br /&gt;
&lt;br /&gt;
=== Global Database Management (BZDB) ===&lt;br /&gt;
 BZF_API double [[bz_getBZDBDouble]] ( const char* variable );&lt;br /&gt;
 BZF_API [[bz_ApiString]] [[bz_getBZDBString]]( const char* variable );&lt;br /&gt;
 BZF_API bool [[bz_getBZDBBool]]( const char* variable );&lt;br /&gt;
 BZF_API int [[bz_getBZDBInt]]( const char* variable );&lt;br /&gt;
 BZF_API int [[bz_getBZDBItemPerms]] ( const char* variable );&lt;br /&gt;
 BZF_API bool [[bz_getBZDBItemPersistent]]( const char* variable );&lt;br /&gt;
 BZF_API bool [[bz_BZDBItemExists]]( const char* variable );&lt;br /&gt;
 BZF_API bool [[bz_setBZDBDouble]] ( const char* variable, double val, int perms = 0, bool persistent = false );&lt;br /&gt;
 BZF_API bool [[bz_setBZDBString]]( const char* variable, const char *val, int perms = 0, bool persistent = false  );&lt;br /&gt;
 BZF_API bool [[bz_setBZDBBool]]( const char* variable, bool val, int perms = 0, bool persistent = false  );&lt;br /&gt;
 BZF_API bool [[bz_setBZDBInt]]( const char* variable, int val, int perms = 0, bool persistent = false  );&lt;br /&gt;
 BZF_API int [[bz_getBZDBVarList]]( bz_APIStringList	*varList );&lt;br /&gt;
 BZF_API void [[bz_resetBZDBVar]]( const char* variable );&lt;br /&gt;
 BZF_API void [[bz_resetALLBZDBVars]]( void );&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
 BZF_API void [[bz_debugMessage]] ( int level, const char* message );&lt;br /&gt;
 BZF_API void [[bz_debugMessagef]]( int level, const char* fmt, ... )&lt;br /&gt;
 BZF_API int [[bz_getDebugLevel]] ( void );&lt;br /&gt;
&lt;br /&gt;
===Server Administration===&lt;br /&gt;
 BZF_API bool [[bz_kickUser]] ( int playerIndex, const char* reason, bool notify );&lt;br /&gt;
 BZF_API bool [[bz_IPBanUser]] ( int playerIndex, const char* ip, int durration, const char* reason );&lt;br /&gt;
 BZF_API bool [[bz_IPUnbanUser]] ( const char* ip );&lt;br /&gt;
 BZF_API int [[bz_getLagWarn]]( void );&lt;br /&gt;
 BZF_API bool [[bz_setLagWarn]]( int lagwarn );&lt;br /&gt;
 BZF_API bool [[bz_pollActive]]( void );&lt;br /&gt;
 BZF_API bool [[bz_pollVeto]]( void );&lt;br /&gt;
&lt;br /&gt;
=== Reporting ===&lt;br /&gt;
 BZF_API [[bz_APIStringList]]* bz_getReports( void );&lt;br /&gt;
 BZF_API [[bool bz_fileReport]]( const char* message );&lt;br /&gt;
&lt;br /&gt;
=== Timed Game Management===&lt;br /&gt;
 BZF_API bool [[bz_setTimeLimit]]( float timeLimit );&lt;br /&gt;
 BZF_API float [[bz_getTimeLimit]]( void );&lt;br /&gt;
 BZF_API bool [[bz_isTimeManualStart]]( void );&lt;br /&gt;
 BZF_API bool [[bz_isCountDownActive]]( void );&lt;br /&gt;
 BZF_API bool [[bz_isCountDownInProgress]]( void );&lt;br /&gt;
 BZF_API void [[bz_pauseCountdown]] ( const char *pausedBy );&lt;br /&gt;
 BZF_API void [[bz_resumeCountdown]] ( const char *resumedBy );&lt;br /&gt;
 BZF_API void [[bz_startCountdown]] ( int delay, float limit, const char *byWho );&lt;br /&gt;
&lt;br /&gt;
=== Custom Text Commands===&lt;br /&gt;
 BZF_API bool [[bz_registerCustomSlashCommand]] ( const char* command, [[bz_CustomSlashCommandHandler]] *handler );&lt;br /&gt;
 BZF_API bool [[bz_removeCustomSlashCommand]] ( const char* command );&lt;br /&gt;
&lt;br /&gt;
===Plug-in Management===&lt;br /&gt;
 BZF_API int [[bz_getLoadedPlugins]]( bz_APIStringList * list );&lt;br /&gt;
 BZF_API bool [[bz_loadPlugin]]( const char* path, const char* params );&lt;br /&gt;
 BZF_API bool [[bz_unloadPlugin]]( const char* path );&lt;br /&gt;
 BZF_API bool [[bz_registerCustomPluginHandler]] ( const char* extension, [[bz_APIPluginHandler]] * handler );&lt;br /&gt;
 BZF_API bool [[bz_removeCustomPluginHandler]] ( const char* extension, [[bz_APIPluginHandler]] * handler );&lt;br /&gt;
&lt;br /&gt;
=== Public Server Information===&lt;br /&gt;
 BZF_API bool [[bz_getPublic]]( void );&lt;br /&gt;
 BZF_API [[bz_ApiString]] [[bz_getPublicAddr]]( void );&lt;br /&gt;
 BZF_API [[bz_ApiString]] [[bz_getPublicDescription]]( void );&lt;br /&gt;
 BZF_API void [[bz_updateListServer]] ( void );&lt;br /&gt;
&lt;br /&gt;
===HTTP Transfer===&lt;br /&gt;
 BZF_API bool [[bz_addURLJob]] ( const char* URL, [[bz_BaseURLHandler]]* handler = NULL, const char* postData = NULL );&lt;br /&gt;
 BZF_API bool [[bz_removeURLJob]] ( const char* URL );&lt;br /&gt;
 BZF_API bool [[bz_stopAllURLJobs]] ( void );&lt;br /&gt;
&lt;br /&gt;
===Inter-Plug-in Communications===&lt;br /&gt;
 BZF_API bool [[bz_clipFieldExists]] ( const char *name );&lt;br /&gt;
 BZF_API const char* [[bz_getclipFieldString]] ( const char *name );&lt;br /&gt;
 BZF_API float [[bz_getclipFieldFloat]] ( const char *name );&lt;br /&gt;
 BZF_API int [[bz_getclipFieldInt]] ( const char *name );&lt;br /&gt;
 BZF_API bool [[bz_setclipFieldString]] ( const char *name, const char* data );&lt;br /&gt;
 BZF_API bool [[bz_setclipFieldFloat]] ( const char *name, float data );&lt;br /&gt;
 BZF_API bool [[bz_setclipFieldInt]] ( const char *name, int data );&lt;br /&gt;
 BZF_API bool [[bz_addClipFieldNotifier]] ( const char *name, [[bz_ClipFiledNotifier *cb );&lt;br /&gt;
 BZF_API [[_removeClipFieldNotifier]] ( const char *name, [[bz_ClipFiledNotifier *cb );&lt;br /&gt;
&lt;br /&gt;
===Game Recording===&lt;br /&gt;
 BZF_API bool [[bz_saveRecBuf]]( const char * _filename, int seconds);&lt;br /&gt;
 BZF_API bool [[bz_startRecBuf]]( void );&lt;br /&gt;
 BZF_API bool [[bz_stopRecBuf]]( void );&lt;br /&gt;
&lt;br /&gt;
===Map Management===&lt;br /&gt;
====Map Information====&lt;br /&gt;
 BZF_API void [[bz_getWorldSize]]( float *size, float *wallHeight );&lt;br /&gt;
 BZF_API int [[bz_getWorldObjectCount]]( void );&lt;br /&gt;
 BZF_API [[bz_APIWorldObjectList]]* [[bz_getWorldObjectList]]( void );&lt;br /&gt;
 BZF_API void [[bz_releaseWorldObjectList]]( [[bz_APIWorldObjectList]]* list );&lt;br /&gt;
&lt;br /&gt;
====Map Collisions====&lt;br /&gt;
 [[bz_eAPIColType]] [[bz_cylinderInMapObject]] ( float pos[3], float height, float radius, [[bz_APIBaseWorldObject]] **object );&lt;br /&gt;
 [[bz_eAPIColType]] [[bz_boxInMapObject]] ( float pos[3], float size[3], float angle, [[bz_APIBaseWorldObject]] **object );&lt;br /&gt;
&lt;br /&gt;
====Custom Map Objects====&lt;br /&gt;
 BZF_API bool [[bz_registerCustomMapObject]] ( const char* object, [[bz_CustomMapObjectHandler]] *handler );&lt;br /&gt;
 BZF_API bool [[bz_removeCustomMapObject]] ( const char* object );&lt;br /&gt;
&lt;br /&gt;
====Map Definition====&lt;br /&gt;
 BZF_API bool [[bz_addWorldBox]] ( float *pos, float rot, float* scale, [[bz_WorldObjectOptions]] options );&lt;br /&gt;
 BZF_API bool [[bz_addWorldPyramid]] ( float *pos, float rot, float* scale, bool fliped, [[bz_WorldObjectOptions]] options );&lt;br /&gt;
 BZF_API bool [[bz_addWorldBase]]( float *pos, float rot, float* scale, bz_eTeamType team, [[bz_WorldObjectOptions]] options );&lt;br /&gt;
 BZF_API bool [[bz_addWorldTeleporter]] ( float *pos, float rot, float* scale, float border, [[bz_WorldObjectOptions]] options );&lt;br /&gt;
 BZF_API bool [[bz_addWorldWaterLevel]]( float level, [[bz_MaterialInfo]] *material );&lt;br /&gt;
 BZF_API bool [[bz_addWorldWeapon]]( const char* flagType, float *pos, float rot, float tilt, float initDelay, [[bz_APIFloatList]] &amp;amp;delays );&lt;br /&gt;
 BZF_API bool [[bz_setWorldSize]]( float size, float wallHeight = -1.0 );&lt;br /&gt;
&lt;br /&gt;
===Misc===&lt;br /&gt;
 BZF_API bool [[bz_getStandardSpawn]] ( int playerID, float pos[3], float *rot );&lt;br /&gt;
 BZF_API bool [[bz_killPlayer]] ( int playerID, bool spawnOnBase, int killerID = -1, const char* flagID = NULL );&lt;br /&gt;
 BZF_API bool [[bz_sendPlayCustomLocalSound]] ( int playerID, const char* soundName );&lt;br /&gt;
 BZF_API [[bz_ApiString]] [[bz_filterPath]] ( const char* path );&lt;br /&gt;
 BZF_API const char *[[bz_format]](const char* fmt, ...)_ATTRIBUTE12;&lt;br /&gt;
 BZF_API const char *[[bz_toupper]](const char* val );&lt;br /&gt;
 BZF_API const char *[[bz_tolower]](const char* val );&lt;br /&gt;
 BZF_API const char *[[bz_urlEncode]](const char* val );&lt;br /&gt;
 BZF_API [[bz_eGameType]] [[bz_getGameType]]( void );&lt;br /&gt;
 BZF_API [[bz_eTeamType]] [[bz_checkBaseAtPoint]] ( float pos[3] );&lt;br /&gt;
&lt;br /&gt;
===Server Side Players (Development)===&lt;br /&gt;
 BZF_API int [[bz_addServerSidePlayer]] ( [[bz_ServerSidePlayerHandler]] *handler );&lt;br /&gt;
 BZF_API bool [[bz_removeServerSidePlayer]] ( int playerID, [[bz_ServerSidePlayerHandler]] *handler );&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[BZFS API]]&lt;br /&gt;
&lt;br /&gt;
[[plug-ins]]&lt;br /&gt;
&lt;br /&gt;
[[Category:BZFS_API_Functions]]&lt;/div&gt;</summary>
		<author><name>Catay</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Functions_(API)&amp;diff=4416</id>
		<title>Functions (API)</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Functions_(API)&amp;diff=4416"/>
		<updated>2008-04-07T20:59:44Z</updated>

		<summary type="html">&lt;p&gt;Catay: /* Chat Messages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Fill in articles for all API Functions}}&lt;br /&gt;
&lt;br /&gt;
{{BZFS_API_Doc}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The BZFS API provides a number of functions to plug-ins for use in querying the current game state. Functions are used both to get information about the game, and to trigger in game actions, such as activating a world weapon.&lt;br /&gt;
&lt;br /&gt;
==Function Groups==&lt;br /&gt;
Functions are broken into a series of groups based on the type of action or information they deal with.&lt;br /&gt;
&lt;br /&gt;
===Event Registration===&lt;br /&gt;
 BZF_API bool [[bz_registerEvent]] ( [[Events(API)|bz_eEventType]] eventType, [[Events(API)|bz_EventHandler]]* eventHandler );&lt;br /&gt;
 BZF_API bool [[bz_removeEvent]] ( [[Events(API)|bz_eEventType]] eventType, [[Events(API)|bz_EventHandler]]* eventHandler );&lt;br /&gt;
&lt;br /&gt;
===Non-Player Connections===&lt;br /&gt;
 BZF_API bool [[bz_registerNonPlayerConnectionHandler]] ( int connectionID, [[bz_NonPlayerConnectionHandler]]* handler );&lt;br /&gt;
 BZF_API bool [[bz_removeNonPlayerConnectionHandler]] ( int connectionID, [[bz_NonPlayerConnectionHandler]]* handler );&lt;br /&gt;
 BZF_API bool [[bz_sendNonPlayerData]] ( int connectionID, const void *data, unsigned int size );&lt;br /&gt;
 BZF_API bool [[bz_disconectNonPlayerConnection]] ( int connectionID );&lt;br /&gt;
&lt;br /&gt;
===Player Information===&lt;br /&gt;
&lt;br /&gt;
 BZF_API bool [[bz_getPlayerIndexList]] ( [[bz_APIIntList]] *playerList );&lt;br /&gt;
 BZF_API [[bz_APIIntList]] *[[bz_getPlayerIndexList]] ( void );&lt;br /&gt;
 BZF_API [[bz_BasePlayerRecord]] *[[bz_getPlayerByIndex]] ( int index );&lt;br /&gt;
 BZF_API bool [[bz_updatePlayerData]] ( [[bz_BasePlayerRecord]] *playerRecord );&lt;br /&gt;
 BZF_API bool [[bz_hasPerm]] ( int playerID, const char* perm );&lt;br /&gt;
 BZF_API bool [[bz_grantPerm]] ( int playerID, const char* perm );&lt;br /&gt;
 BZF_API bool [[bz_revokePerm]] ( int playerID, const char* perm );&lt;br /&gt;
 BZF_API bool [[bz_getAdmin]] ( int playerID );&lt;br /&gt;
 BZF_API bool [[bz_freePlayerRecord]] ( [[bz_BasePlayerRecord]] *playerRecord );&lt;br /&gt;
 BZF_API const char* [[bz_getPlayerFlag]] ( int playerID );&lt;br /&gt;
 BZF_API bool [[bz_getPlayerCurrentState]] ( int playerID, [[bz_PlayerUpdateState]] &amp;amp;state );&lt;br /&gt;
 BZF_API bool [[bz_isPlayerPaused]] ( int playerID );&lt;br /&gt;
 BZF_API bool [[bz_setPlayerOperator]] ( int playerId );&lt;br /&gt;
 BZF_API [[bz_APIIntList]]* [[bz_getPlayerIndexList]] ( void );&lt;br /&gt;
 BZF_API bool [[bz_canPlayerSpawn]]( int playerID );&lt;br /&gt;
 BZF_API bool [[bz_setPlayerSpawnable]]( int playerID, bool spawn );&lt;br /&gt;
 BZF_API bool [[bz_setPlayerLimboText]]( int playerID, const char* text );&lt;br /&gt;
 BZF_API int [[bz_getPlayerCount]] ( void );&lt;br /&gt;
 BZF_API bool [[bz_anyPlayers]] ( void );&lt;br /&gt;
&lt;br /&gt;
=== Team Management===&lt;br /&gt;
 BZF_API unsigned int [[bz_getTeamPlayerLimit]] ( bz_eTeamType team )&lt;br /&gt;
 BZF_API int [[bz_getTeamCount]] ([[bz_eTeamType]] team );&lt;br /&gt;
 BZF_API int [[bz_getTeamScore]] ([[bz_eTeamType]] team );&lt;br /&gt;
 BZF_API int [[bz_getTeamWins]] ([[bz_eTeamType]] team );&lt;br /&gt;
 BZF_API int [[bz_getTeamLosses]] ([[bz_eTeamType]] team );&lt;br /&gt;
 BZF_API void [[bz_setTeamWins]] ([[bz_eTeamType]] team, int wins );&lt;br /&gt;
 BZF_API void [[bz_setTeamLosses]] ([[bz_eTeamType]] team, int losses );&lt;br /&gt;
 BZF_API void [[bz_resetTeamScore]] ([[bz_eTeamType]] team );&lt;br /&gt;
 BZF_API void [[bz_resetTeamScores]] ( void );&lt;br /&gt;
 BZF_API void [[bz_changeTeam]]( int player, [[bz_eTeamType]] team );&lt;br /&gt;
&lt;br /&gt;
=== Score Management ===&lt;br /&gt;
 BZF_API bool [[bz_setPlayerWins]] (int playerId, int wins);&lt;br /&gt;
 BZF_API bool [[bz_setPlayerLosses]] (int playerId, int losses);&lt;br /&gt;
 BZF_API bool [[bz_setPlayerTKs]] (int playerId, int tks);&lt;br /&gt;
 BZF_API bool [[bz_resetPlayerScore]] (int playerId);&lt;br /&gt;
 BZF_API int [[bz_getPlayerWins]] (int playerId);&lt;br /&gt;
 BZF_API int [[bz_getPlayerLosses]] (int playerId);&lt;br /&gt;
 BZF_API int [[bz_getPlayerTKs]] (int playerId);&lt;br /&gt;
&lt;br /&gt;
=== Latency Information ===&lt;br /&gt;
 BZF_API int [[bz_getPlayerLag]] ( int playerId );&lt;br /&gt;
 BZF_API int [[bz_getPlayerJitter]] ( int playerId );&lt;br /&gt;
 BZF_API float [[bz_getPlayerPacketloss]] ( int playerId );&lt;br /&gt;
&lt;br /&gt;
=== Permission Group Management ===&lt;br /&gt;
 BZF_API [[bz_APIStringList]]* [[bz_getGroupList]] ( void );&lt;br /&gt;
 BZF_API [[bz_APIStringList]]* [[bz_getGroupPerms]] ( const char* group );&lt;br /&gt;
 BZF_API bool [[bz_groupAllowPerm]]( const char* group, const char* perm );&lt;br /&gt;
&lt;br /&gt;
=== Chat Messages ===&lt;br /&gt;
 BZF_API bool [[bz_sendTextMessage]] (int from, int to, const char* message);&lt;br /&gt;
 BZF_API bool [[bz_sendTextMessage]] (int from, [[bz_eTeamType]] to, const char* message);&lt;br /&gt;
 BZF_API bool [[bz_sendTextMessagef]] (int from, int to, const char* fmt, ...);&lt;br /&gt;
 BZF_API bool [[bz_sendTextMessagef]] (int from, [[bz_eTeamType]] to, const char* fmt, ...);&lt;br /&gt;
 BZF_API bool [[bz_sendFetchResMessage]] ( int playerID,  const char* URL );&lt;br /&gt;
&lt;br /&gt;
=== Server Management ===&lt;br /&gt;
 BZF_API bool [[bz_restart]] ( void );&lt;br /&gt;
 BZF_API void [[bz_shutdown]] ();&lt;br /&gt;
 BZF_API void [[bz_superkill]] ();&lt;br /&gt;
 BZF_API void [[bz_gameOver]] (int playerID, bz_eTeamType = eNoTeam);&lt;br /&gt;
 BZF_API void [[bz_reloadLocalBans]] ();&lt;br /&gt;
 BZF_API void [[bz_reloadMasterBans]] ();&lt;br /&gt;
 BZF_API void [[bz_reloadGroups]] ();&lt;br /&gt;
 BZF_API void [[bz_reloadUsers]] ();&lt;br /&gt;
 BZF_API void [[bz_reloadHelp]] ();&lt;br /&gt;
&lt;br /&gt;
=== Rabbit Hunt===&lt;br /&gt;
 BZF_API void [[bz_newRabbit]]( int player, bool swap );&lt;br /&gt;
 BZF_API void [[bz_removeRabbit]]( int player );&lt;br /&gt;
&lt;br /&gt;
=== Map Management ===&lt;br /&gt;
 BZF_API void [[bz_setClientWorldDownloadURL]]( const char* URL );&lt;br /&gt;
 BZF_API const bzApiString [[bz_getClientWorldDownloadURL]] ( void );&lt;br /&gt;
 BZF_API bool [[bz_saveWorldCacheFile]]( const char* file );&lt;br /&gt;
&lt;br /&gt;
=== Flag Management ===&lt;br /&gt;
&lt;br /&gt;
 BZF_API bool [[bz_givePlayerFlag]] ( int playerID, const char* flagType, bool force );&lt;br /&gt;
 BZF_API bool [[bz_removePlayerFlag]] ( int playerID );&lt;br /&gt;
 BZF_API void [[bz_resetFlags]] ( bool onlyUnused );&lt;br /&gt;
 BZF_API unsigned int [[bz_getNumFlags]] ( void );&lt;br /&gt;
 BZF_API const [[bz_ApiString]] [[bz_getFlagName]]( int flag );&lt;br /&gt;
 BZF_API bool [[bz_resetFlag]] ( int flag );&lt;br /&gt;
 BZF_API int [[bz_flagPlayer]] ( int flag );&lt;br /&gt;
 BZF_API bool [[bz_getFlagPosition]] ( int flag, float* pos );&lt;br /&gt;
 BZF_API bool [[bz_moveFlag]] ( int flag, float pos[3], bool reset = true );&lt;br /&gt;
 BZF_API bool [[bz_RegisterCustomFlag]] ( const char* abbr, const char* name, const char* helpString, bz_eShotType shotType, bz_eFlagQuality quality );&lt;br /&gt;
&lt;br /&gt;
=== Shot Type Control ===&lt;br /&gt;
 BZF_API bool [[bz_setPlayerShotType]]( int playerId, [[bz_eShotType]] shotType );&lt;br /&gt;
&lt;br /&gt;
=== World Weapon Management ===&lt;br /&gt;
 BZF_API bool [[bz_fireWorldWep]] ( const char* flagType, float lifetime, float *pos, float tilt, float direction, int shotID , float dt );&lt;br /&gt;
 BZF_API int [[bz_fireWorldGM]] ( int targetPlayerID, float lifetime, float *pos, float tilt, float direction, float dt);&lt;br /&gt;
&lt;br /&gt;
=== Server Time ===&lt;br /&gt;
 BZF_API double [[bz_getCurrentTime]] ( void );&lt;br /&gt;
 BZF_API float [[bz_getMaxWaitTime]] ( void );&lt;br /&gt;
 BZF_API void [[bz_setMaxWaitTime]] ( float maxTime );&lt;br /&gt;
 BZF_API void [[bz_getLocaltime]] ( [[bz_localTime]] *ts );&lt;br /&gt;
&lt;br /&gt;
=== Global Database Management (BZDB) ===&lt;br /&gt;
 BZF_API double [[bz_getBZDBDouble]] ( const char* variable );&lt;br /&gt;
 BZF_API [[bz_ApiString]] [[bz_getBZDBString]]( const char* variable );&lt;br /&gt;
 BZF_API bool [[bz_getBZDBBool]]( const char* variable );&lt;br /&gt;
 BZF_API int [[bz_getBZDBInt]]( const char* variable );&lt;br /&gt;
 BZF_API int [[bz_getBZDBItemPerms]] ( const char* variable );&lt;br /&gt;
 BZF_API bool [[bz_getBZDBItemPesistent]]( const char* variable );&lt;br /&gt;
 BZF_API bool [[bz_BZDBItemExists]]( const char* variable );&lt;br /&gt;
 BZF_API bool [[bz_setBZDBDouble]] ( const char* variable, double val, int perms = 0, bool persistent = false );&lt;br /&gt;
 BZF_API bool [[bz_setBZDBString]]( const char* variable, const char *val, int perms = 0, bool persistent = false  );&lt;br /&gt;
 BZF_API bool [[bz_setBZDBBool]]( const char* variable, bool val, int perms = 0, bool persistent = false  );&lt;br /&gt;
 BZF_API bool [[bz_setBZDBInt]]( const char* variable, int val, int perms = 0, bool persistent = false  );&lt;br /&gt;
 BZF_API int [[bz_getBZDBVarList]]( bz_APIStringList	*varList );&lt;br /&gt;
 BZF_API void [[bz_resetBZDBVar]]( const char* variable );&lt;br /&gt;
 BZF_API void [[bz_resetALLBZDBVars]]( void );&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
 BZF_API void [[bz_debugMessage]] ( int level, const char* message );&lt;br /&gt;
 BZF_API void [[bz_debugMessagef]]( int level, const char* fmt, ... )&lt;br /&gt;
 BZF_API int [[bz_getDebugLevel]] ( void );&lt;br /&gt;
&lt;br /&gt;
===Server Administration===&lt;br /&gt;
 BZF_API bool [[bz_kickUser]] ( int playerIndex, const char* reason, bool notify );&lt;br /&gt;
 BZF_API bool [[bz_IPBanUser]] ( int playerIndex, const char* ip, int durration, const char* reason );&lt;br /&gt;
 BZF_API bool [[bz_IPUnbanUser]] ( const char* ip );&lt;br /&gt;
 BZF_API int [[bz_getLagWarn]]( void );&lt;br /&gt;
 BZF_API bool [[bz_setLagWarn]]( int lagwarn );&lt;br /&gt;
 BZF_API bool [[bz_pollActive]]( void );&lt;br /&gt;
 BZF_API bool [[bz_pollVeto]]( void );&lt;br /&gt;
&lt;br /&gt;
=== Reporting ===&lt;br /&gt;
 BZF_API [[bz_APIStringList]]* bz_getReports( void );&lt;br /&gt;
 BZF_API [[bool bz_fileReport]]( const char* message );&lt;br /&gt;
&lt;br /&gt;
=== Timed Game Management===&lt;br /&gt;
 BZF_API bool [[bz_setTimeLimit]]( float timeLimit );&lt;br /&gt;
 BZF_API float [[bz_getTimeLimit]]( void );&lt;br /&gt;
 BZF_API bool [[bz_isTimeManualStart]]( void );&lt;br /&gt;
 BZF_API bool [[bz_isCountDownActive]]( void );&lt;br /&gt;
 BZF_API bool [[bz_isCountDownInProgress]]( void );&lt;br /&gt;
 BZF_API void [[bz_pauseCountdown]] ( const char *pausedBy );&lt;br /&gt;
 BZF_API void [[bz_resumeCountdown]] ( const char *resumedBy );&lt;br /&gt;
 BZF_API void [[bz_startCountdown]] ( int delay, float limit, const char *byWho );&lt;br /&gt;
&lt;br /&gt;
=== Custom Text Commands===&lt;br /&gt;
 BZF_API bool [[bz_registerCustomSlashCommand]] ( const char* command, [[bz_CustomSlashCommandHandler]] *handler );&lt;br /&gt;
 BZF_API bool [[bz_removeCustomSlashCommand]] ( const char* command );&lt;br /&gt;
&lt;br /&gt;
===Plug-in Management===&lt;br /&gt;
 BZF_API int [[bz_getLoadedPlugins]]( bz_APIStringList * list );&lt;br /&gt;
 BZF_API bool [[bz_loadPlugin]]( const char* path, const char* params );&lt;br /&gt;
 BZF_API bool [[bz_unloadPlugin]]( const char* path );&lt;br /&gt;
 BZF_API bool [[bz_registerCustomPluginHandler]] ( const char* extension, [[bz_APIPluginHandler]] * handler );&lt;br /&gt;
 BZF_API bool [[bz_removeCustomPluginHandler]] ( const char* extension, [[bz_APIPluginHandler]] * handler );&lt;br /&gt;
&lt;br /&gt;
=== Public Server Information===&lt;br /&gt;
 BZF_API bool [[bz_getPublic]]( void );&lt;br /&gt;
 BZF_API [[bz_ApiString]] [[bz_getPublicAddr]]( void );&lt;br /&gt;
 BZF_API [[bz_ApiString]] [[bz_getPublicDescription]]( void );&lt;br /&gt;
 BZF_API void [[bz_updateListServer]] ( void );&lt;br /&gt;
&lt;br /&gt;
===HTTP Transfer===&lt;br /&gt;
 BZF_API bool [[bz_addURLJob]] ( const char* URL, [[bz_BaseURLHandler]]* handler = NULL, const char* postData = NULL );&lt;br /&gt;
 BZF_API bool [[bz_removeURLJob]] ( const char* URL );&lt;br /&gt;
 BZF_API bool [[bz_stopAllURLJobs]] ( void );&lt;br /&gt;
&lt;br /&gt;
===Inter-Plug-in Communications===&lt;br /&gt;
 BZF_API bool [[bz_clipFieldExists]] ( const char *name );&lt;br /&gt;
 BZF_API const char* [[bz_getclipFieldString]] ( const char *name );&lt;br /&gt;
 BZF_API float [[bz_getclipFieldFloat]] ( const char *name );&lt;br /&gt;
 BZF_API int [[bz_getclipFieldInt]] ( const char *name );&lt;br /&gt;
 BZF_API bool [[bz_setclipFieldString]] ( const char *name, const char* data );&lt;br /&gt;
 BZF_API bool [[bz_setclipFieldFloat]] ( const char *name, float data );&lt;br /&gt;
 BZF_API bool [[bz_setclipFieldInt]] ( const char *name, int data );&lt;br /&gt;
 BZF_API bool [[bz_addClipFieldNotifier]] ( const char *name, [[bz_ClipFiledNotifier *cb );&lt;br /&gt;
 BZF_API [[_removeClipFieldNotifier]] ( const char *name, [[bz_ClipFiledNotifier *cb );&lt;br /&gt;
&lt;br /&gt;
===Game Recording===&lt;br /&gt;
 BZF_API bool [[bz_saveRecBuf]]( const char * _filename, int seconds);&lt;br /&gt;
 BZF_API bool [[bz_startRecBuf]]( void );&lt;br /&gt;
 BZF_API bool [[bz_stopRecBuf]]( void );&lt;br /&gt;
&lt;br /&gt;
===Map Management===&lt;br /&gt;
====Map Information====&lt;br /&gt;
 BZF_API void [[bz_getWorldSize]]( float *size, float *wallHeight );&lt;br /&gt;
 BZF_API int [[bz_getWorldObjectCount]]( void );&lt;br /&gt;
 BZF_API [[bz_APIWorldObjectList]]* [[bz_getWorldObjectList]]( void );&lt;br /&gt;
 BZF_API void [[bz_releaseWorldObjectList]]( [[bz_APIWorldObjectList]]* list );&lt;br /&gt;
&lt;br /&gt;
====Map Collisions====&lt;br /&gt;
 [[bz_eAPIColType]] [[bz_cylinderInMapObject]] ( float pos[3], float height, float radius, [[bz_APIBaseWorldObject]] **object );&lt;br /&gt;
 [[bz_eAPIColType]] [[bz_boxInMapObject]] ( float pos[3], float size[3], float angle, [[bz_APIBaseWorldObject]] **object );&lt;br /&gt;
&lt;br /&gt;
====Custom Map Objects====&lt;br /&gt;
 BZF_API bool [[bz_registerCustomMapObject]] ( const char* object, [[bz_CustomMapObjectHandler]] *handler );&lt;br /&gt;
 BZF_API bool [[bz_removeCustomMapObject]] ( const char* object );&lt;br /&gt;
&lt;br /&gt;
====Map Definition====&lt;br /&gt;
 BZF_API bool [[bz_addWorldBox]] ( float *pos, float rot, float* scale, [[bz_WorldObjectOptions]] options );&lt;br /&gt;
 BZF_API bool [[bz_addWorldPyramid]] ( float *pos, float rot, float* scale, bool fliped, [[bz_WorldObjectOptions]] options );&lt;br /&gt;
 BZF_API bool [[bz_addWorldBase]]( float *pos, float rot, float* scale, bz_eTeamType team, [[bz_WorldObjectOptions]] options );&lt;br /&gt;
 BZF_API bool [[bz_addWorldTeleporter]] ( float *pos, float rot, float* scale, float border, [[bz_WorldObjectOptions]] options );&lt;br /&gt;
 BZF_API bool [[bz_addWorldWaterLevel]]( float level, [[bz_MaterialInfo]] *material );&lt;br /&gt;
 BZF_API bool [[bz_addWorldWeapon]]( const char* flagType, float *pos, float rot, float tilt, float initDelay, [[bz_APIFloatList]] &amp;amp;delays );&lt;br /&gt;
 BZF_API bool [[bz_setWorldSize]]( float size, float wallHeight = -1.0 );&lt;br /&gt;
&lt;br /&gt;
===Misc===&lt;br /&gt;
 BZF_API bool [[bz_getStandardSpawn]] ( int playerID, float pos[3], float *rot );&lt;br /&gt;
 BZF_API bool [[bz_killPlayer]] ( int playerID, bool spawnOnBase, int killerID = -1, const char* flagID = NULL );&lt;br /&gt;
 BZF_API bool [[bz_sendPlayCustomLocalSound]] ( int playerID, const char* soundName );&lt;br /&gt;
 BZF_API [[bz_ApiString]] [[bz_filterPath]] ( const char* path );&lt;br /&gt;
 BZF_API const char *[[bz_format]](const char* fmt, ...)_ATTRIBUTE12;&lt;br /&gt;
 BZF_API const char *[[bz_toupper]](const char* val );&lt;br /&gt;
 BZF_API const char *[[bz_tolower]](const char* val );&lt;br /&gt;
 BZF_API const char *[[bz_urlEncode]](const char* val );&lt;br /&gt;
 BZF_API [[bz_eGameType]] [[bz_getGameType]]( void );&lt;br /&gt;
 BZF_API [[bz_eTeamType]] [[bz_checkBaseAtPoint]] ( float pos[3] );&lt;br /&gt;
&lt;br /&gt;
===Server Side Players (Development)===&lt;br /&gt;
 BZF_API int [[bz_addServerSidePlayer]] ( [[bz_ServerSidePlayerHandler]] *handler );&lt;br /&gt;
 BZF_API bool [[bz_removeServerSidePlayer]] ( int playerID, [[bz_ServerSidePlayerHandler]] *handler );&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[BZFS API]]&lt;br /&gt;
&lt;br /&gt;
[[plug-ins]]&lt;br /&gt;
&lt;br /&gt;
[[Category:BZFS_API_Functions]]&lt;/div&gt;</summary>
		<author><name>Catay</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Functions_(API)&amp;diff=4415</id>
		<title>Functions (API)</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Functions_(API)&amp;diff=4415"/>
		<updated>2008-04-07T20:55:18Z</updated>

		<summary type="html">&lt;p&gt;Catay: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Fill in articles for all API Functions}}&lt;br /&gt;
&lt;br /&gt;
{{BZFS_API_Doc}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The BZFS API provides a number of functions to plug-ins for use in querying the current game state. Functions are used both to get information about the game, and to trigger in game actions, such as activating a world weapon.&lt;br /&gt;
&lt;br /&gt;
==Function Groups==&lt;br /&gt;
Functions are broken into a series of groups based on the type of action or information they deal with.&lt;br /&gt;
&lt;br /&gt;
===Event Registration===&lt;br /&gt;
 BZF_API bool [[bz_registerEvent]] ( [[Events(API)|bz_eEventType]] eventType, [[Events(API)|bz_EventHandler]]* eventHandler );&lt;br /&gt;
 BZF_API bool [[bz_removeEvent]] ( [[Events(API)|bz_eEventType]] eventType, [[Events(API)|bz_EventHandler]]* eventHandler );&lt;br /&gt;
&lt;br /&gt;
===Non-Player Connections===&lt;br /&gt;
 BZF_API bool [[bz_registerNonPlayerConnectionHandler]] ( int connectionID, [[bz_NonPlayerConnectionHandler]]* handler );&lt;br /&gt;
 BZF_API bool [[bz_removeNonPlayerConnectionHandler]] ( int connectionID, [[bz_NonPlayerConnectionHandler]]* handler );&lt;br /&gt;
 BZF_API bool [[bz_sendNonPlayerData]] ( int connectionID, const void *data, unsigned int size );&lt;br /&gt;
 BZF_API bool [[bz_disconectNonPlayerConnection]] ( int connectionID );&lt;br /&gt;
&lt;br /&gt;
===Player Information===&lt;br /&gt;
&lt;br /&gt;
 BZF_API bool [[bz_getPlayerIndexList]] ( [[bz_APIIntList]] *playerList );&lt;br /&gt;
 BZF_API [[bz_APIIntList]] *[[bz_getPlayerIndexList]] ( void );&lt;br /&gt;
 BZF_API [[bz_BasePlayerRecord]] *[[bz_getPlayerByIndex]] ( int index );&lt;br /&gt;
 BZF_API bool [[bz_updatePlayerData]] ( [[bz_BasePlayerRecord]] *playerRecord );&lt;br /&gt;
 BZF_API bool [[bz_hasPerm]] ( int playerID, const char* perm );&lt;br /&gt;
 BZF_API bool [[bz_grantPerm]] ( int playerID, const char* perm );&lt;br /&gt;
 BZF_API bool [[bz_revokePerm]] ( int playerID, const char* perm );&lt;br /&gt;
 BZF_API bool [[bz_getAdmin]] ( int playerID );&lt;br /&gt;
 BZF_API bool [[bz_freePlayerRecord]] ( [[bz_BasePlayerRecord]] *playerRecord );&lt;br /&gt;
 BZF_API const char* [[bz_getPlayerFlag]] ( int playerID );&lt;br /&gt;
 BZF_API bool [[bz_getPlayerCurrentState]] ( int playerID, [[bz_PlayerUpdateState]] &amp;amp;state );&lt;br /&gt;
 BZF_API bool [[bz_isPlayerPaused]] ( int playerID );&lt;br /&gt;
 BZF_API bool [[bz_setPlayerOperator]] ( int playerId );&lt;br /&gt;
 BZF_API [[bz_APIIntList]]* [[bz_getPlayerIndexList]] ( void );&lt;br /&gt;
 BZF_API bool [[bz_canPlayerSpawn]]( int playerID );&lt;br /&gt;
 BZF_API bool [[bz_setPlayerSpawnable]]( int playerID, bool spawn );&lt;br /&gt;
 BZF_API bool [[bz_setPlayerLimboText]]( int playerID, const char* text );&lt;br /&gt;
 BZF_API int [[bz_getPlayerCount]] ( void );&lt;br /&gt;
 BZF_API bool [[bz_anyPlayers]] ( void );&lt;br /&gt;
&lt;br /&gt;
=== Team Management===&lt;br /&gt;
 BZF_API unsigned int [[bz_getTeamPlayerLimit]] ( bz_eTeamType team )&lt;br /&gt;
 BZF_API int [[bz_getTeamCount]] ([[bz_eTeamType]] team );&lt;br /&gt;
 BZF_API int [[bz_getTeamScore]] ([[bz_eTeamType]] team );&lt;br /&gt;
 BZF_API int [[bz_getTeamWins]] ([[bz_eTeamType]] team );&lt;br /&gt;
 BZF_API int [[bz_getTeamLosses]] ([[bz_eTeamType]] team );&lt;br /&gt;
 BZF_API void [[bz_setTeamWins]] ([[bz_eTeamType]] team, int wins );&lt;br /&gt;
 BZF_API void [[bz_setTeamLosses]] ([[bz_eTeamType]] team, int losses );&lt;br /&gt;
 BZF_API void [[bz_resetTeamScore]] ([[bz_eTeamType]] team );&lt;br /&gt;
 BZF_API void [[bz_resetTeamScores]] ( void );&lt;br /&gt;
 BZF_API void [[bz_changeTeam]]( int player, [[bz_eTeamType]] team );&lt;br /&gt;
&lt;br /&gt;
=== Score Management ===&lt;br /&gt;
 BZF_API bool [[bz_setPlayerWins]] (int playerId, int wins);&lt;br /&gt;
 BZF_API bool [[bz_setPlayerLosses]] (int playerId, int losses);&lt;br /&gt;
 BZF_API bool [[bz_setPlayerTKs]] (int playerId, int tks);&lt;br /&gt;
 BZF_API bool [[bz_resetPlayerScore]] (int playerId);&lt;br /&gt;
 BZF_API int [[bz_getPlayerWins]] (int playerId);&lt;br /&gt;
 BZF_API int [[bz_getPlayerLosses]] (int playerId);&lt;br /&gt;
 BZF_API int [[bz_getPlayerTKs]] (int playerId);&lt;br /&gt;
&lt;br /&gt;
=== Latency Information ===&lt;br /&gt;
 BZF_API int [[bz_getPlayerLag]] ( int playerId );&lt;br /&gt;
 BZF_API int [[bz_getPlayerJitter]] ( int playerId );&lt;br /&gt;
 BZF_API float [[bz_getPlayerPacketloss]] ( int playerId );&lt;br /&gt;
&lt;br /&gt;
=== Permission Group Management ===&lt;br /&gt;
 BZF_API [[bz_APIStringList]]* [[bz_getGroupList]] ( void );&lt;br /&gt;
 BZF_API [[bz_APIStringList]]* [[bz_getGroupPerms]] ( const char* group );&lt;br /&gt;
 BZF_API bool [[bz_groupAllowPerm]]( const char* group, const char* perm );&lt;br /&gt;
&lt;br /&gt;
=== Chat Messages ===&lt;br /&gt;
 BZF_API bool [[bz_sendTextMessage]] (int from, int to, const char* message);&lt;br /&gt;
 BZF_API bool [[bz_sendTextMessage]] (int from, [[bz_eTeamType]] to, const char* message);&lt;br /&gt;
 BZF_API bool [[bz_sendTextMessagef]] (int from, int to, const char* fmt, ...);&lt;br /&gt;
 BZF_API bool [[bz_sendTextMessagef]] (int from, [[bz_eTeamType]] to, const char* fmt, ...);&lt;br /&gt;
 BZF_API bool [[bz_sentFetchResMessage]] ( int playerID,  const char* URL );&lt;br /&gt;
&lt;br /&gt;
=== Server Management ===&lt;br /&gt;
 BZF_API bool [[bz_restart]] ( void );&lt;br /&gt;
 BZF_API void [[bz_shutdown]] ();&lt;br /&gt;
 BZF_API void [[bz_superkill]] ();&lt;br /&gt;
 BZF_API void [[bz_gameOver]] (int playerID, bz_eTeamType = eNoTeam);&lt;br /&gt;
 BZF_API void [[bz_reloadLocalBans]] ();&lt;br /&gt;
 BZF_API void [[bz_reloadMasterBans]] ();&lt;br /&gt;
 BZF_API void [[bz_reloadGroups]] ();&lt;br /&gt;
 BZF_API void [[bz_reloadUsers]] ();&lt;br /&gt;
 BZF_API void [[bz_reloadHelp]] ();&lt;br /&gt;
&lt;br /&gt;
=== Rabbit Hunt===&lt;br /&gt;
 BZF_API void [[bz_newRabbit]]( int player, bool swap );&lt;br /&gt;
 BZF_API void [[bz_removeRabbit]]( int player );&lt;br /&gt;
&lt;br /&gt;
=== Map Management ===&lt;br /&gt;
 BZF_API void [[bz_setClientWorldDownloadURL]]( const char* URL );&lt;br /&gt;
 BZF_API const bzApiString [[bz_getClientWorldDownloadURL]] ( void );&lt;br /&gt;
 BZF_API bool [[bz_saveWorldCacheFile]]( const char* file );&lt;br /&gt;
&lt;br /&gt;
=== Flag Management ===&lt;br /&gt;
&lt;br /&gt;
 BZF_API bool [[bz_givePlayerFlag]] ( int playerID, const char* flagType, bool force );&lt;br /&gt;
 BZF_API bool [[bz_removePlayerFlag]] ( int playerID );&lt;br /&gt;
 BZF_API void [[bz_resetFlags]] ( bool onlyUnused );&lt;br /&gt;
 BZF_API unsigned int [[bz_getNumFlags]] ( void );&lt;br /&gt;
 BZF_API const [[bz_ApiString]] [[bz_getFlagName]]( int flag );&lt;br /&gt;
 BZF_API bool [[bz_resetFlag]] ( int flag );&lt;br /&gt;
 BZF_API int [[bz_flagPlayer]] ( int flag );&lt;br /&gt;
 BZF_API bool [[bz_getFlagPosition]] ( int flag, float* pos );&lt;br /&gt;
 BZF_API bool [[bz_moveFlag]] ( int flag, float pos[3], bool reset = true );&lt;br /&gt;
 BZF_API bool [[bz_RegisterCustomFlag]] ( const char* abbr, const char* name, const char* helpString, bz_eShotType shotType, bz_eFlagQuality quality );&lt;br /&gt;
&lt;br /&gt;
=== Shot Type Control ===&lt;br /&gt;
 BZF_API bool [[bz_setPlayerShotType]]( int playerId, [[bz_eShotType]] shotType );&lt;br /&gt;
&lt;br /&gt;
=== World Weapon Management ===&lt;br /&gt;
 BZF_API bool [[bz_fireWorldWep]] ( const char* flagType, float lifetime, float *pos, float tilt, float direction, int shotID , float dt );&lt;br /&gt;
 BZF_API int [[bz_fireWorldGM]] ( int targetPlayerID, float lifetime, float *pos, float tilt, float direction, float dt);&lt;br /&gt;
&lt;br /&gt;
=== Server Time ===&lt;br /&gt;
 BZF_API double [[bz_getCurrentTime]] ( void );&lt;br /&gt;
 BZF_API float [[bz_getMaxWaitTime]] ( void );&lt;br /&gt;
 BZF_API void [[bz_setMaxWaitTime]] ( float maxTime );&lt;br /&gt;
 BZF_API void [[bz_getLocaltime]] ( [[bz_localTime]] *ts );&lt;br /&gt;
&lt;br /&gt;
=== Global Database Management (BZDB) ===&lt;br /&gt;
 BZF_API double [[bz_getBZDBDouble]] ( const char* variable );&lt;br /&gt;
 BZF_API [[bz_ApiString]] [[bz_getBZDBString]]( const char* variable );&lt;br /&gt;
 BZF_API bool [[bz_getBZDBBool]]( const char* variable );&lt;br /&gt;
 BZF_API int [[bz_getBZDBInt]]( const char* variable );&lt;br /&gt;
 BZF_API int [[bz_getBZDBItemPerms]] ( const char* variable );&lt;br /&gt;
 BZF_API bool [[bz_getBZDBItemPesistent]]( const char* variable );&lt;br /&gt;
 BZF_API bool [[bz_BZDBItemExists]]( const char* variable );&lt;br /&gt;
 BZF_API bool [[bz_setBZDBDouble]] ( const char* variable, double val, int perms = 0, bool persistent = false );&lt;br /&gt;
 BZF_API bool [[bz_setBZDBString]]( const char* variable, const char *val, int perms = 0, bool persistent = false  );&lt;br /&gt;
 BZF_API bool [[bz_setBZDBBool]]( const char* variable, bool val, int perms = 0, bool persistent = false  );&lt;br /&gt;
 BZF_API bool [[bz_setBZDBInt]]( const char* variable, int val, int perms = 0, bool persistent = false  );&lt;br /&gt;
 BZF_API int [[bz_getBZDBVarList]]( bz_APIStringList	*varList );&lt;br /&gt;
 BZF_API void [[bz_resetBZDBVar]]( const char* variable );&lt;br /&gt;
 BZF_API void [[bz_resetALLBZDBVars]]( void );&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
 BZF_API void [[bz_debugMessage]] ( int level, const char* message );&lt;br /&gt;
 BZF_API void [[bz_debugMessagef]]( int level, const char* fmt, ... )&lt;br /&gt;
 BZF_API int [[bz_getDebugLevel]] ( void );&lt;br /&gt;
&lt;br /&gt;
===Server Administration===&lt;br /&gt;
 BZF_API bool [[bz_kickUser]] ( int playerIndex, const char* reason, bool notify );&lt;br /&gt;
 BZF_API bool [[bz_IPBanUser]] ( int playerIndex, const char* ip, int durration, const char* reason );&lt;br /&gt;
 BZF_API bool [[bz_IPUnbanUser]] ( const char* ip );&lt;br /&gt;
 BZF_API int [[bz_getLagWarn]]( void );&lt;br /&gt;
 BZF_API bool [[bz_setLagWarn]]( int lagwarn );&lt;br /&gt;
 BZF_API bool [[bz_pollActive]]( void );&lt;br /&gt;
 BZF_API bool [[bz_pollVeto]]( void );&lt;br /&gt;
&lt;br /&gt;
=== Reporting ===&lt;br /&gt;
 BZF_API [[bz_APIStringList]]* bz_getReports( void );&lt;br /&gt;
 BZF_API [[bool bz_fileReport]]( const char* message );&lt;br /&gt;
&lt;br /&gt;
=== Timed Game Management===&lt;br /&gt;
 BZF_API bool [[bz_setTimeLimit]]( float timeLimit );&lt;br /&gt;
 BZF_API float [[bz_getTimeLimit]]( void );&lt;br /&gt;
 BZF_API bool [[bz_isTimeManualStart]]( void );&lt;br /&gt;
 BZF_API bool [[bz_isCountDownActive]]( void );&lt;br /&gt;
 BZF_API bool [[bz_isCountDownInProgress]]( void );&lt;br /&gt;
 BZF_API void [[bz_pauseCountdown]] ( const char *pausedBy );&lt;br /&gt;
 BZF_API void [[bz_resumeCountdown]] ( const char *resumedBy );&lt;br /&gt;
 BZF_API void [[bz_startCountdown]] ( int delay, float limit, const char *byWho );&lt;br /&gt;
&lt;br /&gt;
=== Custom Text Commands===&lt;br /&gt;
 BZF_API bool [[bz_registerCustomSlashCommand]] ( const char* command, [[bz_CustomSlashCommandHandler]] *handler );&lt;br /&gt;
 BZF_API bool [[bz_removeCustomSlashCommand]] ( const char* command );&lt;br /&gt;
&lt;br /&gt;
===Plug-in Management===&lt;br /&gt;
 BZF_API int [[bz_getLoadedPlugins]]( bz_APIStringList * list );&lt;br /&gt;
 BZF_API bool [[bz_loadPlugin]]( const char* path, const char* params );&lt;br /&gt;
 BZF_API bool [[bz_unloadPlugin]]( const char* path );&lt;br /&gt;
 BZF_API bool [[bz_registerCustomPluginHandler]] ( const char* extension, [[bz_APIPluginHandler]] * handler );&lt;br /&gt;
 BZF_API bool [[bz_removeCustomPluginHandler]] ( const char* extension, [[bz_APIPluginHandler]] * handler );&lt;br /&gt;
&lt;br /&gt;
=== Public Server Information===&lt;br /&gt;
 BZF_API bool [[bz_getPublic]]( void );&lt;br /&gt;
 BZF_API [[bz_ApiString]] [[bz_getPublicAddr]]( void );&lt;br /&gt;
 BZF_API [[bz_ApiString]] [[bz_getPublicDescription]]( void );&lt;br /&gt;
 BZF_API void [[bz_updateListServer]] ( void );&lt;br /&gt;
&lt;br /&gt;
===HTTP Transfer===&lt;br /&gt;
 BZF_API bool [[bz_addURLJob]] ( const char* URL, [[bz_BaseURLHandler]]* handler = NULL, const char* postData = NULL );&lt;br /&gt;
 BZF_API bool [[bz_removeURLJob]] ( const char* URL );&lt;br /&gt;
 BZF_API bool [[bz_stopAllURLJobs]] ( void );&lt;br /&gt;
&lt;br /&gt;
===Inter-Plug-in Communications===&lt;br /&gt;
 BZF_API bool [[bz_clipFieldExists]] ( const char *name );&lt;br /&gt;
 BZF_API const char* [[bz_getclipFieldString]] ( const char *name );&lt;br /&gt;
 BZF_API float [[bz_getclipFieldFloat]] ( const char *name );&lt;br /&gt;
 BZF_API int [[bz_getclipFieldInt]] ( const char *name );&lt;br /&gt;
 BZF_API bool [[bz_setclipFieldString]] ( const char *name, const char* data );&lt;br /&gt;
 BZF_API bool [[bz_setclipFieldFloat]] ( const char *name, float data );&lt;br /&gt;
 BZF_API bool [[bz_setclipFieldInt]] ( const char *name, int data );&lt;br /&gt;
 BZF_API bool [[bz_addClipFieldNotifier]] ( const char *name, [[bz_ClipFiledNotifier *cb );&lt;br /&gt;
 BZF_API [[_removeClipFieldNotifier]] ( const char *name, [[bz_ClipFiledNotifier *cb );&lt;br /&gt;
&lt;br /&gt;
===Game Recording===&lt;br /&gt;
 BZF_API bool [[bz_saveRecBuf]]( const char * _filename, int seconds);&lt;br /&gt;
 BZF_API bool [[bz_startRecBuf]]( void );&lt;br /&gt;
 BZF_API bool [[bz_stopRecBuf]]( void );&lt;br /&gt;
&lt;br /&gt;
===Map Management===&lt;br /&gt;
====Map Information====&lt;br /&gt;
 BZF_API void [[bz_getWorldSize]]( float *size, float *wallHeight );&lt;br /&gt;
 BZF_API int [[bz_getWorldObjectCount]]( void );&lt;br /&gt;
 BZF_API [[bz_APIWorldObjectList]]* [[bz_getWorldObjectList]]( void );&lt;br /&gt;
 BZF_API void [[bz_releaseWorldObjectList]]( [[bz_APIWorldObjectList]]* list );&lt;br /&gt;
&lt;br /&gt;
====Map Collisions====&lt;br /&gt;
 [[bz_eAPIColType]] [[bz_cylinderInMapObject]] ( float pos[3], float height, float radius, [[bz_APIBaseWorldObject]] **object );&lt;br /&gt;
 [[bz_eAPIColType]] [[bz_boxInMapObject]] ( float pos[3], float size[3], float angle, [[bz_APIBaseWorldObject]] **object );&lt;br /&gt;
&lt;br /&gt;
====Custom Map Objects====&lt;br /&gt;
 BZF_API bool [[bz_registerCustomMapObject]] ( const char* object, [[bz_CustomMapObjectHandler]] *handler );&lt;br /&gt;
 BZF_API bool [[bz_removeCustomMapObject]] ( const char* object );&lt;br /&gt;
&lt;br /&gt;
====Map Definition====&lt;br /&gt;
 BZF_API bool [[bz_addWorldBox]] ( float *pos, float rot, float* scale, [[bz_WorldObjectOptions]] options );&lt;br /&gt;
 BZF_API bool [[bz_addWorldPyramid]] ( float *pos, float rot, float* scale, bool fliped, [[bz_WorldObjectOptions]] options );&lt;br /&gt;
 BZF_API bool [[bz_addWorldBase]]( float *pos, float rot, float* scale, bz_eTeamType team, [[bz_WorldObjectOptions]] options );&lt;br /&gt;
 BZF_API bool [[bz_addWorldTeleporter]] ( float *pos, float rot, float* scale, float border, [[bz_WorldObjectOptions]] options );&lt;br /&gt;
 BZF_API bool [[bz_addWorldWaterLevel]]( float level, [[bz_MaterialInfo]] *material );&lt;br /&gt;
 BZF_API bool [[bz_addWorldWeapon]]( const char* flagType, float *pos, float rot, float tilt, float initDelay, [[bz_APIFloatList]] &amp;amp;delays );&lt;br /&gt;
 BZF_API bool [[bz_setWorldSize]]( float size, float wallHeight = -1.0 );&lt;br /&gt;
&lt;br /&gt;
===Misc===&lt;br /&gt;
 BZF_API bool [[bz_getStandardSpawn]] ( int playerID, float pos[3], float *rot );&lt;br /&gt;
 BZF_API bool [[bz_killPlayer]] ( int playerID, bool spawnOnBase, int killerID = -1, const char* flagID = NULL );&lt;br /&gt;
 BZF_API bool [[bz_sendPlayCustomLocalSound]] ( int playerID, const char* soundName );&lt;br /&gt;
 BZF_API [[bz_ApiString]] [[bz_filterPath]] ( const char* path );&lt;br /&gt;
 BZF_API const char *[[bz_format]](const char* fmt, ...)_ATTRIBUTE12;&lt;br /&gt;
 BZF_API const char *[[bz_toupper]](const char* val );&lt;br /&gt;
 BZF_API const char *[[bz_tolower]](const char* val );&lt;br /&gt;
 BZF_API const char *[[bz_urlEncode]](const char* val );&lt;br /&gt;
 BZF_API [[bz_eGameType]] [[bz_getGameType]]( void );&lt;br /&gt;
 BZF_API [[bz_eTeamType]] [[bz_checkBaseAtPoint]] ( float pos[3] );&lt;br /&gt;
&lt;br /&gt;
===Server Side Players (Development)===&lt;br /&gt;
 BZF_API int [[bz_addServerSidePlayer]] ( [[bz_ServerSidePlayerHandler]] *handler );&lt;br /&gt;
 BZF_API bool [[bz_removeServerSidePlayer]] ( int playerID, [[bz_ServerSidePlayerHandler]] *handler );&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[BZFS API]]&lt;br /&gt;
&lt;br /&gt;
[[plug-ins]]&lt;br /&gt;
&lt;br /&gt;
[[Category:BZFS_API_Functions]]&lt;/div&gt;</summary>
		<author><name>Catay</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Bool_bz_fileReport&amp;diff=4414</id>
		<title>Bool bz fileReport</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Bool_bz_fileReport&amp;diff=4414"/>
		<updated>2008-04-07T20:49:52Z</updated>

		<summary type="html">&lt;p&gt;Catay: New page: {{BZFS_API_Doc}} {{BZFS_API_Funcs}} ==Prototype== BZF_API bool bz fileReport ( const char* message ); ==Parameters== {| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;20&amp;quot; cellspacing=&amp;quot;0&amp;quot;   !name   !type   !value...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BZFS_API_Doc}}&lt;br /&gt;
{{BZFS_API_Funcs}}&lt;br /&gt;
==Prototype==&lt;br /&gt;
BZF_API bool bz fileReport ( const char* message );&lt;br /&gt;
==Parameters==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;20&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
  !name&lt;br /&gt;
  !type&lt;br /&gt;
  !value desription&lt;br /&gt;
  |-&lt;br /&gt;
  |message&lt;br /&gt;
  |const char*&lt;br /&gt;
  |The report message of the report going to be filed.&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
This API function will file a report message to the report&lt;br /&gt;
channel.&lt;/div&gt;</summary>
		<author><name>Catay</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Bz_eReportFiledEvent&amp;diff=4413</id>
		<title>Bz eReportFiledEvent</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Bz_eReportFiledEvent&amp;diff=4413"/>
		<updated>2008-04-07T20:21:04Z</updated>

		<summary type="html">&lt;p&gt;Catay: New page: {{BZFS_API_Doc}} {{BZFS_API_Events}}  ==Overview== The &amp;#039;&amp;#039;&amp;#039;bz_eReportFiledEvent&amp;#039;&amp;#039;&amp;#039; is an API event that is called each time a player or plugin files a report.  ==Data== &amp;#039;&amp;#039;&amp;#039;bz_eReportFiledEv...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BZFS_API_Doc}}&lt;br /&gt;
{{BZFS_API_Events}}&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
The &#039;&#039;&#039;bz_eReportFiledEvent&#039;&#039;&#039; is an API event that is called each time a&lt;br /&gt;
player or plugin files a report.&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
&#039;&#039;&#039;bz_eReportFiledEvent&#039;&#039;&#039; returns the&lt;br /&gt;
&#039;&#039;&#039;bz_ReportFiledEventData_V1&#039;&#039;&#039; data class.&lt;br /&gt;
&lt;br /&gt;
  {| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;20&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
  !name&lt;br /&gt;
  !type&lt;br /&gt;
  !value description&lt;br /&gt;
  |-&lt;br /&gt;
  |eventType&lt;br /&gt;
  |[[Event(API)|bz_eEventType]]&lt;br /&gt;
  |bz_eReportFiledEvent&lt;br /&gt;
  |-&lt;br /&gt;
  |playerID&lt;br /&gt;
  |int&lt;br /&gt;
  |The player ID that is filing the report.&lt;br /&gt;
  |-&lt;br /&gt;
  |message&lt;br /&gt;
  |[[bz_ApiString]]&lt;br /&gt;
  |The report message that is filed.&lt;br /&gt;
  |-&lt;br /&gt;
  |eventTime&lt;br /&gt;
  |double&lt;br /&gt;
  |Time of event.&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
==Uses==&lt;br /&gt;
This event is a notification only event, none of the data returned can&lt;br /&gt;
be changed.&lt;br /&gt;
&lt;br /&gt;
[[Category:BZFS_API_Docs]]&lt;br /&gt;
[[Category:BZFS_API_Events]]&lt;/div&gt;</summary>
		<author><name>Catay</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Events_(API)&amp;diff=4412</id>
		<title>Events (API)</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Events_(API)&amp;diff=4412"/>
		<updated>2008-04-07T19:57:58Z</updated>

		<summary type="html">&lt;p&gt;Catay: /* Events */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Fill in articles for all API events}}&lt;br /&gt;
&lt;br /&gt;
{{BZFS_API_Doc}}&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
API events are callbacks that a [[Plug-ins|plug-in]] can install into [[BZFS]] to be called in response to specific actions or state changes in the server side game world. Events are the primary method of communication from BZFS to installed plug-ins. Specific events exist for nearly all logical actions that can happen during a game of BZFlag.&lt;br /&gt;
&lt;br /&gt;
==Installation and Removal==&lt;br /&gt;
The callbacks for events are typically installed during the [[bz_Load]] entry point in a plug-in, so they can be active when a plug-in is first loaded.&lt;br /&gt;
&lt;br /&gt;
The plug-in must call the function;&lt;br /&gt;
&lt;br /&gt;
 BZF_API bool [[bz_registerEvent]] ( bz_eEventType eventType, [[bz_EventHandler]]* eventHandler );&lt;br /&gt;
&lt;br /&gt;
The plug-in registers and event callback derived from [[bz_EventHandler]] for each specific event types it wishes to monitor.&lt;br /&gt;
&lt;br /&gt;
When a plug-in no longer needs to monitor an event, or when it is unloaded in the [[bz_Unload]] entry point, the plug-in must remove the installed callback by calling the function;&lt;br /&gt;
&lt;br /&gt;
 BZF_API bool [[bz_removeEvent]] ( bz_eEventType eventType, [[bz_EventHandler]]* eventHandler );&lt;br /&gt;
&lt;br /&gt;
==Event Handler==&lt;br /&gt;
The plug-in must define a class that is derived from [[bz_EventHandler]] and pass a pointer to an object of that class when ever it registers an event callback.&lt;br /&gt;
&lt;br /&gt;
When ever a specific event is triggered, BZFS will call the &#039;process&#039; method of the installed callback class.&lt;br /&gt;
&lt;br /&gt;
   virtual void process ( bz_EventData *eventData ) = 0;&lt;br /&gt;
&lt;br /&gt;
==Event Data==&lt;br /&gt;
With each call to the &#039;process&#039; method of the installed event handler, BZFS will pass the plug-in a pointer to a class that contains all the data provided by the event. Each event derives a specific data class from [[bz_EventData]] that contains the specific member variables that contain the data. The base class [[bz_EventData]] contains the data member;&lt;br /&gt;
   bz_eEventType	eventType;&lt;br /&gt;
This data member allows a plug-in to identify the specific event and cast the &#039;bz_EventData&#039; pointer to the appropriate specific data class. This is usefull for plug-ins that use the same &#039;bz_EventHandler&#039; to process more then one specific message.&lt;br /&gt;
&lt;br /&gt;
Please see the descriptions of each specific event for information and descriptions of the data classes for each event. Some specific events allow plug-ins to change the values of data members in the data class and will use the modified values instead.&lt;br /&gt;
&lt;br /&gt;
Plug-ins should never delete or free the memory for a data class. BZFS will manage all pointers passed to plug-ins.&lt;br /&gt;
&lt;br /&gt;
==Events==&lt;br /&gt;
The following list contains all the event types currently supported by BZFS version 2.99&lt;br /&gt;
&lt;br /&gt;
  [[bz_eNullEvent]]&lt;br /&gt;
  [[bz_eCaptureEvent]]&lt;br /&gt;
  [[bz_ePlayerDieEvent]]&lt;br /&gt;
  [[bz_ePlayerSpawnEvent]]&lt;br /&gt;
  [[bz_eZoneEntryEvent]]&lt;br /&gt;
  [[bz_eZoneExitEvent]]&lt;br /&gt;
  [[bz_ePlayerJoinEvent]]&lt;br /&gt;
  [[bz_ePlayerPartEvent]]&lt;br /&gt;
  [[bz_eRawChatMessageEvent]]&lt;br /&gt;
  [[bz_eFilteredChatMessageEvent]]&lt;br /&gt;
  [[bz_eUnknownSlashCommand]]&lt;br /&gt;
  [[bz_eGetPlayerSpawnPosEvent]]&lt;br /&gt;
  [[bz_eGetAutoTeamEvent]]&lt;br /&gt;
  [[bz_eAllowPlayer]]&lt;br /&gt;
  [[bz_eTickEvent]]&lt;br /&gt;
  [[bz_eGetWorldEvent]]&lt;br /&gt;
  [[bz_eGetPlayerInfoEvent]]&lt;br /&gt;
  [[bz_eAllowSpawn]]&lt;br /&gt;
  [[bz_eListServerUpdateEvent]]&lt;br /&gt;
  [[bz_eBanEvent]]&lt;br /&gt;
  [[bz_eHostBanEvent]]&lt;br /&gt;
  [[bz_eKickEvent]]&lt;br /&gt;
  [[bz_eKillEvent]]&lt;br /&gt;
  [[bz_ePlayerPausedEvent]]&lt;br /&gt;
  [[bz_eMessageFilteredEvent]]&lt;br /&gt;
  [[bz_eGameStartEvent]]&lt;br /&gt;
  [[bz_eGameEndEvent]]&lt;br /&gt;
  [[bz_eSlashCommandEvent]]&lt;br /&gt;
  [[bz_ePlayerAuthEvent]]&lt;br /&gt;
  [[bz_eServerMsgEvent]]&lt;br /&gt;
  [[bz_eShotFiredEvent]]&lt;br /&gt;
  [[bz_eAnointRabbitEvent]]&lt;br /&gt;
  [[bz_eNewRabbitEvent]]&lt;br /&gt;
  [[bz_eReloadEvent]]&lt;br /&gt;
  [[bz_ePlayerUpdateEvent]]&lt;br /&gt;
  [[bz_eNetDataSendEvent]]&lt;br /&gt;
  [[bz_eNetDataReceveEvent]]&lt;br /&gt;
  [[bz_eLoggingEvent]]&lt;br /&gt;
  [[bz_eFlagTransferredEvent]]&lt;br /&gt;
  [[bz_eFlagGrabbedEvent]]&lt;br /&gt;
  [[bz_eFlagDroppedEvent]]&lt;br /&gt;
  [[bz_eShotEndedEvent]]&lt;br /&gt;
  [[bz_eNewNonPlayerConnection]]&lt;br /&gt;
  [[bz_eIdleNewNonPlayerConnection]]&lt;br /&gt;
  [[bz_ePlayerCollision]]&lt;br /&gt;
  [[bz_eFlagResetEvent]]&lt;br /&gt;
  [[bz_eWorldFinalized]]&lt;br /&gt;
  [[bz_eAllowCTFCaptureEvent]]&lt;br /&gt;
  [[bz_eAllowFlagGrabEvent]]&lt;br /&gt;
  [[bz_eAllowKillCommandEvent]]&lt;br /&gt;
  [[bz_eReportFiledEvent]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There exists one additional event in the &#039;bz_eEventType&#039; enumeration in &#039;bzfsAPI.h&#039;, &#039;&#039;bz_eLastEvent&#039;&#039;. This event is simply used by BZFS to assist in the counting of the total number of events, it will never be called and can not be installed.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[BZFS API]]&lt;br /&gt;
&lt;br /&gt;
[[plug-ins]]&lt;br /&gt;
&lt;br /&gt;
[[Category:BZFS_API_Events]]&lt;/div&gt;</summary>
		<author><name>Catay</name></author>
	</entry>
</feed>