This wiki was in read-only mode for many years, but can now be edited again. A lot of information will need to be updated.

Events (API): Difference between revisions

From BZFlagWiki
Jump to navigation Jump to search
Allejo (talk | contribs)
m Add new poll events
Zehra (talk | contribs)
redirect to BZFS API Events for streamlining content
Tag: New redirect
 
Line 1: Line 1:
{{BZFS_API_Doc|keeptitle=1}}
#REDIRECT [[BZFS API Events]]
==Overview==
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.
 
==Installation and Removal==
The callbacks for events are typically installed during the [[bz_Load]] (2.0.x) or [[Init]] (2.4+) entry point in a plug-in, so they can be active when a plug-in is first loaded.
 
The plug-in must call the function;
 
2.0.x
BZF_API bool [[bz_registerEvent]] ( bz_eEventType eventType, [[bz_EventHandler]]* eventHandler );
 
2.4+
Register ( bz_eEventType );
 
The plug-in registers and event callback derived from [[bz_EventHandler]] (2.0.x) or [[bz_Plugin]] (2.4+) for each specific event types it wishes to monitor.
 
When a plug-in no longer needs to monitor an event, or when it is unloaded in the [[bz_Unload]] (2.0.x) or [[Cleanup]] (2.4+) entry point, the plug-in must remove the installed callback by calling the function;
 
2.0.x
BZF_API bool [[bz_removeEvent]] ( bz_eEventType eventType, [[bz_EventHandler]]* eventHandler );
 
2.4+
Flush();
 
In BZFlag 2.4, events are no longer removed individually but instead they are all removed automatically by calling on the 'Flush()' method.
 
==Event Handler==
The plug-in must define a class that is derived from [[bz_EventHandler]] (2.0.x) or [[bz_Plugin]] (2.4+) and pass a pointer to an object of that class when ever it registers an event callback.
 
When ever a specific event is triggered, BZFS will call the 'process' (2.0.x) or 'Event' (2.4+) method of the installed callback class.
 
2.0.x
  virtual void process ( bz_EventData *eventData ) = 0;
 
2.4+
  virtual void Event ( bz_EventData *eventData ) = 0;
 
==Event Data==
With each call to the 'process' 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;
  bz_eEventType eventType;
This data member allows a plug-in to identify the specific event and cast the 'bz_EventData' pointer to the appropriate specific data class. This is usefull for plug-ins that use the same 'bz_EventHandler' to process more then one specific message.
 
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.
 
Plug-ins should never delete or free the memory for a data class. BZFS will manage all pointers passed to plug-ins.
 
==Events==
The following list contains all the event types currently supported by BZFS version 2.99
 
  [[bz_eAllowAutoPilotChangeEvent]]
  [[bz_eAllowCTFCaptureEvent]]
  [[bz_eAllowFlagGrabEvent]]
  [[bz_eAllowKillCommandEvent]]
  [[bz_eAllowPlayer]]
  [[bz_eAllowSpawn]]
  [[bz_eAnointRabbitEvent]]
  [[bz_eAutoPilotChangeEvent]]
  [[bz_eBZDBChange]]
  [[bz_eBanEvent]]
  [[bz_eCaptureEvent]]
  [[bz_eFilteredChatMessageEvent]]
  [[bz_eFlagDroppedEvent]]
  [[bz_eFlagGrabbedEvent]]
  [[bz_eFlagResetEvent]]
  [[bz_eFlagTransferredEvent]]
  [[bz_eGameStartEvent]]
  [[bz_eGameStartEvent|bz_eGameEndEvent]]
  [[bz_eGetAutoTeamEvent]]
  [[bz_eGetPlayerInfoEvent]]
  [[bz_eGetPlayerSpawnPosEvent]]
  [[bz_eGetWorldEvent]]
  [[bz_eHostBanModifyEvent]]
  [[bz_eHostBanNotifyEvent]]
  [[bz_eIdBanEvent]]
  [[bz_eIdleNewNonPlayerConnection]]
  [[bz_eKickEvent]]
  [[bz_eKillEvent]]
  [[bz_eListServerUpdateEvent]]
  [[bz_eLogingEvent]]
  [[bz_eLuaDataEvent]]
  [[bz_eMessageFilteredEvent]]
  [[bz_eNetDataReceiveEvent]]
  [[bz_eNetDataSendEvent]]
  [[bz_eNewNonPlayerConnection]]
  [[bz_eNewRabbitEvent]]
  [[bz_eNullEvent]]
  [[bz_ePlayerAuthEvent]]
  [[bz_ePlayerCollision]]
  [[bz_ePlayerCustomDataChanged]]
  [[bz_ePlayerDieEvent]]
  [[bz_ePlayerJoinEvent]]
  [[bz_ePlayerPartEvent]]
  [[bz_ePlayerPauseRequestEvent]]
  [[bz_ePlayerPausedEvent]]
  [[bz_ePlayerSentCustomData]]
  [[bz_ePlayerSpawnEvent]]
  [[bz_ePlayerTeamChangeEvent]]
  [[bz_ePlayerUpdateDoneEvent]]
  [[bz_ePlayerUpdateEvent]]
  [[bz_eRawChatMessageEvent]]
  [[bz_eReloadEvent]]
  [[bz_eReportFiledEvent]]
  [[bz_eServerMsgEvent]]
  [[bz_eShotEndedEvent]]
  [[bz_eShotExpiredEvent]]
  [[bz_eShotFiredEvent]]
  [[bz_eShotRicochetEvent]]
  [[bz_eShotStoppedEvent]]
  [[bz_eShotTeleportEvent]]
  [[bz_eSlashCommandEvent]]
  [[bz_eTeleportEvent]]
  [[bz_eTickEvent]]
  [[bz_eUnknownSlashCommand]]
  [[bz_eWorldFinalized]]
  [[bz_eZoneEntryEvent]]
  [[bz_eZoneExitEvent]]
 
The following list contains all the event types currently supported by BZFS version 2.4
  [[bz_eAllowCTFCaptureEvent]]
  [[bz_eAllowFlagGrab]]
  [[bz_eAllowPlayer]]
  [[bz_eAllowPollEvent]]
  [[bz_eAllowSpawn]]
  [[bz_eBanEvent]]
  [[bz_eBZDBChange]]
  [[bz_eCaptureEvent]]
  [[bz_eFilteredChatMessageEvent]]
  [[bz_eFlagDroppedEvent]]
  [[bz_eFlagGrabbedEvent]]
  [[bz_eFlagTransferredEvent]]
  [[bz_eGameEndEvent]]
  [[bz_eGamePauseEvent]]
  [[bz_eGameResumeEvent]]
  [[bz_eGameStartEvent]]
  [[bz_eGetAutoTeamEvent]]
  [[bz_eGetPlayerInfoEvent]]
  [[bz_eGetPlayerMotto]]
  [[bz_eGetPlayerSpawnPosEvent]]
  [[bz_eGetWorldEvent]]
  [[bz_eHostBanModifyEvent]]
  [[bz_eKickEvent]]
  [[bz_eKillEvent]]
  [[bz_eListServerUpdateEvent]]
  [[bz_eLoggingEvent]]
  [[bz_eMsgDebugEvent]]
  [[bz_eMessageFilteredEvent]]
  [[bz_eNetDataReceiveEvent]]
  [[bz_eNetDataSendEvent]]
  [[bz_eNewNonPlayerConnection]]
  [[bz_ePlayerAuthEvent]]
  [[bz_ePlayerDieEvent]]
  [[bz_ePlayerJoinEvent]]
  [[bz_ePlayerPartEvent]]
  [[bz_ePlayerPausedEvent]]
  [[bz_ePlayerScoreChanged]]
  [[bz_ePlayerSpawnEvent]]
  [[bz_ePlayerUpdateEvent]]
  [[bz_ePluginLoaded]]
  [[bz_ePluginUnloaded]]
  [[bz_ePollStartEvent]]
  [[bz_ePollVoteEvent]]
  [[bz_ePollVetoEvent]]
  [[bz_ePollEndEvent]]
  [[bz_eRawChatMessageEvent]]
  [[bz_eReportFiledEvent]]
  [[bz_eServerMsgEvent]]
  [[bz_eShotEndedEvent]]
  [[bz_eShotFiredEvent]]
  [[bz_eSlashCommandEvent]]
  [[bz_eTeamScoreChanged]]
  [[bz_eTickEvent]]
  [[bz_eUnknownSlashCommand]]
  [[bz_eWorldFinalized]]
  [[bz_eZoneEntryEvent]]
  [[bz_eZoneExitEvent]]
 
There exists one additional event in the 'bz_eEventType' enumeration in 'bzfsAPI.h', ''bz_eLastEvent''. 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.
 
== See also ==
* [[BZFS API]]
* [[Functions(API)|BZFS API Functions]]
* [[Plug-ins]]
 
[[Category:BZFS_API_Functions]]

Latest revision as of 22:03, 9 November 2025

Redirect to: