ql-lg-server: Quake Live LG vampiric practice server in Docker
One-command setup (SteamCMD + minqlx build), .env settings with a listed/unlisted switch, three factories (lgvamp, lgvamp_nolag, lgvamp100), warmup-text and welcome minqlx plugins, watchdog/backup/daily-restart, docs for admins and players. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
commit
bc5bd09c15
25 files changed
+1009
No files matched your search
@@ -0,0 +1,32 @@
|
||||
# hide the client's warmup text ("The match will begin when more players join",
|
||||
# "Press F3 to ready yourself") while the server stays in permanent warmup (PRE_GAME).
|
||||
# The client draws that text only while configstring CS_WARMUP (5) carries a nonzero
|
||||
# "time" (warmup sets \time\-1), so we send clients an empty CS_WARMUP instead.
|
||||
import minqlx
|
||||
|
||||
CS_WARMUP = 5
|
||||
|
||||
|
||||
class nowarmuptext(minqlx.Plugin):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.add_hook("set_configstring", self.handle_set_configstring, priority=minqlx.PRI_HIGHEST)
|
||||
self.add_hook("map", self.handle_map)
|
||||
# The first map was set up before this plugin loaded: clear the value it stored.
|
||||
minqlx.set_configstring(CS_WARMUP, "")
|
||||
self.log_warmup("loaded")
|
||||
|
||||
def handle_set_configstring(self, index, value):
|
||||
if index == CS_WARMUP and value:
|
||||
return ""
|
||||
|
||||
def handle_map(self, mapname, factory):
|
||||
self.log_warmup_later()
|
||||
|
||||
@minqlx.delay(2)
|
||||
def log_warmup_later(self):
|
||||
self.log_warmup("map loaded")
|
||||
|
||||
def log_warmup(self, when):
|
||||
self.logger.info("nowarmuptext %s: CS_WARMUP=%r g_gameState=%s", when,
|
||||
minqlx.get_configstring(CS_WARMUP), minqlx.get_cvar("g_gameState"))
|
||||
@@ -0,0 +1,23 @@
|
||||
# Welcome message: tells each player the text of qlx_welcome (QL_WELCOME in .env) a few seconds
|
||||
# after they finish loading the map. Empty = nothing is sent.
|
||||
import minqlx
|
||||
|
||||
|
||||
class welcome(minqlx.Plugin):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.set_cvar_once("qlx_welcome", "")
|
||||
self.add_hook("player_loaded", self.handle_player_loaded)
|
||||
|
||||
def handle_player_loaded(self, player):
|
||||
self.greet(player)
|
||||
|
||||
@minqlx.delay(3)
|
||||
def greet(self, player):
|
||||
text = self.get_cvar("qlx_welcome")
|
||||
if text:
|
||||
try:
|
||||
player.tell(text)
|
||||
player.center_print(text)
|
||||
except minqlx.NonexistentPlayerError:
|
||||
pass # left before the message went out
|
||||
Reference in new issue
Block a user