Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d15bc50b7d | ||
|
|
2123b8f4d5 |
@@ -6,6 +6,58 @@ T5/T6 script and each native plugin. Current versions are recorded in
|
||||
|
||||
## 2026-10-13
|
||||
|
||||
### Shorter Discord URL
|
||||
|
||||
| Component | Version | Affected source |
|
||||
| --- | --- | --- |
|
||||
| `tws_t5_hud.gsc` | `1.1.2` | `t5/scripts/tws_t5_hud.gsc` |
|
||||
| `tws_t6_hud.gsc` | `1.1.2` | `t6/scripts/tws_t6_hud.gsc` |
|
||||
|
||||
- Both games replace the displayed Discord URL with `https://discord.tws.lol`.
|
||||
Keep the smaller font and muted gray introduced in the already-uploaded
|
||||
`1.1.1` release.
|
||||
- Compatibility: no new dependency requirement; matching common `1.1.0+`
|
||||
remains required. Deployment: copy each updated HUD script and restart the
|
||||
map. No plugin update or full server-process restart is required. No
|
||||
deployment of `1.1.2` performed here; GSC compilation and live T5/T6 display
|
||||
verification remain required.
|
||||
|
||||
### More subtle Discord label
|
||||
|
||||
| Component | Version | Affected source |
|
||||
| --- | --- | --- |
|
||||
| `tws_t5_hud.gsc` | `1.1.1` | `t5/scripts/tws_t5_hud.gsc` |
|
||||
| `tws_t6_hud.gsc` | `1.1.1` | `t6/scripts/tws_t6_hud.gsc` |
|
||||
|
||||
- Both games reduce the top-left Discord URL font scale from `1.4` to `1.2`
|
||||
and darken its neutral gray from `(0.85, 0.85, 0.85)` to `(0.65, 0.65, 0.65)`.
|
||||
The label keeps its position and connection lifetime; other HUD text is
|
||||
unaffected.
|
||||
- Compatibility: no new dependency requirement; matching common `1.1.0+`
|
||||
remains required. Deployment: copy each updated HUD script and restart the
|
||||
map. No plugin update or full server-process restart is required. The user
|
||||
reports `1.1.1` has been uploaded; GSC compilation and live T5/T6 appearance
|
||||
verification have not been performed here.
|
||||
|
||||
### Simplified bank balance message
|
||||
|
||||
| Component | Version | Affected source |
|
||||
| --- | --- | --- |
|
||||
| `tws_t5_bank.gsc` | `2.0.3` | `t5/scripts/tws_t5_bank.gsc` |
|
||||
| `tws_t6_bank.gsc` | `2.0.3` | `t6/scripts/tws_t6_bank.gsc` |
|
||||
|
||||
- Both games now display `.b` as `Bank: {balance} points`, retaining the
|
||||
existing colors and omitting the available amount. Update startup version
|
||||
reporting and the existing balance-message fixtures. API data and point
|
||||
accounting are unchanged.
|
||||
- Validation: all 42 portable bank script fixture groups passed with
|
||||
`node tools/check_bank.mjs`, including exact balance text for both games.
|
||||
- Compatibility: no new dependency requirement; matching TWS plugins `1.2.0+`
|
||||
remain required. Deployment: copy each updated bank script and restart the
|
||||
map. No plugin update or full server-process restart is required for this
|
||||
change. No deployment performed; GSC compilation and live T5/T6 display
|
||||
verification remain required.
|
||||
|
||||
### Bank failure diagnostics — TWS #14
|
||||
|
||||
| Component | Version | Affected source |
|
||||
|
||||
@@ -269,7 +269,7 @@ startup. `bankVersion()` is a new linking requirement even when the bank is
|
||||
disabled by dvar. No EC/agent change or new third-party dependency is required;
|
||||
existing bank API, common/telemetry and endpoint-migration requirements still apply.
|
||||
Verify deployed DLL and GSC SHA-256 hashes against the built release artifacts,
|
||||
and confirm startup reports `script=2.0.2 plugin=1.2.0` before interpreting results.
|
||||
and confirm startup reports `script=2.0.3 plugin=1.2.0` before interpreting results.
|
||||
An old bank script checksum on Ascension was reported in issue #14; deploying
|
||||
only the DLL does not update GSC. No deployment was performed here.
|
||||
|
||||
|
||||
@@ -56,12 +56,12 @@ invalid identities fail privately without changing points. Follow the shared
|
||||
|
||||
## Persistent Discord text
|
||||
|
||||
The HUD shows `https://discord.thewrightserver.net` in small light-gray text
|
||||
The HUD shows `https://discord.tws.lol` in small muted-gray text
|
||||
at the top-left, including for newcomers waiting in spectator mode. The label
|
||||
is created once per connection and persists across death and respawn. The
|
||||
gameplay HUD starts one line lower, keeping timers, help and records clear.
|
||||
Install HUD and common `1.1.0` together, then restart the map; no plugin update
|
||||
or full server-process restart is required.
|
||||
Install HUD `1.1.2` with common `1.1.0` or later, then restart the map; no plugin
|
||||
update or full server-process restart is required.
|
||||
|
||||
## Map record announcements
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ init()
|
||||
credentials = "valid";
|
||||
if (level.bank_token.size < 40 || getSubStr(level.bank_token, 0, 8) != "ec_bank_")
|
||||
credentials = "invalid";
|
||||
print("[tws_bank] startup script=2.0.2 plugin=" + bankVersion() +
|
||||
print("[tws_bank] startup script=2.0.3 plugin=" + bankVersion() +
|
||||
" endpoint=" + level.bank_url + " server=" + bank_log_token(level.bank_server) +
|
||||
" credentials=" + credentials);
|
||||
// A private per-server cfg supplies this; never embed bank credentials.
|
||||
@@ -179,7 +179,7 @@ bank_transfer(entry, args)
|
||||
if (!isDefined(reply) || reply["state"] != "balance")
|
||||
bank_say(entry, "^3Bank unavailable. Your points are unchanged.");
|
||||
else
|
||||
bank_say(entry, "^3Bank: ^7" + reply["balance"] + " ^3points; available: ^7" + reply["amount"]);
|
||||
bank_say(entry, "^3Bank: ^7" + reply["balance"] + " ^3points");
|
||||
return;
|
||||
}
|
||||
if (args.size != 2)
|
||||
|
||||
@@ -23,8 +23,8 @@ hud_discord()
|
||||
self endon("disconnect");
|
||||
|
||||
label = scripts\sp\tws_t5_common::make_text_elem(
|
||||
self, 10, 10, "left", level.hud_font_small, level.hud_c_label);
|
||||
label SetText("https://discord.thewrightserver.net");
|
||||
self, 10, 10, "left", 1.2, (0.65, 0.65, 0.65));
|
||||
label SetText("https://discord.tws.lol");
|
||||
|
||||
elems = [];
|
||||
elems[elems.size] = label;
|
||||
|
||||
@@ -69,12 +69,12 @@ populates that field before the `connected` notification. Follow the shared
|
||||
|
||||
## Persistent Discord text
|
||||
|
||||
The HUD shows `https://discord.thewrightserver.net` in small light-gray text
|
||||
The HUD shows `https://discord.tws.lol` in small muted-gray text
|
||||
at the top-left, including for newcomers waiting in spectator mode. The label
|
||||
is created once per connection and persists across death and respawn. The
|
||||
gameplay HUD starts one line lower, keeping timers, help and records clear.
|
||||
Install HUD and common `1.1.0` together, then restart the map; no plugin update
|
||||
or full server-process restart is required.
|
||||
Install HUD `1.1.2` with common `1.1.0` or later, then restart the map; no plugin
|
||||
update or full server-process restart is required.
|
||||
|
||||
## Map record announcements
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ init()
|
||||
credentials = "valid";
|
||||
if (level.bank_token.size < 40 || getSubStr(level.bank_token, 0, 8) != "ec_bank_")
|
||||
credentials = "invalid";
|
||||
println("[tws_bank] startup script=2.0.2 plugin=" + bankVersion() +
|
||||
println("[tws_bank] startup script=2.0.3 plugin=" + bankVersion() +
|
||||
" endpoint=" + level.bank_url + " server=" + bank_log_token(level.bank_server) +
|
||||
" credentials=" + credentials);
|
||||
// A private per-server cfg supplies this; never embed bank credentials.
|
||||
@@ -184,7 +184,7 @@ bank_transfer(entry, args)
|
||||
if (!isDefined(reply) || reply["state"] != "balance")
|
||||
bank_say(entry, "^3Bank unavailable. Your points are unchanged.");
|
||||
else
|
||||
bank_say(entry, "^3Bank: ^7" + reply["balance"] + " ^3points; available: ^7" + reply["amount"]);
|
||||
bank_say(entry, "^3Bank: ^7" + reply["balance"] + " ^3points");
|
||||
return;
|
||||
}
|
||||
if (args.size != 2)
|
||||
|
||||
@@ -25,8 +25,8 @@ hud_discord()
|
||||
self endon("disconnect");
|
||||
|
||||
label = scripts\zm\tws_t6_common::make_text_elem(
|
||||
self, 10, 10, "left", level.hud_font_small, level.hud_c_label);
|
||||
label SetText("https://discord.thewrightserver.net");
|
||||
self, 10, 10, "left", 1.2, (0.65, 0.65, 0.65));
|
||||
label SetText("https://discord.tws.lol");
|
||||
|
||||
elems = [];
|
||||
elems[elems.size] = label;
|
||||
|
||||
@@ -188,7 +188,7 @@ for (const game of ['t5','t6']) {
|
||||
});
|
||||
test('startup reports versions, scope, credential validation and journal count safely', () => {
|
||||
const e = engine(game);
|
||||
assert.match(e.logs.join('\n'), /script=2\.0\.2 plugin=1\.2\.0/);
|
||||
assert.match(e.logs.join('\n'), /script=2\.0\.3 plugin=1\.2\.0/);
|
||||
assert(e.logs.some(line => line.includes(`endpoint=${publicEndpoint} server=server credentials=valid`)));
|
||||
assert(e.logs.some(line => line.includes('journal_load=success pending=0')));
|
||||
const invalid = engine(game, {dvars:{tws_bank_token:'secret-invalid-token'}});
|
||||
@@ -304,11 +304,11 @@ for (const game of ['t5','t6']) {
|
||||
const e=engine(game); e.c.level.telemetry_match=undefined; e.run(['.d','all']); assert.equal(e.sent.length,0);
|
||||
});
|
||||
test('balance reads do not journal or alter points', () => {
|
||||
const e=engine(game); e.run(['.b']); assert.equal(e.saved.length,0); assert.equal(e.player.score,3000); assert.match(e.messages[0],/5000/);
|
||||
const e=engine(game); e.run(['.b']); assert.equal(e.saved.length,0); assert.equal(e.player.score,3000); assert.equal(e.messages[0], '^3Bank: ^75000 ^3points');
|
||||
});
|
||||
test('empty balance displays zero and withdrawing all reports insufficient balance', () => {
|
||||
const e = engine(game, {amount:0, balance:0}); e.run(['.b']);
|
||||
assert.equal(e.messages[0], '^3Bank: ^70 ^3points; available: ^70');
|
||||
assert.equal(e.messages[0], '^3Bank: ^70 ^3points');
|
||||
assert.equal(e.saved.length, 0); assert.equal(e.player.score, 3000);
|
||||
const w = engine(game, {amount:0, balance:0, state:'rejected', code:'insufficient_balance'}); w.run(['.w','all']);
|
||||
assert.match(w.messages[0], /Not enough bank balance/);
|
||||
@@ -356,7 +356,7 @@ for (const game of ['t5','t6']) {
|
||||
}
|
||||
assert.equal(ec.requests().length, 0);
|
||||
const e = engine(game, {guid, receiver:ec.request});
|
||||
e.run(['.b']); assert.equal(e.messages[0], '^3Bank: ^70 ^3points; available: ^70');
|
||||
e.run(['.b']); assert.equal(e.messages[0], '^3Bank: ^70 ^3points');
|
||||
e.run(['.w','all']); assert.match(e.messages.at(-1), /Not enough bank balance/);
|
||||
assert.equal(e.player.score, 3000); assert.equal(e.saved[0].decision, 'cancel');
|
||||
e.c.bank_sender().next(); assert.equal(e.saved.length, 0);
|
||||
|
||||
+4
-4
@@ -1,16 +1,16 @@
|
||||
{
|
||||
"tws_t5_afk.gsc": "1.0.0",
|
||||
"tws_t5_bank.gsc": "2.0.2",
|
||||
"tws_t5_bank.gsc": "2.0.3",
|
||||
"tws_t5_common.gsc": "1.1.0",
|
||||
"tws_t5_hud.gsc": "1.1.0",
|
||||
"tws_t5_hud.gsc": "1.1.2",
|
||||
"tws_t5_join.gsc": "1.0.0",
|
||||
"tws_t5_leaderboard.gsc": "1.0.0",
|
||||
"tws_t5_lock.gsc": "1.0.0",
|
||||
"tws_t5_telemetry.gsc": "1.0.0",
|
||||
"tws_t6_afk.gsc": "1.0.0",
|
||||
"tws_t6_bank.gsc": "2.0.2",
|
||||
"tws_t6_bank.gsc": "2.0.3",
|
||||
"tws_t6_common.gsc": "1.1.0",
|
||||
"tws_t6_hud.gsc": "1.1.0",
|
||||
"tws_t6_hud.gsc": "1.1.2",
|
||||
"tws_t6_join.gsc": "1.0.1",
|
||||
"tws_t6_leaderboard.gsc": "1.0.0",
|
||||
"tws_t6_lock.gsc": "1.0.0",
|
||||
|
||||
Reference in New Issue
Block a user