Hack 46 Use PPF for Gaming Clans


Extend the IRC bot PPF with plug-ins to support these communities and
provide various game-related tools. PPF is a great tool for gamers using IRC,
especially for clans. It has plug-ins for querying some online game
systems, game servers, searching, and even for customizing your own
triggers. This hack shows you how to go about configuring and using
PPF from a clan's perspective. PPF stands for
PircBot Plug-in Frameworkit is an IRC bot based on the PircBot
framework and uses plug-ins to facilitate easy addition of features.
7.4.1 Get PPF
PPF can be downloaded from http://www.deaded.com. It is available in two
versions:A version containing just the bot, which is recommended if you
already have Java installed.A version containing the bot and the Java Runtime Environment. This
allows you to use a single installer to set up Java and PPF.
After PPF is installed, the directory will look similar to Figure 7-2.
Figure 7-2. A complete installation of PPF

configuration files. The plugins directory
contains subdirectories relevant to each plug-in that is installed.
The default plug-ins are shown in Figure 7-3.
Figure 7-3. Default plug-ins supplied with PPF

relevant subdirectory and be named
<plugin_name>Config.xml-e.g., the
Say plug-in will have a config file called
SayConfig.xml.
7.4.2 PPF Core
The core is
where the main IRC configuration, bot info, and plug-ins are managed.
The bot alone is pretty uselessadding the plug-ins creates the
functionality of the bot. Plug-ins can be loaded, configured and
reloaded, or unloaded even while PPF is running.The main config file is
PPFConfig.xml and is stored in the root of the
PPF installation. Let's quickly go over some of the
settings to get you started.Auth
levels are used to control access to the bot's
commands. There are currently three levels:
bot
owner, bot master, and trusted. The owner can do things like manage
the plug-ins, move the bot to other channels, change its name, or
even kill the bot. Each plug-in allows the use of certain commands,
and each plug-in gets to control which auth level is needed for
these. The password for each auth level is set in
adminPassword, masterPassword,
and trustedPassword.The servers, nicks, and
channels sections are for telling the bot which
server you want it to connect to, what nickname it should have, and
what channels to join when it starts up.One setting to take care with is the
messageDelay setting. This defines how fast
the bot will send messages to the IRC server. If it sends messages
too rapidly, it will get kicked for flooding. Different networks have
different tolerances, so you may have to play with that a little.onJoinMessage is what the bot sends as a notice to
anyone who joins the channel. By default, it will send a message
telling people what the help command is. As a clan, you may want to
give some useful clan information first and then say what the rest of
the help is afterward.Some of the core commands can be
configured; for example, many other bots have
!help as their help command, so you can change
the PPF help command to something else if you want.Finally, there is the plugins section. This is
where the plug-ins that will be available to
the bot are configured. The plug-ins can be configured here, and you
can decide if you want them loaded at startup or not. Later on, if a
new plug-in is made available, this is where the configuration is
added, and then you will be able to load it.
7.4.3 Running PPF
PPF is
written in Java, so it can be run on
any system that has a Java Runtime available.Once you have configured your bot, you are ready to run it:
C:\java\PPF> set CLASSPATH=%CLASSPATH%;.;PPF.jar;lib\pircbot.jar;lib\jaxen-\Alternatively, Windows users can run the supplied
core.jar;lib\jaxen-jdom.jar;lib\jdom.jar;lib\saxpath.jar;lib\xerces.jar
C:\java\PPF> java net.sourceforge.ppf.PPF
run.bat file.As soon as the bot is up and running, you can auth with it through
your IRC client (assuming the bot is called PPF):
/msg PPF auth adminPassword
7.4.4 ChannelCentral
This plug-in gives some control or
information about the channels that the bot is in. The configuration
is stored in the file ChannelCentralConfig.xml.Basic channel commands such as voice and op are available to someone
with the correct auth level. This plug-in also allows topic showing
and setting, channel stats, and the possibility to auto voice or op
people based upon their auth level with the bot.This plug-in also tracks statistics in a
LiveStats.xml file, which contains current
information about the channel. You could then do some simple XML
parsing to create a web page that shows live information about the
channel.
7.4.5 TriggerMessage
This plug-in lets the bot respond to things
that are said in a channel. You can change settings for this plug-in
in TriggerMessageConfig.xml.Perhaps you would like people to know about the homepage, servers, or
members in your clan? A trigger for the homepage could be
!www. When this is typed in the channel, you could
get the bot to respond with something like this:
<PPF> Homepage for Clan KsR is http://www.clan-ksr.comTo manage the triggers, you must auth with the bot as a trusted (or
more powerful) user and type into the channel:
<Paul> !at "!www" "Homepage for Clan KsR is http://www.clan-ksr.com"You may also want to tell everyone the IP address and port numbers of
your servers. This is one way of doing it:
<Paul> !at "!server" "KsR BF server: 213.253.57.28:14567:23000As you can see, you can have triggers for whatever you like and even
:: Type !qf for status"
<Paul> !at "!ip" "KsR BF server: 213.253.57.28:14567:23000
:: Type !qf for status"
make different triggers for showing the same info to make it easier
to use. Users can get the IP address by saying either
!server or !ip. The
!qf command will be covered in the ServerQuery
plug-in section later in this hack.You can set up a trigger to announce the members of the clan:
<Paul> !at "!members" "Plexor, Mad_Bear, Saint, Deady, Buscape,Now that there are some triggers, the list can be seen by sending a
Deadly Style, TaN, Mark Gor, Qball, Blackhawk, Lostworld, Godfather,
Sicillian, Aggressor, Sisu, DeadEd, Heavens Gate, Sgt.Mac, Goateh, Sidewinder, Seeker"
private message to the bot:
/msg PPF !stThe bot will request a DCC chat session with you and then send the
list of the triggers and the responses. Each trigger can then be
removed using the !rt command in the
channel:
<Paul> !rt !serverThis will result in the !server trigger being
removed. The bot will no longer respond to that command.Finally, a new trigger can be made to tell users how to get info
about your clan:
<Paul> !at "!claninfo" "Commands are: !www - !ip - !members - !help"The onJoinMessage in the main configuration file
(PPFConfig.xml) could now be changed to
"Welcome to Clan KsR". Type
!claninfo for help. Users entering the channel will
then receive the message telling them what commands are available to
get further information.
7.4.6 ServerQuery
With this plug-in, you can currently query
Half-Life and Battlefield 1942-based servers for basic server and
player information. You can also manage a list of shortcuts so that
you don't need to remember IP addresses and port
numbers. The commands and output styles can be configured by editing
ServerQueryConfig.xml.Add the IP address of your clan server as a
defaultServers in the configuration file. Default
servers can be queried by just typing
!qf, which returns the server details and
scores
("frags").
By adding the Battlefield 1942 server 213.253.57.28 (with default
query port of 23000), typing !qf would show
something like this:
<Paul> !qfTo query a different server, you can specify the IP address and port
<PPF> -=Kingsize Rizla=- [KsR] :: IP: 213.253.57.28:14567 :: BF1942 :: Map:
stalingrad :: Players: 3/32 [LK]Fubar [12,10,6], [KsR]DeadEd [10/2/3],
Jibbler [2/2/2]
number after the !qf command. To see only
"frag" information, you can type
!f. To just query the server details, you can
use the !q command:
<Paul> !q 194.29.194.31:27015This can be made easier by adding a shortcut (shortcut management
<PPF> The Gory Grave of -GG- :: IP: 194.29.194.31:27015 :: Counter-Strike ::
Map:de_inferno :: Players: 1/15
requires trusted or higher auth level):
!sc gg 194.29.194.31 27015This now means that you can use gg when querying:
<Paul> !q ggA list of the shortcuts can be seen by sending a private message to
<PPF> The Gory Grave of -GG- :: IP: 194.29.194.31:27015 :: Counter-Strike ::
Map:de_inferno :: Players: 1/15
the bot:
/msg PPF !sscThe bot will then request a DCC chat session with you and send the
list of shortcuts, with the IP address and port number for each one.
The shortcuts can then be removed with the
!rsc command:
<Paul> !rsc gg
7.4.7 ServerAdminShouter
With this
plug-in, you can monitor game servers for
certain names or for large negative scores and receive alerts via
private messages on IRC. It can be configured by editing the file
ServerAdminShouterConfig.xml. You can currently
monitor Half-Life and Battlefield 1942 servers with this plug-in.You can become one of the people who gets notified in two ways. One
is to have your nickname listed in the admins
section of the configuration file. The other is to auth and then give
the "on duty" command. The default
for this is !onDuty.Add the servers that you want to monitor to
the servers section in the configuration file. Set
the checkTimer to the interval, in seconds, that
you want the bot to check for the names or score that you set in the
triggers section. If there is a
problem on a game server and there isn't an
administrator around to fix it at the time, players will often change
their name to something that indicates the need for an
administrator, in the hope that someone will
see it in the log file or game browser. Names such as
adminneeded could be added as triggers, and then a
server message or message of the day (MOTD) can be added to the
server, telling people how to grab the attention of an administrator.Now, when someone in the server changes her name to
adminneeded or a score goes below the allowed
limit, administrators will receive a private message telling them
which server help is needed on.
7.4.8 CBFinder
This
plug-in lets you find out information
about a clan from the ClanBase system (http://www.clanbase.com). This can be
configured by editing CBFinderConfig.xml.Querying the ClanBase system can reveal details such as a
clan's ladder ranking, what ladders they are in, the
last five wars they played, whom the wars were against, on which map
they played, and what the scores were. To search ClanBase for the
Battlefield 1942 clan KsR, you would type the following:
<Paul> !cb BF KsRIf the bot can find the requested information, it will generate a
quite lengthy reply:
<PPF> Clan Information:It can take some time for the bot to output everything due to the
<PPF> Name: Kingsize Rizla *
<PPF> Tag: [KsR]
<PPF> CB Home: http://www.clanbase.com/claninfo.php?cid=75433
<PPF> Ladder Information:
<PPF> Name: Battlefield1942 Conquest (Europe)
<PPF> Rank: 28 :: Points: 1,206
<PPF> Match Information (last 5 played):
<PPF> Date, Opponent, Maps, Clan score, Opponent score
<PPF> 19 Feb, reborn, stalinggrad/wake island, 126, 407
<PPF> 11 Feb, DW, stalinggrad/berlin, 288, 40
<PPF> 4 Jan, BFD, stalinggrad/el alamein, 258, 254
<PPF> 14 Dec \ 03, DerQ, stalinggrad/el alamein, 130, 262
<PPF> 7 Dec \ 03, FTA, stalinggrad/wake island, 349, 218
<PPF>
<PPF> Name: Battlefield1942 Battlefield 1942 Conquest Cup
<PPF> Rank: N/A :: Points: N/A
<PPF> Match Information (last 0 played):
<PPF> No match information available
<PPF>
<PPF> Name: Battlefield1942 Battlefield 1942 Conquest Cup
<PPF> Rank: N/A :: Points: N/A
<PPF> Match Information (last 5 played):
<PPF> Date, Opponent, Maps, Clan score, Opponent score
<PPF> 26 Nov \ 03, PIRATAS, stalingrad/operation battl, 403, 472
<PPF> 17 Nov \ 03, IP, el alamein/kursk, 940, 222
<PPF> 29 Oct \ 03, wb, operation marke/, 662, 74
<PPF> 26 Oct \ 03, SSS, operation aberd/, 539, 0
<PPF> 15 Oct \ 03, BuD, iwo jima/, 433, 501
flood protection features, so there is also a DCC chat version
available. This allows you to create a connection directly to the
bot, letting it send the data as fast as it can:
!cbdcc BF KsRYour own clan details can be added to the default
settings so that you only need to type !cb.
7.4.9 BFTracks
This plug-in lets you find information about players who are being
tracked with the BFTracks system (http://www.bftracks.net). You can get static
information about players, or even live information showing
where they are playing. The commands, output of the commands, and
number of lines returned can be configured by editing
BFTracksConfig.xml.To request information about a player (with the results being sent to
the channel), you can use the !bf command,
followed by the name:
<Paul> !bf deadedInformation about a clan yields a
<PPF> [KsR]DeadEd :: [4535](620 points) ::
http://bftracks.net/appl/bft/Player/view/742845
longer set of results, so these are sent to you via private messages:
<Paul> !bfclanlist [KsR]You can get live information about players with the
<PPF> [KsR]Heavens :: [767](837 points) ::
http://bftracks.net/appl/bft/Player/view/943822
<PPF> [KsR]Sidewinder :: [-](799 points) ::
http://bftracks.net/appl/bft/Player/view/1694267
<PPF> [KsR]Mark Gor :: [1289](776 points) ::
http://bftracks.net/appl/bft/Player/view/104324
<PPF> [KsR]**Sgt.Mac** :: [2626](687 points) ::
http://bftracks.net/appl/bft/Player/view/1497664
<PPF> [KsR]Qball :: [3514](653 points) ::
http://bftracks.net/appl/bft/Player/view/103982
...
<PPF> [KsR]Seeker :: [-](378 points) ::
http://bftracks.net/appl/bft/Player/view/1698625
<PPF> [KsR]Buscape[AWOL] :: [-](294 points) ::
http://bftracks.net/appl/bft/Player/view/1764651
!bflive command:
<Paul> !bflive [KsR]
<PPF> [KsR]Heavens[7/5/4] :: Server: EAUK 04 - Western Front IP:
159.153.178.75:14567:: Map: bocage
<PPF> [KsR]TaN[5/5/2] :: Server: EAUK 04 - Western Front IP:
159.153.178.75:14567:: Map: bocage
7.4.10 EDFinder
This plug-in lets you find out information about a
clan from the
Enemy Down system (http://www.enemydown.co.uk).This !ed command gives you some basic
information about a clan and a link into the system:
<Paul> !ed roffsOnce again, it can take some time to output everything due to the
<PPF> Clan Information:
<PPF> Name: -=ROFFS=-
<PPF> Tag: ROFFS
<PPF> ED Home: http://www.enemydown.co.uk/clan.php?id=137
<PPF> Website: www.roffs.co.uk
<PPF> IRC Channel: #roffs
<PPF> Server IP: 195.20.108.172:27015
flood protection, so a DCC chat
version!eddccis also available.
7.4.11 Google
Everyone loves Google. Just type
!google and some search phrase and the top
result will be given as a link to the channel:
<Paul> !google PPF bot framework
<PPF> [PPF bot framework] http://www.deaded.com/ (DeadEd.com - PPF (Pircbot
Plugin Framework) and MatchEd IRC Bot ...)
7.4.12 Other Plug-ins
Several other plug-ins are available for PPF. New and existing
plug-ins are being constantly developed. Some of the other plug-ins
are: Advertiser, BadWords, EightBall, MySQLQuery, Say, Seen,
ServerAuth, and Translate1337. Alex North