### tf2mon - Team Fortress 2 Console Monitor
#### Usage
tf2mon [--tf2-install-dir DIR] [--rewind | --no-rewind]
[--follow | --no-follow] [--list-con-logfile]
[--trunc-con-logfile] [--clean-con-logfile]
[--exclude-file FILE] [--layout {CHAT,DFLT,FULL,TALL,MRGD,WIDE}]
[--log-location {MOD,NAM,THM,THN,FILE,NUL}]
[--sort-order {AGE,STEAMID,CONN,K,KD,USERNAME}] [--single-step]
[--break LINENO] [--search PATTERN] [--inject-cmd LINENO:CMD]
[--inject-file FILE] [--allow-toggles] [--database FILE]
[--hackers FILE] [--print-steamids STEAMID [STEAMID ...]]
[--print-hackers] [-h] [-v] [-V] [--config FILE]
[--print-config] [--print-url] [--completion [SHELL]]
[con_logfile]
Team Fortress II (`TF2`) Console Monitor, `tf2mon`, is an interactive
terminal application that displays scoreboards and player statistics of
an active game. `tf2mon` can also `--rewind` and `--single-step`
through previous games.
`tf2mon` recognizes and tracks abusive players, such as racists and
`cathook-bots`. It provides application and in-game key-bindings to
`CALLVOTE KICK` cheaters/hackers, or mark as racist or suspect.
`tf2mon` reads TF2's console logfile (`con_logfile`), creates action
scripts in TF2's `cfg/user` directory, and binds keys for gamer to
press to take those actions, such as issue `SAY` and `CALLVOTE KICK`
commands.
Other in-game key-bindings taunt gamer's last victim/killer with a
`CHAT` message customized with their name, k/d ratio, rotating spam,
weapon and duel-scores (`Taunt` and `Throe`).
By default, `tf2mon` starts reading `con_logfile` from its end
(`--no-rewind`), and `--follow`s its tail.
#### Positional Arguments
con_logfile TF2 console logfile; relative to `--tf2-install-dir`
(default: `console.log`).
#### Options
--tf2-install-dir DIR
TF2 installation directory (default: `~/tf2`).
--rewind Start from head of logfile (default: `False`).
--no-rewind Start from tail of logfile (default: `True`).
--follow Follow end of logfile forever (default: `True`).
--no-follow Exit at end of logfile (default: `False`).
--list-con-logfile Show path to logfile and exit.
--trunc-con-logfile
Truncate logfile and exit.
--clean-con-logfile
Filter-out excluded lines from logfile to stdout and
exit.
--exclude-file FILE
Exclude lines that match patterns in `FILE` (default:
`~/dev/tf2mon/tf2mon/data/exclude.txt`).
--layout {CHAT,DFLT,FULL,TALL,MRGD,WIDE}
Choose display layout (fkey: `F9`) (default: `MRGD`).
--log-location {MOD,NAM,THM,THN,FILE,NUL}
Choose format of logger location field (fkey: `F8`)
(default: `NUL`).
--sort-order {AGE,STEAMID,CONN,K,KD,USERNAME}
Choose sort order (fkey: `F7`) (default: `KD`).
#### Debugging options
--single-step Single-step at startup.
--break LINENO Single-step at line `LINENO`.
--search PATTERN Single-step when line matches `PATTERN`; add `/i` to
ignore case.
--inject-cmd LINENO:CMD
Inject `CMD` before line `LINENO`.
--inject-file FILE Read list of inject commands from `FILE`.
--allow-toggles Allow toggles when `--rewind` (default: `False`).
#### Database options
--database FILE Main database (default: `~/.cache/tf2mon/tf2mon.db`).
--hackers FILE Hackers database (default:
`~/.cache/tf2mon/hackers.json`).
--print-steamids STEAMID [STEAMID ...]
Print `ISteamUser.GetPlayerSummaries` for `STEAMID`
and exit.
--print-hackers Print hackers database and exit.
#### Configuration file
The configuration file (see `--config FILE` below) defines local
settings:
[tf2mon]
tf2_install_dir = "/path/to/your/tf2/installation"
webapi_key = "your-steamworks-webapi-key"
player_name = "Your Name"
#### Function Keys
These function keys are available in-game and in the monitor:
F1 Display Help.
ctrl+F1 Display Message of the Day.
shift+F1 Display file.
F2 Enable/disable debug (use `ECHO` or `SAY`).
F3 Enable/disable `Taunt` messages.
shift+F3 Enable/disable `Throe` messages.
F4 Include `Kill/Death ratio` in `User.moniker`.
shift+F4 Display kills in journal window.
F5 Cycle contents of User Panel.
shift+F5 Display perks in journal window.
F6 Join Other Team.
F7 Cycle scoreboard Sort column.
F8 Cycle logger `location` format.
ctrl+F8 Reset logger `padding`.
shift+F8 Cycle logger `level`.
F9 Cycle grid layout.
ctrl+F9 Refresh chat window(s).
shift+F9 Clear chat window(s).
KP_INS Show debugging.
KP_DEL Start single-stepping.
[ Kick last killer as `cheater`.
] Kick last killer as `racist`.
\ Mark last killer as `suspect`.
KP_HOME Pop last/latest kicks queue message.
KP_LEFTARROW Clear kicks queue.
KP_END Pop first/oldest kicks queue message.
KP_PGUP Pop last/latest spams queue message.
KP_RIGHTARROW Clear spams queue.
KP_PGDN Pop first/oldest spams queue message.
KP_5 Clear kicks and spams queues.
KP_DOWNARROW Push `steamids` from game to monitor.
#### In-Game Controls, Numpad
While playing TF2, use the `Numpad` to kick cheaters, and generate
`Taunt` and death-`Throe` spam.
Messages are placed into queues, and may be popped off either end.
Queues --> Kicks Admin Spams
| | |
v v v
+---------+---------+---------+
last/ | | | |
newest --> | pop | | pop |
| | | |
+---------+---------+---------+
| | | |
| clear | clear | clear |
| | both | |
+---------+---------+---------+
first/ | | | |
oldest --> | popleft | vet | popleft |
| | | |
+---------+---------+---------+
To vet new players that have joined the game, `tf2mon` needs their
`steamid`s, and to get them, gamer must press `NUMPAD-DOWNARROW`. The
`status` panel will be highlighted when the monitor needs steamids.
When detected, `tf2mon` pushes hackers onto the `Kicks` queue, and
alerts the gamer, who may then press `HOME`/`END` to issue `CHAT`
and `CALLVOTE KICK` commands.
When gamer kills an opponent, `tf2mon` pushes a `Taunt` onto the
`Spams` queue; on death, a `Throe`. Enable/disable with `F3`. Send
with `PGUP`/`PGDN`.
The monitor can only push actions onto the queues; gamer must pop
for action to be taken, or clear to discard.
#### Duels
The user-panel displays battles with opponents, grouped by weapon (and
its state when fired).
┌─────────────────────────────────────────────────────────────────────┐
│Duels: │
│ 4 and 2 vs GLaDOS │
│ K 2 soldier quake_rl │
│ K 1 pyro flamethrower │
│ K 1 pyro +crit flamethrower +Low Gravity │
│ D 2 heavy minigun │
│ 5 and 0 vs CreditToTeam │
│ K 2 soldier quake_rl │
│ K 2 pyro +crit flamethrower │
│ K 1 pyro flamethrower │
│ 3 and 1 vs Aperture Science Prototype XR7 │
│ K 1 soldier world │
│ K 1 soldier quake_rl +Invisibility │
│ K 1 pyro +crit flamethrower │
│ D 1 demo player │
└─────────────────────────────────────────────────────────────────────┘
#### Where to Operate
`tf2mon` works by reading the `con_logfile` to which `TF2` logs
messages during the game. `tf2mon` can either "tail -f" an active
game, or `--rewind` and replay saved logfiles. Press `Enter` in the
admin console to process the next line when in `--single-step` mode.
Type `quit` or press `^D` to exit.
`One-machine, Two-monitors`
Run `tf2mon` on a secondary monitor, while playing game on
primary monitor.
`Two-machines, SSH`
ssh from another machine and run.
`Two-machines, NFS`
cross-mount TF2's `cfg` tree to another box and run from there.
#### Terminal Size
`tf2mon` requires a large terminal. Maximize the window, and use keys
(maybe `Ctrl-Minus` and `Shift-Ctrl-Plus`) to resize. The wider the
terminal, the more player data will be displayed:
36x146 minimum
42x173 display personaname
52x211 display realname
62x272 display age/location
#### Resizable Windows
`Drag-and-drop` an interior border to resize the windows on either side.
`Double-click` an interior border to enter `Resize Mode`.
`scroll-wheel` and `arrows` move the border.
`click`, `enter` or `esc` to exit.
#### Scoreboard
`Single-click` user to highlight and follow.
`Double-click` user to kick as cheater.
`Triple-click` user to kick as racist.
`F7` to change sort column.
#### Log Files
`tf2mon` writes plaintext messages to `fileno(2)`, and
colorized messages to `fileno(3)`, when open to a regular file.
$ tf2mon 2>x 3>y
#### General options
-h, --help Show this help message and exit.
-v, --verbose `-v` for detailed output and `-vv` for more detailed.
-V, --version Print version number and exit.
--config FILE Use config `FILE` (default: `~/.tf2mon.toml`).
--print-config Print effective config and exit.
--print-url Print project url and exit.
--completion [SHELL]
Print completion scripts for `SHELL` and exit
(default: `bash`).
Raw data
{
"_id": null,
"home_page": null,
"name": "tf2mon",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "tf2, team-fortress-2, steam, valve, bots, cathook",
"author": null,
"author_email": "Russel Lane <russel@rlane.com>",
"download_url": "https://files.pythonhosted.org/packages/83/c6/a0dc4950d7a54e4c41b768ef80e515f58645699f3ee64ea40c4a672ddae4/tf2mon-1.0.45.tar.gz",
"platform": null,
"description": "### tf2mon - Team Fortress 2 Console Monitor\n\n#### Usage\n tf2mon [--tf2-install-dir DIR] [--rewind | --no-rewind]\n [--follow | --no-follow] [--list-con-logfile]\n [--trunc-con-logfile] [--clean-con-logfile]\n [--exclude-file FILE] [--layout {CHAT,DFLT,FULL,TALL,MRGD,WIDE}]\n [--log-location {MOD,NAM,THM,THN,FILE,NUL}]\n [--sort-order {AGE,STEAMID,CONN,K,KD,USERNAME}] [--single-step]\n [--break LINENO] [--search PATTERN] [--inject-cmd LINENO:CMD]\n [--inject-file FILE] [--allow-toggles] [--database FILE]\n [--hackers FILE] [--print-steamids STEAMID [STEAMID ...]]\n [--print-hackers] [-h] [-v] [-V] [--config FILE]\n [--print-config] [--print-url] [--completion [SHELL]]\n [con_logfile]\n \nTeam Fortress II (`TF2`) Console Monitor, `tf2mon`, is an interactive\nterminal application that displays scoreboards and player statistics of\nan active game. `tf2mon` can also `--rewind` and `--single-step`\nthrough previous games.\n\n`tf2mon` recognizes and tracks abusive players, such as racists and\n`cathook-bots`. It provides application and in-game key-bindings to\n`CALLVOTE KICK` cheaters/hackers, or mark as racist or suspect.\n\n`tf2mon` reads TF2's console logfile (`con_logfile`), creates action\nscripts in TF2's `cfg/user` directory, and binds keys for gamer to\npress to take those actions, such as issue `SAY` and `CALLVOTE KICK`\ncommands.\n\nOther in-game key-bindings taunt gamer's last victim/killer with a\n`CHAT` message customized with their name, k/d ratio, rotating spam,\nweapon and duel-scores (`Taunt` and `Throe`).\n\nBy default, `tf2mon` starts reading `con_logfile` from its end\n(`--no-rewind`), and `--follow`s its tail.\n\n#### Positional Arguments\n con_logfile TF2 console logfile; relative to `--tf2-install-dir`\n (default: `console.log`).\n\n#### Options\n --tf2-install-dir DIR\n TF2 installation directory (default: `~/tf2`).\n --rewind Start from head of logfile (default: `False`).\n --no-rewind Start from tail of logfile (default: `True`).\n --follow Follow end of logfile forever (default: `True`).\n --no-follow Exit at end of logfile (default: `False`).\n --list-con-logfile Show path to logfile and exit.\n --trunc-con-logfile\n Truncate logfile and exit.\n --clean-con-logfile\n Filter-out excluded lines from logfile to stdout and\n exit.\n --exclude-file FILE\n Exclude lines that match patterns in `FILE` (default:\n `~/dev/tf2mon/tf2mon/data/exclude.txt`).\n --layout {CHAT,DFLT,FULL,TALL,MRGD,WIDE}\n Choose display layout (fkey: `F9`) (default: `MRGD`).\n --log-location {MOD,NAM,THM,THN,FILE,NUL}\n Choose format of logger location field (fkey: `F8`)\n (default: `NUL`).\n --sort-order {AGE,STEAMID,CONN,K,KD,USERNAME}\n Choose sort order (fkey: `F7`) (default: `KD`).\n\n#### Debugging options\n --single-step Single-step at startup.\n --break LINENO Single-step at line `LINENO`.\n --search PATTERN Single-step when line matches `PATTERN`; add `/i` to\n ignore case.\n --inject-cmd LINENO:CMD\n Inject `CMD` before line `LINENO`.\n --inject-file FILE Read list of inject commands from `FILE`.\n --allow-toggles Allow toggles when `--rewind` (default: `False`).\n\n#### Database options\n --database FILE Main database (default: `~/.cache/tf2mon/tf2mon.db`).\n --hackers FILE Hackers database (default:\n `~/.cache/tf2mon/hackers.json`).\n --print-steamids STEAMID [STEAMID ...]\n Print `ISteamUser.GetPlayerSummaries` for `STEAMID`\n and exit.\n --print-hackers Print hackers database and exit.\n\n#### Configuration file\n The configuration file (see `--config FILE` below) defines local\n settings:\n \n [tf2mon]\n tf2_install_dir = \"/path/to/your/tf2/installation\"\n webapi_key = \"your-steamworks-webapi-key\"\n player_name = \"Your Name\"\n\n#### Function Keys\n These function keys are available in-game and in the monitor:\n \n F1 Display Help.\n ctrl+F1 Display Message of the Day.\n shift+F1 Display file.\n F2 Enable/disable debug (use `ECHO` or `SAY`).\n F3 Enable/disable `Taunt` messages.\n shift+F3 Enable/disable `Throe` messages.\n F4 Include `Kill/Death ratio` in `User.moniker`.\n shift+F4 Display kills in journal window.\n F5 Cycle contents of User Panel.\n shift+F5 Display perks in journal window.\n F6 Join Other Team.\n F7 Cycle scoreboard Sort column.\n F8 Cycle logger `location` format.\n ctrl+F8 Reset logger `padding`.\n shift+F8 Cycle logger `level`.\n F9 Cycle grid layout.\n ctrl+F9 Refresh chat window(s).\n shift+F9 Clear chat window(s).\n KP_INS Show debugging.\n KP_DEL Start single-stepping.\n [ Kick last killer as `cheater`.\n ] Kick last killer as `racist`.\n \\ Mark last killer as `suspect`.\n KP_HOME Pop last/latest kicks queue message.\n KP_LEFTARROW Clear kicks queue.\n KP_END Pop first/oldest kicks queue message.\n KP_PGUP Pop last/latest spams queue message.\n KP_RIGHTARROW Clear spams queue.\n KP_PGDN Pop first/oldest spams queue message.\n KP_5 Clear kicks and spams queues.\n KP_DOWNARROW Push `steamids` from game to monitor.\n\n#### In-Game Controls, Numpad\n While playing TF2, use the `Numpad` to kick cheaters, and generate\n `Taunt` and death-`Throe` spam.\n \n Messages are placed into queues, and may be popped off either end.\n \n Queues --> Kicks Admin Spams\n | | |\n v v v\n +---------+---------+---------+\n last/ | | | |\n newest --> | pop | | pop |\n | | | |\n +---------+---------+---------+\n | | | |\n | clear | clear | clear |\n | | both | |\n +---------+---------+---------+\n first/ | | | |\n oldest --> | popleft | vet | popleft |\n | | | |\n +---------+---------+---------+\n \n To vet new players that have joined the game, `tf2mon` needs their\n `steamid`s, and to get them, gamer must press `NUMPAD-DOWNARROW`. The\n `status` panel will be highlighted when the monitor needs steamids.\n \n When detected, `tf2mon` pushes hackers onto the `Kicks` queue, and\n alerts the gamer, who may then press `HOME`/`END` to issue `CHAT`\n and `CALLVOTE KICK` commands.\n \n When gamer kills an opponent, `tf2mon` pushes a `Taunt` onto the\n `Spams` queue; on death, a `Throe`. Enable/disable with `F3`. Send\n with `PGUP`/`PGDN`.\n \n The monitor can only push actions onto the queues; gamer must pop\n for action to be taken, or clear to discard.\n\n#### Duels\n The user-panel displays battles with opponents, grouped by weapon (and\n its state when fired).\n \n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502Duels: \u2502\n \u2502 4 and 2 vs GLaDOS \u2502\n \u2502 K 2 soldier quake_rl \u2502\n \u2502 K 1 pyro flamethrower \u2502\n \u2502 K 1 pyro +crit flamethrower +Low Gravity \u2502\n \u2502 D 2 heavy minigun \u2502\n \u2502 5 and 0 vs CreditToTeam \u2502\n \u2502 K 2 soldier quake_rl \u2502\n \u2502 K 2 pyro +crit flamethrower \u2502\n \u2502 K 1 pyro flamethrower \u2502\n \u2502 3 and 1 vs Aperture Science Prototype XR7 \u2502\n \u2502 K 1 soldier world \u2502\n \u2502 K 1 soldier quake_rl +Invisibility \u2502\n \u2502 K 1 pyro +crit flamethrower \u2502\n \u2502 D 1 demo player \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\n#### Where to Operate\n `tf2mon` works by reading the `con_logfile` to which `TF2` logs\n messages during the game. `tf2mon` can either \"tail -f\" an active\n game, or `--rewind` and replay saved logfiles. Press `Enter` in the\n admin console to process the next line when in `--single-step` mode.\n Type `quit` or press `^D` to exit.\n \n `One-machine, Two-monitors`\n Run `tf2mon` on a secondary monitor, while playing game on\n primary monitor.\n \n `Two-machines, SSH`\n ssh from another machine and run.\n \n `Two-machines, NFS`\n cross-mount TF2's `cfg` tree to another box and run from there.\n\n#### Terminal Size\n `tf2mon` requires a large terminal. Maximize the window, and use keys\n (maybe `Ctrl-Minus` and `Shift-Ctrl-Plus`) to resize. The wider the\n terminal, the more player data will be displayed:\n \n 36x146 minimum\n 42x173 display personaname\n 52x211 display realname\n 62x272 display age/location\n\n#### Resizable Windows\n `Drag-and-drop` an interior border to resize the windows on either side.\n \n `Double-click` an interior border to enter `Resize Mode`.\n `scroll-wheel` and `arrows` move the border.\n `click`, `enter` or `esc` to exit.\n\n#### Scoreboard\n `Single-click` user to highlight and follow.\n `Double-click` user to kick as cheater.\n `Triple-click` user to kick as racist.\n `F7` to change sort column.\n\n#### Log Files\n `tf2mon` writes plaintext messages to `fileno(2)`, and\n colorized messages to `fileno(3)`, when open to a regular file.\n \n $ tf2mon 2>x 3>y\n\n#### General options\n -h, --help Show this help message and exit.\n -v, --verbose `-v` for detailed output and `-vv` for more detailed.\n -V, --version Print version number and exit.\n --config FILE Use config `FILE` (default: `~/.tf2mon.toml`).\n --print-config Print effective config and exit.\n --print-url Print project url and exit.\n --completion [SHELL]\n Print completion scripts for `SHELL` and exit\n (default: `bash`).\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Team Fortress 2 Console Monitor",
"version": "1.0.45",
"project_urls": {
"Homepage": "https://github.com/russellane/tf2mon"
},
"split_keywords": [
"tf2",
" team-fortress-2",
" steam",
" valve",
" bots",
" cathook"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "0b3267737b31d587adea89981498ca346eaf7b77256290917d3c8f113715ae7e",
"md5": "e435b45e670d441f8fa880fecae5959c",
"sha256": "0afbc43801d510d900ed5896ca200ca7e9527d3a47acf979446cce6f9e886379"
},
"downloads": -1,
"filename": "tf2mon-1.0.45-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e435b45e670d441f8fa880fecae5959c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 73038,
"upload_time": "2024-11-02T23:02:05",
"upload_time_iso_8601": "2024-11-02T23:02:05.807305Z",
"url": "https://files.pythonhosted.org/packages/0b/32/67737b31d587adea89981498ca346eaf7b77256290917d3c8f113715ae7e/tf2mon-1.0.45-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "83c6a0dc4950d7a54e4c41b768ef80e515f58645699f3ee64ea40c4a672ddae4",
"md5": "d5455395983408bb7a4a4b0cbdd8d816",
"sha256": "dd27e0468787bf70504b60948bf3e6c39e3f2376741cfc9ab5f7e8679f51088d"
},
"downloads": -1,
"filename": "tf2mon-1.0.45.tar.gz",
"has_sig": false,
"md5_digest": "d5455395983408bb7a4a4b0cbdd8d816",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 64570,
"upload_time": "2024-11-02T23:02:07",
"upload_time_iso_8601": "2024-11-02T23:02:07.120949Z",
"url": "https://files.pythonhosted.org/packages/83/c6/a0dc4950d7a54e4c41b768ef80e515f58645699f3ee64ea40c4a672ddae4/tf2mon-1.0.45.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-02 23:02:07",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "russellane",
"github_project": "tf2mon",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "tf2mon"
}