A real Panorama HUD for Counter-Strike 2 timer servers — surf, bhop, kz, minigames.
Map info, personal best, record, rank and top 5 on the sides; speed, timer, strafe sync and keys at the bottom.
Drawn by the game's own UI (custom_hud_layout), not by center-text HTML: no flicker, no overlap with chat.
Made by Random Picks · CounterStrikeSharp plugin · MIT
| Panel | Shows |
|---|---|
| Left | Map name, map type (SURF, BHOP, MG, KZ, DEATHRUN, JAIL… from the map prefix), mode, tier, max velocity, your personal best, the record, your rank and total finishes |
| Right | The map's top 5 (name and time) |
| Bottom | Speed, the SharpTimer timer, strafe sync % while running, and the keys you hold (A W S D, jump, duck) |
- Data comes from SharpTimer: records from its MySQL database, the live timer and sync straight from the running plugin.
- Every player can switch between this HUD and SharpTimer's own HUD with
!rphud. - Each panel can be turned off, so the same build works on surf and on minigames servers.
- A small watermark (
RANDOM PICKSby default) sits next to the mode and under the stopped timer. Change it or clear it in the config.
- CS2 dedicated server with Metamod:Source and CounterStrikeSharp 1.0.374 or newer (the
custom_hud_layoutAPI). - SharpTimer with MySQL enabled, for records and the top 5. Without it the bottom panel still shows speed and keys.
- MultiAddonManager, so every client downloads the Workshop addon that contains the HUD layout.
The HUD has two halves: the layout (a Workshop addon the clients download) and the plugin (on the server).
1. Publish the layout as a Workshop addon
The release zip has the compiled layout in workshop-addon/. Put it in a Workshop addon and publish it:
- In Steam, install Counter-Strike 2 Workshop Tools (Library → CS2 → DLC).
- Create an addon, for example
my_hud, and copy thepanoramafolder fromworkshop-addon/into…\Counter-Strike Global Offensive\game\csgo_addons\my_hud\. - Publish it from the Workshop Tools and note its Workshop ID.
You can also add those files to an addon you already publish, such as your server's content pack.
To change the design, edit the sources in addon/panorama/ and compile them from game\bin\win64 of CS2:
resourcecompiler.exe -nop4 -i "<CS2>\content\csgo_addons\my_hud\panorama\layout\custom_game\randompicks_hud.xml"
2. Make clients download it
In cfg/multiaddonmanager/multiaddonmanager.cfg, add the Workshop ID to both lists:
mm_extra_addons "<workshop id>"
mm_client_extra_addons "<workshop id>"
3. Install the plugin
Copy addons/ from the release zip into the server's game/csgo/. You end up with:
addons/counterstrikesharp/plugins/RandomPicksHud/RandomPicksHud.dll
addons/counterstrikesharp/plugins/RandomPicksHud/RandomPicksHud.deps.json
addons/counterstrikesharp/plugins/RandomPicksHud/MySqlConnector.dll
Restart the server or change the map. The config is created on first load in
addons/counterstrikesharp/configs/plugins/RandomPicksHud/RandomPicksHud.json.
The plugin reads SharpTimer's database settings from cfg/SharpTimer/mysqlConfig.json, so there is nothing else to set up.
| Key | Default | What it does |
|---|---|---|
Layout |
panorama/layout/custom_game/randompicks_hud.xml |
Layout path inside the addon. Use the source name (.xml), not .vxml_c. |
Mode |
Standard |
SharpTimer mode used for records and shown on the left. |
RefreshSeconds |
5 |
How often records are read and the whole HUD is resent. |
HideSharpTimerHudByDefault |
false |
true hides SharpTimer's center HUD on join. Players get it back with !rphud. |
OnlyForSteamIds |
[] |
SteamID64 list to test the HUD with a few players. Empty means everyone. |
MapInfoUrl |
SharpTimer surf remote_data |
JSON with tier and type per map. Empty disables it. |
ShowSidePanels |
true |
Left and right panels. false also skips every database query. |
ShowBottomPanel |
true |
Speed, timer, sync and keys. |
Watermark |
RANDOM PICKS |
Text after the mode and under the stopped timer. Empty means no watermark. |
A full example is in examples/RandomPicksHud.json.
A minigames server usually wants "MapInfoUrl": "", and a server without SharpTimer records wants "ShowSidePanels": false.
| Command | Who | What |
|---|---|---|
!rphud |
Everyone | Switch between this HUD and SharpTimer's HUD |
!hudreload |
@css/root |
Recreate the HUD entity for everybody |
- Nobody sees the HUD. Check that the addon is in
mm_client_extra_addonsand thatLayoutmatches the file inside it. The server log prints[RandomPicksHud] custom_hud_layout #N layout=…every time the HUD is created. - Only some players see it. Empty
OnlyForSteamIds. - The bottom panel disappears for a moment when someone joins. CS2 clears HUD texts for players already in the game when another one joins. The plugin resends everything every
RefreshSeconds. - Never create HUD entities from
OnMapStart. This plugin creates the HUD when players connect or spawn. Doing it while the map is still loading crashes the server.
HUD Panorama de verdad para servidores de CS2 con cronómetro: surf, bhop, kz y minijuegos. La dibuja la propia interfaz del juego (custom_hud_layout), no el texto HTML del centro de la pantalla, así que ni parpadea ni tapa el chat.
- Panel izquierdo: nombre y tipo del mapa según su prefijo, modo, tier, velocidad máxima, tu mejor tiempo, el récord, tu puesto y las veces que se ha completado.
- Panel derecho: el top 5 del mapa.
- Abajo: velocidad, cronómetro de SharpTimer, sync mientras corres y las teclas pulsadas.
- Marca de agua:
RANDOM PICKSpor defecto, junto al modo y bajo el cronómetro parado. Se cambia o se quita conWatermark. - Cada jugador alterna entre esta HUD y la de SharpTimer con
!rphud.
- Diseño: copia la carpeta
panoramadeworkshop-addon/en un addon de Workshop, dentro degame\csgo_addons\<addon>\, y publícalo con las Workshop Tools de CS2. Si ya publicas un pack de contenido para tu servidor, también puedes añadirla a ese pack. - Descarga en los clientes: añade el ID del addon a
mm_extra_addonsymm_client_extra_addonsencfg/multiaddonmanager/multiaddonmanager.cfg. - Plugin: copia
addons/del zip engame/csgo/del servidor y reinicia o cambia de mapa. - Configuración: se crea sola en
addons/counterstrikesharp/configs/plugins/RandomPicksHud/RandomPicksHud.json. Las opciones son las de la tabla de arriba. La conexión a la base de datos la toma de la de SharpTimer.
Requisitos: CounterStrikeSharp 1.0.374 o superior, SharpTimer con MySQL para los récords, y MultiAddonManager.
dotnet build -c Release
De bin/Release/net10.0/ se copian a plugins/RandomPicksHud/ tres ficheros: RandomPicksHud.dll, RandomPicksHud.deps.json y MySqlConnector.dll. El resto ya lo trae CounterStrikeSharp.