# QLPyCon - Quake Live Python Console Terminal-based client for monitoring and controlling Quake Live servers via ZMQ. ## Features - Real-time game monitoring (kills, deaths, medals, team switches) - Server info display (map, gametype, scores, player list) - Team-aware colorized chat with location tracking - Powerup pickup and carrier kill notifications - JSON event capture for analysis - Quake color code support (^0-^7) - **Autocomplete for cvars/commands** with fuzzy matching - **Intelligent argument suggestions** for 25+ commands (bot names, maps, gametypes) ## Installation ```bash pip install pyzmq python main.py --host tcp://SERVER_IP:PORT --password RCON_PASSWORD ``` ## Usage ```bash # Basic python main.py --host tcp://SERVER_IP:PORT --password RCON_PASSWORD # Verbose logging python main.py --host tcp://SERVER_IP:PORT --password RCON_PASSWORD -v # Capture JSON events python main.py --host tcp://SERVER_IP:PORT --password RCON_PASSWORD --json events.log ``` **Options:** - `--host URI` - ZMQ RCON endpoint (default: tcp://127.0.0.1:27961) - `--password PASS` - RCON password (required) - `-v` / `-vv` - Verbose (INFO) or debug (DEBUG) logging - `--json FILE` - Log all events as JSON - `--unknown-log FILE` - Log unparsed events (default: unknown_events.log) **Configuration File (Optional):** Create `~/.qlpycon.conf` or `./qlpycon.conf`: ```ini [connection] host = tcp://SERVER_IP:PORT password = your_password [logging] level = INFO ``` **Input Features:** - **Smart autocomplete** - Type commands and see arguments highlighted in real-time - **Argument value suggestions** - Intelligent suggestions for bot names, maps, gametypes, teams, etc. - **Tab** - Cycle through autocomplete suggestions - **↑/↓** - Command history navigation - **Argument highlighting** - Current argument position shown in reverse video - **Command signatures** - Automatic display (e.g., `addbot [skill 1-5] [team]`) See [AUTOCOMPLETE.md](AUTOCOMPLETE.md) for details. ## Architecture ``` main.py - Main loop, argument parsing, signal handling config.py - Constants (weapons, teams, colors, limits) state.py - Game state (ServerInfo, PlayerTracker, EventDeduplicator) network.py - ZMQ connections (RCON DEALER, Stats SUB sockets) parser.py - JSON event parsing (deaths, medals, switches, stats) formatter.py - Message formatting, color codes, team prefixes ui.py - Curses interface (3-panel: info, output, input) ``` **Supported Events:** PLAYER_SWITCHTEAM, PLAYER_DEATH/KILL, PLAYER_MEDAL, PLAYER_STATS, MATCH_STARTED/REPORT, PLAYER_CONNECT/DISCONNECT, ROUND_OVER ## License WTFPL