Import T5-AIO and T6 into combined repo
This commit is contained in:
+98
@@ -0,0 +1,98 @@
|
||||
# T6 port notes
|
||||
|
||||
Baseline: the current files in `C:\Users\josh1\Documents\Code\TWS-T5-AIO`.
|
||||
The T5 originals were not modified. DB, bank, their schema and the added example
|
||||
config have been removed from this project.
|
||||
|
||||
## Differences retained for T6 and requested fixes
|
||||
|
||||
| Area | Difference from T5 | Reason |
|
||||
| --- | --- | --- |
|
||||
| Paths | `maps/mp/_utility`, `scripts/zm/tws_t6_common` | T6 namespaces and requested filenames |
|
||||
| Loading | No T5 `zombiemode` dvar gate; each module has `main()` and `init()` | Zombies-only folder loading; avoid r5346 missing-main warnings |
|
||||
| HUD positioning | Fullscreen screen anchors, same 10-unit margin | Requested fix for inset HUD |
|
||||
| HUD rendering | Precached white shader, local max-health fallback, floating-point ratio, `getPlayers()` | T6 rendering/state handling without changing player max health |
|
||||
| Enemy count | Stock `_zm_utility::get_current_zombie_count()` plus queued zombies | Uses the map's zombie team and enemy filters |
|
||||
| Timers | Seed elapsed time for late joiners; stop round watcher/reset on game over | T6 timer behavior; keep frozen timers frozen |
|
||||
| AFK | Maintain control freeze, disable guns/grenades, guard player state and stale grace threads | Requested movement/shooting fix; retain `.afk` / `.back` and two-second grace |
|
||||
| Telemetry | Global `httpPost(url, options)`; no unnecessary common dependency | Avoid raw-loader `http.gsc` and obsolete common-path lookup errors |
|
||||
|
||||
Common retains the T5 HUD constants, helpers and first-spawn dispatcher.
|
||||
HUD again owns the `hud_game_over` notification fan-out. Lock again waits on HUD
|
||||
notifications, applies T5's random password, and clears it on startup/game over.
|
||||
The added password-preservation dvars and independent lock watcher are gone.
|
||||
|
||||
AFK again listens to the native `say` notification, so it no longer needs plugin
|
||||
chat registration. The additional T6 controls are only held while AFK; `.back`
|
||||
releases them before the protection grace period. Restoration is deferred during
|
||||
death/laststand/intermission until active play. Other mods controlling the same
|
||||
invulnerability or weapon flags can still conflict and need live testing.
|
||||
|
||||
The four optional T5 dvars remain; no new configuration switches are introduced.
|
||||
`common_config()` and `ensure_config()` are original T5 in-memory HUD helpers,
|
||||
not an external configuration system.
|
||||
|
||||
## Verified primary sources
|
||||
|
||||
- [Plutonium loading guide](https://plutonium.pw/docs/modding/loading-mods/): T6
|
||||
source scripts load from `storage/t6/scripts/zm`.
|
||||
- [Entry-point lifecycle](https://plutonium.pw/docs/modding/gsc/new-scripting-features/):
|
||||
`main()` runs early; `init()` runs after gametype startup. Empty `main()` must
|
||||
not call `init()` and duplicate initialization.
|
||||
- [Plutonium changelog, r2234](https://plutonium.pw/docs/changelog/): documents T6
|
||||
`level waittill("say", message, player)`.
|
||||
- [Stock T6 Zombies](https://github.com/plutoniummod/t6-scripts/blob/2d8440321602f22f63f5335817110d60ddf223d5/ZM/Core/maps/mp/zombies/_zm.gsc):
|
||||
round state, `end_game`, invulnerability, and stock control resets.
|
||||
- [Stock zombie utility](https://github.com/plutoniummod/t6-scripts/blob/2d8440321602f22f63f5335817110d60ddf223d5/ZM/Core/maps/mp/zombies/_zm_utility.gsc):
|
||||
map-aware enemy counting.
|
||||
- [Released plugin HTTP implementation](https://github.com/alicealys/t6-gsc-utils/blob/v3.1.1/src/component/http.cpp):
|
||||
global `httpPost(url, options)` takes an options array with `body` and `headers`.
|
||||
Its positional README example does not match this implementation.
|
||||
Completion is `done(response, success, error)`; success reports transport only.
|
||||
- [Plugin JSON implementation](https://github.com/alicealys/t6-gsc-utils/blob/v3.1.1/src/component/json.cpp):
|
||||
`jsonSerialize` handles the event payload.
|
||||
|
||||
Do not create a dummy `http.gsc`. An unresolved `httpPost`/`jsonSerialize` means
|
||||
the installed server/plugin must be checked. Installing a DLL requires a full
|
||||
server-process restart, not just a map restart.
|
||||
|
||||
## Telemetry reboot investigation
|
||||
|
||||
The T5 and T6 implementations are not runtime-verified equivalents. In particular,
|
||||
[T6 plugin v3.0.4](https://github.com/alicealys/t6-gsc-utils/blob/v3.0.4/src/component/http.cpp)
|
||||
expects `httpPost(url, body, headers)` and notifies only the response body;
|
||||
v3.1.1 expects `httpPost(url, options)` and also provides success/error values.
|
||||
The current script targets v3.1.1. Switching the function name does not establish
|
||||
compatibility with an unknown installed DLL.
|
||||
|
||||
Console markers identify `main`, `init`, round serialization, HTTP invocation,
|
||||
handle return and completion. They do not log the URL or response body. If startup
|
||||
fails before `main`, inspect the first linker/plugin error, not the last supervisor
|
||||
restart message. If no occupied positive round was observed, this script has not
|
||||
called JSON serialization or HTTP yet.
|
||||
|
||||
Earlier live validation: the operator confirmed successful server startup and
|
||||
Fleet delivery with the original direct reporter. The earlier reboot cause was
|
||||
not established; logging alone should not be treated as a proven fix.
|
||||
|
||||
To recover the server while investigating, move `tws_t6_telemetry.gsc` outside the
|
||||
autoload directory. The enable dvar cannot bypass unresolved native functions
|
||||
at link time. The other four TWS modules can run without telemetry.
|
||||
|
||||
## Checks
|
||||
|
||||
Local: all five files pass gsc-tool 1.4.10 T6 PC compilation; shared references and
|
||||
entry points are checked by `tools/check.ps1`. No live server was run for this
|
||||
baseline simplification. Compiler success does not certify runtime linking.
|
||||
|
||||
Live checks after deploying:
|
||||
|
||||
1. Join, late-join, die/respawn, and reconnect: one HUD per player, correct corner
|
||||
position, health/Juggernog changes, zombies remaining, timers frozen at game over.
|
||||
2. `.afk` blocks movement, shooting and grenades; `.back` restores them. Try rapid
|
||||
toggles, a round transition, death/respawn and game over.
|
||||
3. Lock fires at the threshold and clears on game over/restart. HUD must be installed.
|
||||
T5 semantics intentionally clear an existing password at startup.
|
||||
4. Telemetry sends the initial occupied round and each new round to the existing
|
||||
endpoint. Check server ID/player count, same-round joins and an unreachable API.
|
||||
5. Repeat on the actual server maps, especially afterlife and special-enemy rounds.
|
||||
Reference in New Issue
Block a user