Keepaway is a standard plug-in that is shipped with the BZFlag Source code. The Keepaway plugin will create a game mode in which a player/team must hold a "Keep Away" flag (defined in map file) for a defined amount of time; if held long enough all other teams (or players) are killed.
- Server messaging for Keep Away flag is free (which one to hold), Keep Away flag held (by whom and how long they have to hold it), regular countdown warnings while someone is holding the Keep Away Flag (every minute and 30, 20 & 10 seconds until flag is held long enough), and successful Keep Away announcements. Long callsigns are truncated in server messages.
- Players cannot pause while holding Keep Away flag - if they try the flag will be taken away with a warning message not to do so.
- Keep Away will be disabled until there are 2 or more teams, 2 or more rogue players, or at least 1 rogue player and 1 or more team player(s).
- It is highly recommended to add exactly 1 flag to the map file for each type of flag that might be considered the Keep Away flag. Duplicate Keep Away flags has not been tested.
- There is an autotime function (optional) that will reduce the time to hold the Keep Away flag, based on the number of players in the game. With this option enabled, the time is reduced a certain percentage (default is 3%) with every additional player (after 2) to a certain minimum percentage (defaut is 50%) of the original specified time to hold. This means that (with default settings) the time to hold would not be affected for 2 players, but would be reduced by 3% for 3 players, 6% for 4 players and so on. The minimum 50% of the original time to hold would be reached at about 19 players and would remain at 50%, no matter how many additional players were to join after that.
- Local sounds for dropped Keep Away flag, team grab, successful Keep Away, etc. are incorporated into plugin. In general, these sounds correspond to standard CTF sounds.
- There is a "/kas <message>" command available to all players to send a message to person holding the Keep Away flag.
- There is a "/kaf" command available to all players that will return the current Keep Away flag to find.
There are 2 modes of play available:
- Teamplay: if a player from a team holds the Keep Away flag long enough, all other teams (except his/hers) are killed. Score credits are given to the team, but not given to player that kept the flag. If a rogue manages to hold the Keep Away flag long enough in this mode, all players (except him/her) are killed and he/she gets individual score credit for all of the kills.
- No teamplay: for this mode it is recommended to set up a map with only rogue players allowed. If a player holds the Keep Away flag long enough, all other players are killed and score credit is given to the player who held the Keep Away flag for all of the kills. Obviously, if teams are allowed in this mode, it would result in repeated team kills - no fun. Basically this is a free-for-all mode for Keep Away.
The parameters of the Keep Away (keepaway) map definition are follows:
Optional. This will enable the teamplay mode of Keep Away (see above). If not included, teamplay is disabled and it becomes as basic free for all Keep Away mode.
- holdtime <seconds>
Optional. This defines the time (in seconds) required to hold the Keep Away flag before a player is declared winner and other teams/players are zapped. If not included, the default setting is 120 seconds (2 minutes). The limits of this setting are controlled to a minimum of 1 second and a maximum of 7200 seconds.
- autotime <multiplier> <minimum multiplier>
Optional. This will enable the automatic time reduction feature of the plugin that will reduce the time to hold the Keep Away flag, based on the number of players in the game (see description above). The multiplier field will set the hold time reduction percentage per new player. The minimum multiplier field will set the minimum hold time reduction percentage. If these fields are left blank, the default multiplier = 3% and the default minimum multiplier = 50%. The multiplier fields should be between 1 and 99 (percent).
Optional. This will force sequential Keep Away flag selection based on flags defined in flag parameter (below). If a player is holding the next flag to be used as Keep Away flag, it is taken away from him/her with a message apologizing for the take ("Sorry, server needs your flag for Keep Away :/"). If this parameter is not included, the plugin will take away the winner's flag and search for the next available Keep Away flag that is not held. If it cannot find one, it will repeat the Keep Away flag that was just used.
- keepawayflags <flag type> <flag type> <flag type> <flag type> <flag type>...
Required. This will define which flags the plugin will cycle through as Keep Away flags. At least one is required. If no flags are defined, the plugin will be effectively disabled. Remember, the plugin has not been tested for duplicate flags on the map, so it is highly recommended to explicitly define only 1 flag per Keep Away flag type to be present on map.
Optional. This will disable sounds associated with Keep Away plugin(some clients seem to have issues with this feature).
Optional. This will disable automatic flag reset function of the Keep Away plugin (enabled as default).
Examples of map (.bzw) entries:
keepaway holdtime 90 autotime 2 40 keepawayflags SB G TH MG GM L forcedflags teamplay noflagreset end
This would set up a Keep Away game using Super Bullet, Genocide, Thief, Machine Gun, Guided Missile and Laser flags for Keep Away flags. Teamplay would be enabled and the initial required time to hold the Keep Away flag would be 90 seconds (1.5 minutes). Time to hold would automatically adjust downward with new players; 2% per new player after 2, to a minimum of 40% of the original time to hold (36 seconds). The automatic flag reset function of the plugin would be disabled.
keepaway holdtime 60 keepawayflags IB PZ US RO teamplay nosound end
This would set up a Keep Away game using Invisible Bullet, Phantom Zone, Useless and Reverse Only flags for Keep Away flags. Teamplay would be enabled and the initial required time to hold the Keep Away flag would be 60 seconds (1 minute). Time to hold would not automatically adjust downward with new players - it would remain at 60 seconds. The sounds associated with Keep Away would be disabled.
Obviously, the plugin must be loaded to the server at startup, or it will not recoginize these map parameters.
There are two commands available to all players with the plugin:
/kas <message> - this will send message to the player holding the Keep Away flag. /kaf - this will return the current Keep Away flag to be found & who holds it.
There are several administrator commands available with the plugin:
/kaon - this will turn Keep Away mode on, if turned off previously. /kaoff - this will turn Keep Away mode off for normal gameplay. /katimemult - this will set auto time multiplier (per new player). /katimemultmin - this will set minimum auto time multiplier. /kaautotimeon - this will enable the autotime function. /kaautotimeoff - this will disable the autotime funtion. /katime <seconds> - this will change Keep Away hold time 1 -> 7200 seconds. /kastatus - this will return the status of the plugin modes, times, etc. /kaffon - this will turn on forced flags. /kaffoff - this will turn off forced flags. /kaf+ - advance to next Keep Away flag. /kasoundon - enables Keep Away sounds. /kasoundoff - disables Keep Away sounds. /kaflagreseton - enables Keep Away sounds. /kaflagresetoff - disables Keep Away sounds.
- http://my.bzflag.org/bb/viewtopic.php?f=79&t=10066&p=100833#p100833 Keepaway plugin page.