Veröffentlicht: August 9, 2026
Wer einen eigenen CS:S-Server betreibt, kennt das Problem: Eine Map sieht auf dem Screenshot super aus, aber wenn der Server sie lädt, fehlen überall Texturen. Lila-schwarze Kacheln, unsichtbare Wände, Spieler die durch Böden fallen. Die Map läuft trotzdem durch den Rotation-Cycle, Spieler können sie nominieren und durch den Vote pushen — und dann beschwert sich jeder.
Ich hab das bei meinem GunGame-Server ein paar Mal erlebt, und die „Lösung“ war bisher: manuell in die mapcycle.txt einloggen, SSH aufmachen, die Map rausschmeißen, reload. Nervig, wenn man schnell reagieren will während man gerade selbst auf dem Server ist.
Also hab ich mir ein SourceMod-Plugin geschrieben, das genau das für mich übernimmt: Broken Map Marker.
Was macht das Plugin?
Ganz einfach: Als Admin tippt man im Chat !bm (oder !brokenmap), und das Plugin markiert die aktuelle Map als „broken“. Was danach passiert, hängt vom konfigurierten Modus ab.
Es gibt zwei Betriebsmodi:
- Remove-Modus (Standard): Die Map wird sofort aus der Mapcycle-Datei, der SM-Maplist (Nominierungspool) und den Adminmenü-Listen entfernt. Kein Player kann sie mehr nochmal reinvoten.
- Nur-Liste-Modus: Das Plugin trägt die Map nur in eine
broken_maps.txtein und blockiert Nominierungen undsm_map-Befehle — die Listen-Dateien werden aber nicht angefasst. Sinnvoll wenn man die Dateien selbst oder per Script pflegt.
Das ganze ist natürlich auch rückgängig zu machen: !unbrokenmap entfernt die Map aus der Broken-Liste. Die Dateien werden dabei nicht automatisch wiederhergestellt (das wäre schwierig ohne Backup-Logik), aber das Plugin sagt dann klar, dass man die Map manuell wieder eintragen muss.
Features im Überblick
- Schnelles Markieren per
!bmim Chat oder über das SourceMod Admin-Menü (Server Commands → Broken Map Marker) - Konfigurierbar: was genau entfernt wird (Mapcycle, Maplist, Adminmenü — alles einzeln ein-/ausschaltbar)
- Zwei Betriebsmodi per ConVar: Remove-Modus oder Nur-Liste
- Blocking:
!nominateundsm_mapwerden für broken maps geblockt - Admin-Warnung: 5 Sekunden nach dem Mapstart bekommen alle eingeloggten Admins eine Chat-Warnung, wenn die geladene Map in der Broken-Liste steht
- Removal-Log: Jede Aktion wird mit Zeitstempel, Admin-Name und betroffenen Dateien in
removed_maps_log.txtprotokolliert - Mehrsprachig: Englisch, Deutsch, Französisch, Russisch, Polnisch, Türkisch
- Auto-Config: ConVars landen automatisch in
cfg/sourcemod/nga_brokenmap.cfg
Installation
Drei Dateien, drei Ordner:
- nga_brokenmap.smx →
addons/sourcemod/plugins/ - nga_brokenmap.phrases.txt →
addons/sourcemod/translations/ - Server neustarten (oder
sm plugins load nga_brokenmap)
Beim ersten Start legt das Plugin automatisch an:
cfg/sourcemod/nga_brokenmap.cfg— ConVar-Configaddons/sourcemod/configs/broken_maps.txt— Broken-Liste (beim ersten Markieren)addons/sourcemod/configs/removed_maps_log.txt— Removal-Log (beim ersten Eintrag)
Kein weiteres Setup nötig. Die Config-Datei kann man sich dann in Ruhe anschauen und anpassen.
Konfiguration
Die ConVar-Config (cfg/sourcemod/nga_brokenmap.cfg) wird beim ersten Start automatisch angelegt und sieht dann ungefähr so aus:
// Betriebsmodus: 0=Remove (automatisch aus Listen entfernen) | 1=Nur-Liste (keine Datei-Änderungen)
sm_bm_list_only "0"
// Remove-Modus: einzelne Targets ein-/ausschalten
sm_bm_remove_mapcycle "1" // Map aus mapcycle.txt entfernen
sm_bm_remove_maplist "1" // Map aus configs/maplist.txt entfernen (SM Nominations-Pool)
sm_bm_remove_adminmenu "1" // Map aus adminmenu_maplist.ini entfernen
// Blocking (unabhängig vom Modus)
sm_bm_block_nominations "1" // !nominate für broken maps blockieren
sm_bm_block_sm_map "1" // sm_map für broken maps blockieren
// Warnung wenn die aktuelle Map broken ist
sm_bm_warn_on_broken "1" // Admins nach Mapstart warnen
// Protokollierung
sm_bm_log_removals "1" // Removal-Log in removed_maps_log.txt schreiben
Wer nur eine Art Sperrliste ohne automatische Datei-Änderungen will, setzt sm_bm_list_only "1". Das Plugin blockt dann trotzdem Nominierungen und sm_map, solange die Block-CVars auf 1 stehen.
Befehle
| Befehl | Beschreibung | Berechtigung |
|---|---|---|
!bm / !brokenmap | Menü öffnen oder aktuelle Map als broken markieren | ADMFLAG_CHANGEMAP |
!bm <mapname> | Bestimmte Map direkt markieren | ADMFLAG_CHANGEMAP |
!unbrokenmap | Aktuelle Map aus Broken-Liste entfernen | ADMFLAG_CHANGEMAP |
!unbrokenmap <mapname> | Bestimmte Map entstickern | ADMFLAG_CHANGEMAP |
sm_bm_list | Alle broken maps in Konsole/Chat ausgeben | ADMFLAG_CHANGEMAP |
sm_bm_reload | broken_maps.txt manuell neu laden (z.B. nach direkter Bearbeitung) | ADMFLAG_CHANGEMAP |
Alle Befehle funktionieren auch aus der Server-Konsole heraus (dann ohne !-Prefix, also z.B. sm_brokenmap gg_mapname).
Der Removal-Log
Immer wenn eine Map markiert oder entstickert wird, schreibt das Plugin einen Eintrag in addons/sourcemod/configs/removed_maps_log.txt. So sieht das aus:
[2026-08-09 23:51:02] MARKED | gg_paintball_x | Admin: natural | Removed from: mapcycle maplist adminmenu
[2026-08-09 23:55:14] MARKED | gg_aim_headshot | Admin: natural | Mode: list-only (no file changes)
[2026-08-10 01:12:33] UNMARKED | gg_paintball_x | Admin: natural
Das ist praktisch wenn man später nachvollziehen will, wer wann was entfernt hat, oder wenn man eine Map wieder aktivieren will und wissen muss, ob sie damals aus allen Listen rausgeflogen ist.
Das Logging lässt sich mit sm_bm_log_removals "0" deaktivieren.
broken_maps.txt manuell bearbeiten
Die broken_maps.txt ist eine einfache Textdatei, eine Map pro Zeile:
# Kommentare mit # oder // werden ignoriert
gg_paintball_x
gg_aim_headshot2
gg_007_bluesector
Nach dem manuellen Bearbeiten einfach im Chat sm_bm_reload eingeben, und das Plugin lädt die Liste neu. Kein Server-Neustart nötig.
Technisches
Das Plugin ist in SourcePawn geschrieben, compiliert mit dem SourceMod 1.12 Compiler. Es hängt nur von Standard-SourceMod-Includes (sourcemod, adminmenu) ab, braucht keine Extensions und keine weiteren Plugins.
Die Map-Liste wird beim Plugin-Load und bei jedem Reload in den Arbeitsspeicher geladen (ArrayList). Die Datei-Operationen (Entfernen aus Mapcycle etc.) laufen synchron beim Markieren, was bei großen Dateien kurz blockieren kann — ist aber in der Praxis nicht messbar.
Intern gibt jede Remove-Funktion zurück ob die Map in der jeweiligen Datei gefunden wurde. Das macht den Removal-Log-Eintrag genauer: Es steht drin aus welchen Dateien die Map tatsächlich entfernt wurde, nicht nur welche theoretisch konfiguriert waren.
Download
Beide Dateien herunterladen und wie oben beschrieben installieren:
- nga_brokenmap.smx — kompiliertes Plugin (SourceMod 1.12, CS:S)
- nga_brokenmap.sp — Quellcode zum selbst kompilieren oder anpassen
- nga_brokenmap.phrases.txt — Übersetzungsdatei (DE/EN/FR/RU/PL/TR)
Das Plugin ist Open Source, ihr könnt es gerne anpassen. Wenn ihr Bugs findet oder Erweiterungen habt, einfach in den Kommentaren melden.
Fazit
Klingt nach einem kleinen Problem, aber wenn man täglich auf dem eigenen Server unterwegs ist, nervt es einfach wenn kaputte Maps immer wieder auftauchen. Jetzt tippe ich kurz !bm und die Map ist raus — fertig. Der nächste Mapcycle-Durchlauf überspringt sie, kein Spieler kann sie mehr nominieren, und im Log steht wer wann was gemacht hat.
Für Nur-Liste-Modus gibt es übrigens eine sinnvolle Anwendung: Wenn ihr Maps habt die nur auf bestimmten Servern broken sind (z.B. wegen fehlender Custom-Content-Distribution), könnt ihr pro Server eine eigene Config haben — eine mit Remove, eine mit List-only.
Kommentar schreiben