Repository navigation
Hide the spectator mode label, Press DUCK, centre text and two overview icons (part of #677) - #714
Conversation
…e text and two overview icons (#677) Rows 1, 2, 3, 4 and 6 of #677, all found offline in client.dll (one file, identical in every install) and not yet checked in the game: - dodstudio_hide_spectator_text: the camera mode name (CHudSpectator::SetMode's direct call to MsgFunc_TextMsg becomes add esp, 0xc) and the green "Press DUCK for Spectator Menu" (a ret at the #Spec_Duck helper). Patched while 1, restored at 0. - dodstudio_hud_map_team_marker 2: no camera icon on the overview map (the draw's own no-sprite je becomes a jmp), POV and HLTV. - dodstudio_hud_map_hide_speaker: skips the speaker icon on players' overview blips; the player icons stay. - dodstudio_hide_center_text: drops TextMsg destination 4, from clan_text's existing TextMsg handler; ends the centre line showing when turned on. tools/verify_hide_text_offsets.py re-derives every site from the Rust and a real client.dll. Docs: dodstudio_commands.md, Commands.txt, the vgui2print section of goldsrc_hud_elements.md and hudelement.rs (it also takes all centre text), and hide_asset.rs's wrong voice.rs claim. Part of #677 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Smoke test on PRE (Brain account, HLTV demo
|
…xt-677 # Conflicts: # docs/dodstudio_commands.md # goldsrc-hooks/src/commands.rs # goldsrc-hooks/src/lib.rs # goldsrc-hooks/ui/Commands.txt # studio/src/console_commands_data.js
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
Self-check (PRE, Brain account, this PR's DLL after tonight's dev merge, 2dfcc1b):
Kill feed, HUD and the red death flash are the same in both runs. Only row 2 (the green line) was measured; the camera mode name (row 1), the two overview icons and the centre text were not part of this check. |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Test pass 2026-10-13: merged dev in (conflict in docs/dodstudio_commands.md: kept this PR's team-marker row and dev's run_in_background / stay_behind / screen-effects rows; regenerated console_commands_data.js). CI green; locally hooks i686 517 tests, host + i686 clippy clean, npm unit 372. |
|
In-game check on PRE (Brain account, DLL built from #717's branch which includes this PR; frames in local/game-probe/677-pre):
|
…xt-677 # Conflicts: # docs/dodstudio_commands.md # studio/src/console_commands_data.js
|
Merged dev in (6a178ce); conflicts in |
Both sides kept in commands.rs, lib.rs, Commands.txt and dodstudio_commands.md (voice_menus, spray and player_overrides from dev beside this branch's center_text, spectator_text and overview_speaker). dodstudio_hud_map_team_marker keeps its 0-2 values in dev's wording. console_commands_data.js regenerated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A demo carries the mode name ("First Person") as a #Spec_Mode TextMsg to
the centre at every POV death, besides the game's own SetMode call. In
game it still showed with dodstudio_hide_spectator_text 1; clan_text's
TextMsg filter now asks spectator_text for it, as it asks center_text.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Review and in-game check (unattended pass): ready to merge. Head Branch
One fix, pushed here (
Checked
In game (Brain account), PRE and POST,
Screenshots: |
Brings in #719's ds_<area>_ rename. The settings this PR adds take their names from the signed-off table on #555: - hide_spectator_text -> ds_spec_hide_text - hide_center_text -> ds_hud_hide_center_text - hud_map_hide_speaker -> ds_hud_overview_hide_speaker ds_hud_overview_team_marker gains 2 (no camera icon). None of these names shipped, so old_names.rs gets no entries; console_prefix's test lists them as names added since #555. Commands.txt, dodstudio_commands.md and console_commands_data.js (regenerated) carry the new names. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…xt-677 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Merged dev and took the #555 names. In-game check on PRE and POST (Brain account). Head Branch
Checked locally: hooks i686 tests (698), workspace tests, clippy 1.98.1 for the workspace and i686, fmt, and npm unit tests (602) all pass. In game: DLL from
Nothing else on screen changed between 0 and 1. There were no crashes, and no "not applied" lines in either log. Test DLL: Frames that a POV setting turned on after the green line was already up still show that line until it times out (documented). The counts above start at frame 50, after the death. |
… Delay hides while Seek Between Clips is on; pre-roll 5 s, post-roll 1 s Clean clips: ds_spec_hide_text 1, ds_hud_hide_center_text 1, ds_hud_overview_hide_speaker 0, ds_view_hide_screen_shake 1. Initial Delay only applies to patched demos; the hook waits for the demo itself. New installs start with a 5 s pre-roll and 1 s post-roll. Also rustfmt for the lib.rs import list. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Release note: New: hide the spectator camera's mode label and the green "Press DUCK for Spectator Menu" line (
ds_spec_hide_text), centre-screen server text (ds_hud_hide_center_text), and the overview map's camera icon (ds_hud_overview_team_marker 2) and speaker icon (ds_hud_overview_hide_speaker).This builds rows 1, 2, 3, 4 and 6 of #677. Each is a new setting or value that defaults to off. A setting patches only while it's on and puts the original bytes back when it's off. The bytes are checked every frame.
Names follow the signed-off table on #555 (#719's
ds_<area>_layout). None of these names shipped, soold_names.rsgets no entries;console_prefix's test lists them as added since #555.ds_spec_hide_text 1call MsgFunc_TextMsgatclient+0x38a20becomesadd esp,0xc; nop; nop. The callee isret 0xcon all 4 returns, and nothing after the call readseaxor the flags. The server's own copy (aTextMsgwith#Spec_Mode1..4) is dropped inclan_text'sTextMsgfilter.reton the#Spec_Duckhelper at+0x84780. All 4 callers pop their own argument.ds_hud_overview_team_marker 2(new value)+0x2f43dbecomesjmp. Works in POV and HLTV.ds_hud_overview_hide_speaker 1jmp +0x2f31eover+0x2f287). The player icon stays.TextMsgdestination 4: plugin countdowns, notices)ds_hud_hide_center_text 1clan_text's existingTextMsghook, so destinations 1–3 still come through. Turning it on also clears a centre line already on screen.Rows 3 and 4 stay invisible on installs where
sprites/spec_camera.sprandmapsprites/speakerIcon.sprare blanked. Once these settings work for you, those blank files can go.Docs:
goldsrc_hud_elements.mdandhudelement.rsnow name the second centre-text queue (+0x3a830), sovgui2printhides all centre text.hide_asset.rsno longer claimsvoice.rshides the speaker icon.Commands.txt,dodstudio_commands.mdand the regeneratedconsole_commands_data.jshave the new names.Tests
npm run test:unitpasses (602).-D warnings) is clean for the workspace and for i686, and fmt is clean.tools/verify_hide_text_offsets.py: passes on PRE's and POST'sclient.dll, which are byte-identical.Test it yourself (PRE, then POST)
Test DLL:
local\test-714\dodstudio_goldsrc_hooks.dll. For POST, open the demos as"../../Half-Life - PRE-Anniversary for Movies/dod/<demo>".viewdemo wsod25_grp3_h1_element, thends_hud_hide_scoreboard 1andds_demo_seek_to 1548. About 6 s in, the player dies and "Press DUCK for Spectator Menu" shows. Runds_spec_hide_text 1, seek to 1548 again: no green line this time. The kill feed and HUD look the same.viewdemo wsod25_grp2_h1_hltv, thends_demo_seek_to 900andspec_mode 4.spec_mode 3shows "Free Look" above the bottom bar, andspec_mode 4shows "First Person". Withds_spec_hide_text 1, neither shows._cl_minimap 2.ds_hud_overview_team_marker 1shows the team camera icon on the map, and2removes it. The player icons stay.ds_hud_overview_hide_speaker 1while someone on the map talks.ds_hud_hide_center_text 1. The hook log readscenter_text: hid "..."for each line it drops.Not covered: the second direct caller of
MsgFunc_TextMsg(viewport table entry 13,+0x20480), which is noted incenter_text.rs; the engine's ownsvc_centerprint(row 8); and VGUI menus (row 5).Part of #677
🤖 Generated with Claude Code