fix #213: complete suicide and framerate presentation
Translate suicide response 0x004A as retail's successful self-kill notice. Port /framerate onto the authored SmartBox FPS element with live two-decimal FPS and DEG values, keep diagnostic window chrome independent, and synchronize command-driven settings without discarding panel drafts. Co-Authored-By: Codex <codex@openai.com>
This commit is contained in:
parent
9ea579bdd0
commit
43f7c7807c
17 changed files with 729 additions and 39 deletions
|
|
@ -14,6 +14,12 @@ cross-check.
|
|||
- `ClientCommunicationSystem::DoMarketplace @ 0x0056FCE0`
|
||||
- `ClientCommunicationSystem::DoLockUI @ 0x005703B0`
|
||||
- `ClientCommunicationSystem::DoFrameRate @ 0x005707D0`
|
||||
- `gmSmartBoxUI::UpdateFPSMeter @ 0x004D63A0`
|
||||
- `gmSmartBoxUI::RecvNotice_SetFramerateDisplay @ 0x004D65E0`
|
||||
- `gmSmartBoxUI::UseTime @ 0x004D6E30`
|
||||
- `ClientCommunicationSystem::DoDie @ 0x00580050`
|
||||
- `ClientCommunicationSystem::DieDialogCallback @ 0x0057BA70`
|
||||
- `CM_Character::Event_Suicide @ 0x006A1B00`
|
||||
- `ClientCommunicationSystem::DoPKArena @ 0x005788D0`
|
||||
- `ClientCommunicationSystem::DoPKLArena @ 0x005789D0`
|
||||
- `ClientCommunicationSystem::DoAge @ 0x0057C5A0`
|
||||
|
|
@ -104,7 +110,18 @@ framerate(arguments):
|
|||
if arguments: display local usage
|
||||
else:
|
||||
show_framerate = !show_framerate
|
||||
notify UI so the display changes immediately
|
||||
notify gmSmartBoxUI
|
||||
if enabled:
|
||||
resolve UIElement_Text 0x10000047 from LayoutDesc 0x2100000F
|
||||
show it and update it immediately
|
||||
else:
|
||||
hide it and clear the active FPS-display pointer
|
||||
|
||||
smartbox_use_time():
|
||||
if the FPS-display pointer is active:
|
||||
update the display with two-precision values:
|
||||
"FPS: {Render.GetFramerate():F2}"
|
||||
"DEG: {active_degrade_multiplier:F2}"
|
||||
|
||||
lockui(arguments):
|
||||
if arguments: display local usage
|
||||
|
|
@ -113,6 +130,29 @@ lockui(arguments):
|
|||
broadcast the UI-lock state change
|
||||
```
|
||||
|
||||
The two-line template is portal string-table entry `0x0DCFFF73` in table
|
||||
`0x23000001`; its authored text fragments are `FPS: ` and `\nDEG: `. The
|
||||
display is the exact 128×36 SmartBox text element at `(1,1)`, using font
|
||||
`0x4000001A`. Retail registers only the exact command name `/framerate`;
|
||||
`/framrate` is not an alias.
|
||||
|
||||
```text
|
||||
die(arguments):
|
||||
if arguments: display local usage
|
||||
else:
|
||||
show the authored local confirmation dialog
|
||||
if accepted: send parameterless game action 0x0279
|
||||
|
||||
suicide_response(weenie_error):
|
||||
if code == 0x004A:
|
||||
display "Ack! You killed yourself!"
|
||||
```
|
||||
|
||||
`0x004A` is an informational success response, despite arriving through the
|
||||
WeenieError message family. Retail's own error-string table contains that exact
|
||||
text; exposing the numeric fallback makes a successful `/die` look like a
|
||||
failure.
|
||||
|
||||
```text
|
||||
query_age_response(name, duration):
|
||||
if name is empty: display "You have played for {duration}."
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue