Conread.ini Configuration
By Richard Maxwell
21/12/1997

This is a help file for editing your own conread.ini files using DM.ini as an example

Sample INI file 


# Quake qconsole.log Filter
# By Richard Maxwell
# December  12th 1997
# ----------------------
# email:
# Richard <maxwells@ihug.co.nz>
# ----------------------
# .ini file
# this file contains all the strings the filter uses to
# filter the qconsole.log file.
# if you get stupid names/results its most probably
# an error in the INI file.

# ---------------flags--------------
# bit 1 (1)   - skip repeated transmit messages
# bit 2 (2)   - print out a leftover file
# bit 3 (4)   - print out any talking going on
# bit 4 (8)   - print out the weapon kill tables
# bit 5 (16)  - print out the total kill table.
# bit 6 (32)  - print out/use special filters.
# bit 7 (64)  - print out Awards.
# bit 8 (128) - Print out ranking tables (must also have bit 5(16) enabled).
# bit 9 (256) - Update Player Database.
# bit 10(512) - Use showline filters

flags=89

# -----------weapons----------

****weapons

# that line tells the filter to begin reading the weapon names
# and don't forget to include the telefrag as the last weapon.
# also weapons and all **** titles must be in LOWER case.

-----Axe
-----Grappling Hook
-----Shotgun
-----Super Shotgun
-----Nailgun
-----Super nail gun
-----Grenade launcher
-----Rocket launcher
-----Lightning gun
-----Telefrag
-----Squish
-----Teammate kill

*****

# ^^-we need that line to tell the filter to stop reading entries.
# there are 5 stars there.



# ---------- suicides ----------

# each suicide is seperated into the weapon class that caused it
# with general suicides classed after all the weapons
# e.g. if there are 9 weapons (8 normal + telefrag 'weapon')
# then general suicides are classed under weapon 10.

****sucs

# (I can't spell. I spelt sucides as suicides. hence sucs not suics :)


# axe
-----
# CTF Grappling hook
-----
# shotgun
-----
# ssgun
-----
# nail gun
-----
# snail gun
-----
# grenade launcher
 tries to put the pin back in
-----
# Rocket launcher
 becomes bored with life
-----
# lightning gun
 discharges into the water.
 electrocutes himself.
 discharges into the slime
 discharges into the lava
-----
# telefrag
-----
# squish!
-----
# teammate kill
 mows down a teammate
 checks his glasses
 gets a frag for the other team
 loses another friend
-----
# general suicides
 sleeps with the fishes
 sucks it down
 gulped a load of slime
 can't exist on slime alone
 burst into flames
 turned into hot slag
 visits the Volcano God
 blew up
 was squished
 fell to his death
 was spiked
 was zapped
 ate a lavaball
 tried to leave
 suicides
 died

*****

# ---------deaths----------
#
# weapons have 2 strings per filter
# the first string is the string that appears between the names
# the second filter is the one that appears after the last name
# for example
# jim kills joe
# jim chewed on joe's boomstick
# the 2 strings would be:
# " chewed on "
# "'s boomstick"
# if there is no end string then just put "" instead.

# remember to quote everything that appears after the players name
# INCLUDING spaces.

****deaths

# axe
" was ax-murdered by " 
""
-----
# grappling hook
" was hooked by "
""
" was disembowled by "
""
-----
# shotgun
" chewed on "
"'s boomstick"
-----
# ssgun
" ate 2 loads of "
"'s buckshot"
" ate a box of "
"'s buckshot"
-----
# nailgun
" was nailed by "
""
-----
# snailgun
" was punctured by "
""
-----
# grenade launcher

" eats "
"'s pineapple"
" was gibbed by "
"'s grenade"
-----
# rocket launcher

" rides "
"'s rocket"
" was gibbed by "
"'s rocket"
" was destroyed by "
"'s Quad rocket"
" was brutalized by "
"'s quad rocket
" was smeared by ";
"'s quad rocket
"REVERSE rips "
" a new one"

-----
# lightning gun
" accepts "
"'s discharge"
" accepts " 
"'s shaft"
" was touched by "
"'s Quad lightning"
-----
# good ol' telefrag
" was telefragged by "
""
" was telefragged by "
"'s Satan's power"
-----
# the squish!
" squishes "
""
-----

*****

# ------------Special Filters-------------

# These events are going to be read in order of importance.
# i.e. what is read first is filtered first and is displayed first.
# p.s. don't forget to enable special filters in the flag option above


****special

-----Quad losses
" lost a quad with "

-----Octa losses
" lost an OctaPower with "

-----Invis losses
" lost a ring with "

*****

# ------------Showline filters------------

# any text containing these strings will be show in the html
# assuming you have bit 10 set (512) and that the text has not already been filtered

****showline

" left the game with "

*****
# -----------HTML body tag---------------

# For html know-alls only, this is what conread uses as its body tag
# For each page. Edit if you want.

****bodytag

"<BODY TEXT=#C0C0C0 BGCOLOR=#000000 LINK=#8080FF VLINK=#0000FF ALINK=#FF0000>"

*****


(#) comments
Any line beginning with the # symbol is ignored by conread. However you MUST NOT have "," anywhere on that line as the filter is stupid and will screw up if it finds a comma.


(flags) Flag Variable
This variable is used to tell conread.exe how to filter the stats, use this javascript form to figure out the number for the stuff that you want to do.

Print out leftover file
This will create a file called XXXXXout.txt where XXXXX is the first five characters of your logfile's name. (eg freddy.log will make freddout.txt). This file contains all the text that conread did not recognize. Its good to see if the filter is picking up everything you want it to
Print out speech
This will show in the HTM any speech that is going on for each level
Skip repeated Transmit messages
This will make it so any repeated speech show will only be shown once. E.G. someone using a macro saying "fred" 20 times will only have the filter displaying "fred" once.
Print out weapon kill tables
This will tell the filter to make a frag table for each weapon used. weapons where there were no kills will not be shown
Print out total kill tables
This will tell the filter to make a total frag table.
Print out Ranking tables
If this is enabled then player rankings will be listed. With best to worse in the following categories:
Rank (kills - deaths)
Efficiency (kills/kills+deaths)
Kills
Deaths
Good to see who came second as the awards do not give you this information.
This doesn't give weapon or special stat rankings, only overall player rankings.
This also needs to have bit 5 set (overall kills table) for it to get its stats.
Print out special filter tables
This will tell the filter to make tables for the special filters (duh)
Print out awards
This is the fun bit. This prints out all the people who are the best of everything
If total kills are enabled then it will give you
1) Best rank (rank=kills-deaths)
2) worst rank
3) most efficient (kills/(kills+deaths))
4) most kills
5) least kills
6) least deaths
7) most deaths
8) most suicides
If weapon tables are enabled then is will give you for each weapon
1) most kills
2) most deaths
3) most suicides
4) most efficient
If any of these values are 0 then they wont be printed.
If special filters are enabled then the filter will give awards to the person with the highest score per filter.
Update player database
With this set the program will add all the players found in the log file to a overall statistics database, which enables Quake World like statistics to be generated (using statmake.exe)
Skill:
As the .log file is sequential, conread.exe can keep a skill rating which is calculated:
killer skill = killer skill + (killee skill/200)
killee skill = killee skill - (killee skill/200)
if killee skill<1000 then kilee skill=1000
The way it works is that if you don't get killed and kill high skilled people your skill will be high. If you kill lots of newbies then your skill wont be as high because you get less points for less skilled players. This database called players.dat will appear under the directory "plrdata"
Use showline filters
Prints out anything found using the showline filters in the generated html.


Section Headings
These headings define each section of the ini file. each section is terminated by five "*"s i.e. *****. the sections must go in the order:
****weapons
*****
****sucs
*****
****deaths
*****
****special
*****
****showline
*****
****bodytag
*****

where weapons defines the weapon names, sucs defines the suicide filters, deaths for death filters, special for special filters, showline for showline filters and bodytag for the bodytag definition.


Weapon Definitions
This is where you define the names of all the weapons conread will filter for.
Each weapon name must be normal ascii and cannot contain ",". Each weapon kill will count as 1 frag. The weapon name must be proceeded with five "-"s. i.e -----
for example. Lets say we had a weapon called the "dopefish inflator" we would define it as
----Dopefish Inflator

Anything that changes someones fragcount by 1 frag should be classed as a weapon. This included team-mate kills, squishing or telefrags.



Suicide Filter Definitions
For each weapon you have defined you have to define a corresponding suicide filter for it. Each weapon can have its own set of filters. With each group of weapon suicide filters  been separated by 5 "-"s (-----). As you can see in the example .ini given, some weapons don't have any corresponding suicides (e.g., cant kill yourself with the axe) and therefore have no suicide filters.

lets say we have BOB playing. he kills himself with the dopefish inflator somehow and gets the message:
"Bob gets a bit too high"
the corresponding suicide filter would be
.
.
-----
# Dopefish inflator
 gets a bit too high
-----
.
.
notice how it  is proceeded by a space. The filter assumes that the space is there. If it is not then it will not recognize player names properly. resulting is silly stats and strange names.

Each suicide is separated into the weapon class that caused it with general suicides classed after all the weapons e.g. if there are 9 weapons (8 normal + telefrag 'weapon') then general suicides are classed under weapon 10.



Death Filter Definitions
Like suicide filters, weapons have corresponding death filters. And are also separated by five "-"s.
the filter assumes that when someone gets killed text is printed like:
"<killee> was killed by <killer>"
or
"<killee> was killed by <killer> really good"
therefore the death filters have to be in two parts. the middle text (" was killed by ") and the ending text (" really good"). if there is no ending text then a null string has to be used (""). Notice, like the suicide filters, that any proceeding and trailing spaces of the middle and end texts are also included in the filter.

Note: unfortunately text such as
"to be a sod <killee> was killed by <killer> painfully"

cannot be filtered correctly due to limits in the conread program. (it cannot handle text proceeding the killee's name)

for example lets say the two death messages for the dopefish inflator are
"<killee> was inflated by <killer>" and
"<killee> got high on <killer>'s inflator"
the filters would be
.
.
-----
# dopefish inflator
" was inflated by "
""
" got high on "
"'s inflator"
-----
.
.
notice how the second filter knows that the ending text starts with 's and hasn't got any proceeding spaces.
SPECIAL CASE:

suppose there was another line
"<killer> gives <killee> a good blow!"
notice how the killers name appears first. to accommodate this you include the text "REVERSE" in capitals as the first part of the middle text filter.
E.G..
.
.
-----
# dopefish inflator
" was inflated by "
""
" got high on "
"'s inflator"
"REVERSE gives "
" a good blow!"
-----
.
.
 
 



Special Filter Definitions
These are strings that aren't part of normal quake but you would like to filter out. e.g. for CTF or Quake soccer or somethin'. They are single player events. If you want special kills then plonk them under weapons.

You place 5 -s then the category listing you then place the filter strings (just like the suicide filter strings, but with quotes) after that line not forgetting to include the entire string (read above stuff)

e.g. for CTF
"bill captured the red flag"
you would filter it like:
.
.
-----Red flag captures
" captured the red flag"

 These events are going to be read in order of importance.
 i.e. what is read first is filtered first and is displayed first.

 p.s. don't forget to enable special filters in the flag option above



Showline Filter Definitions
These are special, if a line of text has not already been filtered and contains the text specified by the showline filters then they will appear in the generated html.

for example, in CTF you would like to know the ending scores for the level, for example:
"red team won the level with 618 points!"
"blue team lost with 532 points."

then you would use the showline filters:

" team won the level with "
" team lost with "

don't forget to set the showline filter enable bit in the flag option (bit 10)



Showline Filter Definitions
This line is the line used by conread for its <BODY> html tag. For HTML users only :)
By Richard "Jodi" Maxwell (c) 1997