7.4 KiB
TWS T6 Zombies scripts
Plutonium T6 versions of the T5 server scripts. Defaults live in the scripts, just like T5. There is no separate TWS config file or database setup.
| File | Role | Dependencies |
|---|---|---|
tws_t6_common.gsc |
Shared HUD values, helpers, .help, connection and first-spawn dispatchers |
Stock T6 |
tws_t6_hud.gsc |
Match/round timers, name, zombie count and health bar | Common |
tws_t6_afk.gsc |
.afk / .back, protection, movement and weapon blocking |
Common |
tws_t6_lock.gsc |
Lock at round 20; clear password on game over | Common, HUD |
tws_t6_telemetry.gsc |
Async queued game reports (game_start/heartbeat/round_change/game_end) | t6-gsc-utils |
tws_t6_join.gsc |
.join chat command lets a spectator newcomer enter mid-match once |
Common |
tws_t6_leaderboard.gsc |
Private map high-round record and every tied holder on connection | Common, t6-gsc-utils |
Install
- Copy all seven
tws_t6_*.gscfiles intoPlutonium/storage/t6/scripts/zm/. Update common along with leaderboard. - For telemetry or leaderboard, install t6-gsc-utils v3.1.1
in
Plutonium/plugins/and restart the server process. The other five scripts do not require that plugin. - Restart the map to load script updates.
If upgrading from the earlier leaderboard filename, remove
tws_leaderboard.gsc from the T6 server script directory before installing
tws_t6_leaderboard.gsc, so both copies do not load.
If updating an existing deployment, remove tws_t6_db.gsc and
tws_t6_bank.gsc from the server script directory. Copying the remaining files
will not remove those old scripts. Remove any exec server.example.cfg added for
the earlier version. Neither a database nor that config file is used anymore.
Source .gsc files load directly under Plutonium's
documented T6 script layout.
Keep the filenames and scripts/zm location so shared references resolve.
To omit telemetry, remove its script; disabling it at runtime does not remove
its plugin dependency during linking. The same rule applies to leaderboard.
Map record announcements
tws_t6_leaderboard.gsc reads the public Electric Cherry API without credentials.
It works independently of telemetry and HUD, and privately announces records
once per connection, including newcomers waiting in spectator mode.
Map selection uses stock level.scr_zm_ui_gametype and
level.scr_zm_map_start_location, falling back to the corresponding
ui_gametype / ui_zm_mapstartlocation dvars when absent. For example,
zstandard + town selects t6:zm_transit:town, while zclassic + transit
selects TranZit. Survival, Grief and Turned variants follow Electric Cherry's
catalogue. An unknown mode/location is logged instead of guessing from the engine
map. Use tws_leaderboard_map_key for a custom registered selection if needed.
The plugin must expose httpPost (with the GET method override), jsonParse,
typeof and formatString. Shared configuration, caching and validation
apply to both versions. All T6 script filenames use the tws_t6_ prefix.
Chat commands
Type .help in chat to see the commands supplied by the loaded TWS modules and
a short description of each. The list is shown only to the requesting player,
including spectators who have not spawned. Commands are case-insensitive.
Help appears below the health bar for 12 seconds, clear of the timers, zombie
counter and health display. Typing .help again restarts that display time.
| Command | Description |
|---|---|
.help |
List available commands |
.afk |
Pause with protection |
.back |
Return from AFK |
.join |
Join mid-round (newcomers only) |
AFK and Join register their commands during init() through
tws_t6_common::register_help_command(command, description). If a module is
omitted, its commands are omitted from .help. Register new commands alongside
their module's initialization so the list stays current.
Defaults, matching T5
- HUD values live in
tws_t6_common::common_config(). That function andensure_config()came from T5; they initialize in-script values and do not load a config file. The requested fullscreen corner alignment is retained. - AFK uses T5's native
level waittill("say", message, player)listener..backrestores movement and weapons immediately, then ends protection after two seconds. The T6 control/weapon fix remains in place. - Lock uses T5's HUD round/game-over notifications. Default threshold is 20.
As in T5, it clears
g_passwordat startup and game over. - Telemetry is enabled by default and posts to
http://192.168.1.199:3000/api/telemetry. Settws_server_idto the exact, case-sensitive Electric Cherry registry name; missing or overlong names disable reporting with a console diagnostic.
The optional dvars already present in T5 are still supported: tws_lock_round,
tws_server_id, tws_telemetry_url, and tws_telemetry_enabled (0 disables
telemetry). None require a separate config file. If earlier settings are already
set on the server, they still override these defaults.
Round telemetry
Telemetry runs directly in GSC using t6-gsc-utils. Configure the exact Electric Cherry registry name and full endpoint in your existing server configuration:
set tws_server_id "t6_zombie_town_1"
set tws_telemetry_url "http://192.168.1.199:3000/api/telemetry"
It sends four event types over the life of a match, mirroring the T5 script:
| Event | When | Round in payload |
|---|---|---|
game_start |
First playable spawn | omitted |
heartbeat |
Every 30s while the match is in progress | current round |
round_change |
Every new positive round | new round |
game_end |
end_game / game_ended / intermission |
final round |
Each event payload includes event, server, map, round (except game_start)
and a players array with name, guid, kills, headshots, downs, revives
and score per player. guid reads Plutonium's player.guid engine property
(T5 uses the player getGuid() method — T6 has no such method, but the field is
equivalent for identity purposes). kills/headshots/downs/revives read
from player.stats[] if a mod populates it, otherwise 0.
Delivery is asynchronous with a sequenced FIFO queue and one in-flight request.
The queue survives the game-end signal so the final snapshot drains. There is no
automatic retry: the receiver may already have accepted the event. Transport
success reports the HTTP call finished, not that the API accepted it. Increase
tws_telemetry_log_level to 2 for per-event capture/queue/response logging;
set to 0 to silence non-error output.
.join for newcomers
Late connectors who never got a spawn can type .join in chat to leave spectator
mode before the round ends, once per connection. .join is rejected if the player
has already played, if the game is not running, if no active player is alive, or
during intermission. The script hooks the stock spectator_respawn path via
level.custom_spawnplayer; it does not skip the map-authored spawn callback if
another mod installed one first.
Validation
To compile all seven scripts for T6 PC with gsc-tool:
.\tools\check.ps1 -CompilerPath C:\path\to\gsc-tool.exe
Compilation does not verify engine/plugin linking or gameplay. T6 differences, research sources and live checks are in NOTES.md.