Difference between revisions of "Plug-ins"

From BZFlagWiki
Jump to: navigation, search
m
(Standard plug-ins: update the list)
Line 22: Line 22:
 
These plug-ins are located in the ''/plugins'' directory.
 
These plug-ins are located in the ''/plugins'' directory.
  
As of February 18th 2007, [[BZFlag SVN|SVN]] TRUNK( version [[BZFlag 3.0|2.99]]) contains the following plug-ins:
+
As of August 2009, [[BZFlag SVN|SVN]] TRUNK( version [[BZFlag 3.0|2.99]]) contains the following plug-ins:
  
 
*[[airspawn]]
 
*[[airspawn]]
 
*[[bzfscron]]
 
*[[bzfscron]]
 
*[[chathistory]]
 
*[[chathistory]]
 +
*[[chatlog]]
 +
*[[customflagsample]]
 +
*[[fastmap]]
 
*[[flagStay]]
 
*[[flagStay]]
 
*[[hiddenAdmin]]
 
*[[hiddenAdmin]]
 
*[[HoldTheFlag]]
 
*[[HoldTheFlag]]
 +
*[[HTTPServer]]
 +
*[[httpTest]]
 
*[[keepaway]]
 
*[[keepaway]]
 
*[[killall]]
 
*[[killall]]
 
*[[koth]]
 
*[[koth]]
 
*[[logDetail]]
 
*[[logDetail]]
 +
*[[mapchange]]
 
*[[nagware]]
 
*[[nagware]]
*[[playHistoryTracker]]
 
 
*[[Phoenix]]
 
*[[Phoenix]]
 +
*[[playHistoryTracker]]
 
*[[python(plug-in)|python]]
 
*[[python(plug-in)|python]]
 +
*[[rabidRabbit]]
 
*[[recordmatch]]
 
*[[recordmatch]]
 +
*[[regFlag]]
 
*[[RogueGenocide]]
 
*[[RogueGenocide]]
 
*[[SAMPLE_PLUGIN]]
 
*[[SAMPLE_PLUGIN]]
 +
*[[serverControl]]
 
*[[serverSideBotSample]]
 
*[[serverSideBotSample]]
 
*[[shockwaveDeath]]
 
*[[shockwaveDeath]]
Line 48: Line 57:
 
*[[timedctf]]
 
*[[timedctf]]
 
*[[torBlock]]
 
*[[torBlock]]
 +
*[[unrealCTF]]
 
*[[weaponArena]]
 
*[[weaponArena]]
 +
*[[webadmin]]
 +
*[[webReport]]
 +
*[[webstats]]
 
*[[wwzones]]
 
*[[wwzones]]
  

Revision as of 22:11, 5 September 2009

BZFS can be built to support the loading of external libraries as plug-ins. These plug-ins can alter or replace the logic applied by the server, as well as automate many common tasks.

Plug-ins are a simpler way to apply modifications to the game, as they do not require the server owner to modify or recompile his/her BZFS application. By using the BZFS API plug-ins are also able to be mixed and matched in an easy way.

Overview

Plug-ins are compile dynamic link libraries, that are built for the same OS/RuntimeEnvironment as the BZFS server that hosts them. On Microsoft Windows they are built as DLL files. On Linux and other Unix-like systems they are built as .so files.

Use

Plug-ins are loaded at startup by the -loadplugin option, or at run time with the /loadplugin command. If the full path to the plug-in is not specified, then BZFS will search a number of known sub directories for the plug-in as it attempts to load it. Using a valid path to the plug-in on load is highly recommended. While playing, all plug-ins loaded onto the server are visible with the /listplugins command.

Parameters

Some plug-ins take parameters that are passed to the plug-in on load. This is often a numeric value, or a path to a file. To pass a parameter to a plug-in, simply add a ',' after the plug-in name or path, and then add the parameter. Parameters can not have spaces, due to the way BZFS parses command line options and / commands.

On load, plug-ins install a number of callbacks and event handlers with the hosting BZFS that are called when specific events happen. This allows the plug-in to perform additional actions on these events, or if need be, alter the results of the default logic of the server.

Search Paths

BZFS searches for plug-ins in two standard locations: the config directory and the global plug-ins directory. The config directory is where the BZFlag config.cfg file is located, and the global plug-ins directory is $(prefix)/lib/bzflag/.

BZFS API

All plug-ins are linked to the BZFS API. This programing layer provides the interface to the BZFS application. All events and functions that a plug-in can call are in the BZFS API.

Standard plug-ins

The BZFlag Source distribution contains a number of plug-ins that are maintained by the project developers. These plug-ins are located in the /plugins directory.

As of August 2009, SVN TRUNK( version 2.99) contains the following plug-ins:

Third Party Plug-ins

A number of non-developers have created plug-ins for BZFS, and usually release them on the BZFlag Forums.

Plug-in Development

Plywood hammer100x101.gif There is still documentation to be done here!! If you feel up to the task, please have a go at it. Specifically what needs to be added is:
Describe the basics of plug-in development.