Speaker
Speech Board: multi-line chat records with custom names, one key each, sent in order. In-place key binding, one-key send-all/stop toggle, JSON save, zh/en UI. / 一鍵發言:多行台詞記錄綁定按鍵,按一次即按順序快速發出,支援介面內綁鍵、一鍵全部發送/停止與 JSON 存檔,繁中/英文介面。
| Last updated | a week ago |
| Total downloads | 35 |
| Total rating | 0 |
| Categories | Mods Client-side Language: EN Language: CN Custom Menus |
| Dependency string | starwish-Speaker-1.1.0 |
| Dependants | 0 other packages depend on this package |
README
一键发言 · Speech Board
泰坦陨落 2 · 北极星(Northstar)客户端 mod 把常用台词存成「一条记录 = 一个按键 + 多行消息」,对局中按一次键,整条记录按顺序快速发出。
Titanfall 2 · Northstar client mod Save your usual callouts as records — one record is a custom name, one key, and multiple message lines. Press that key once in a match and the whole record is sent in order.
starwish9527.Speaker · v1.1.0 · Requires Northstar
功能 · Features
| 中文 | English |
|---|---|
| 一条记录 = 自定义名字 + 一个按键 + 多行消息 | One record = a custom name + one key + multiple message lines |
| 对局中按一次键,整条记录的多行消息按顺序快速发出 | Press the key once; every line of that record is sent in order |
| 「全部发送 / 停止发送」共用一个键来回切换 | One key toggles between "send all" and "stop" |
| 按键在 mod 界面里直接绑定,几乎任何键都能绑 | Bind keys directly in the mod UI — almost any key works |
| 记录保存在可手动编辑的 JSON 里 | Records are stored in a hand-editable JSON file |
| 界面支持繁中 / 英文 | UI available in Traditional Chinese and English |
中文说明
安装
-
确保已安装 Northstar 客户端;
-
把
starwish9527.Speaker整个文件夹放进:<泰坦陨落2安装目录>/R2Northstar/mods/ -
启动游戏。主菜单左下角会出现 一键发言 入口(手柄为 LB), 「模组 / Mods」菜单里也有同样的入口。
从 Thunderstore 安装的话,用 Northstar 的 Mods 管理器或直接解压到上面这个目录即可。
使用
编辑记录
- 打开「一键发言」界面;
- 左栏是记录列表,点击选中一条;
- 右栏上方填 记录名,中间填 消息内容 —— 一行一条,下方是 按键绑定;
- 左栏右下角是 新增 / 删除 记录。
绑定按键
右侧底部是 按鍵綁定:… 按钮 —— 给当前选中的这条记录绑键。 点它之后变成「請按下要綁定的按鍵」,按下想用的键即可。
「全部发送 / 停止发送」不占界面按钮,改为在设置 → 控制 → 按键绑定的 SPEECH BOARD 分组里绑定:
-
一鍵發言:全部發送 / 停止(同一鍵切換) —— 空闲时按下=依次发出全部记录,正在连发时按下=立刻停止;
-
一鍵發言:中斷 —— 只做中断。
-
Esc取消这次绑定 -
Del清除这条记录的绑定 -
字母、数字、F1–F12、小键盘、方向键、符号键、修饰键……几乎所有键都能绑
-
如果某个键已经被游戏占用,绑定会覆盖它(想找回原绑定可在「设置 → 控制 → 按键绑定」里改)
在游戏里使用
选中记录的按键后,对局中按一下,这条记录的多行消息就会按顺序快速发出(默认每条间隔 0.35 秒)。 「全部发送 / 停止」键则是一次发出所有记录,再按一次立刻停下。
数据文件
记录保存在游戏目录下(Northstar 的 mod 存档区):
<Titanfall2>/R2Northstar/save_data/starwish9527.Speaker/speaker_data.json
格式(可以手动编辑,游戏内用 speaker_reload 重新读取):
{
"version": "1",
"count": "2",
"all_key": "F12",
"r1_name": "打招呼",
"r1_key": "F1",
"r1_text": "收到!\n干得漂亮!\nGG",
"r2_name": "战术",
"r2_key": "F2",
"r2_text": "小心狙击手\n我来占点"
}
all_key全部发送 / 停止的切换键(留空 = 未绑定);rN_name记录名,rN_key绑定的按键(留空 = 未绑定),rN_text消息内容;rN_text里用\n分隔多条消息,每一条会作为单独一条聊天发出。
为什么不是「一条聊天里带换行」?因为泰坦陨落 2 的聊天面板是行缓冲、消息要经单行指令通道传输, 换行会破坏解析。所以设计成「一条记录 = 多条聊天,按顺序快速发出」。 详见 DEVELOPMENT.md 第 9 节的调研。
控制台命令
| 命令 | 作用 |
|---|---|
speaker_say <N> |
发出第 N 条记录(绑定按键实际执行的就是它) |
speaker_say_all |
按顺序发出全部记录 |
speaker_toggle |
一个键切换:没在连发就全部发出,正在连发就停止 |
speaker_stop |
中断正在进行的连发 |
speaker_reload |
重新读取数据文件 |
speaker_status |
打印当前记录、绑定与存档路径 |
speaker_test_say |
聊天通道测试 A(客户端 say) |
speaker_test_impersonate |
聊天通道测试 B(服务端 Chat_Impersonate) |
配置项
| ConVar | 默认 | 说明 |
|---|---|---|
speaker_line_delay |
0.35 |
同一记录内多条消息之间的间隔秒数,越小越快 |
speaker_team_chat |
0 |
1 = 发到团队频道,0 = 全体频道 |
speaker_send_mode |
0 |
0 = 客户端 say(推荐);1 = 服务端 Chat_Impersonate |
speaker_debug |
0 |
1 = 启动时在日志里打印界面布局与按键绑定自检 |
想改就把这些写进 R2Northstar/mod/cfg/autoexec_ns_client.cfg(或游戏内控制台直接输入)。
常见问题
Q:按下绑定键没反应?
A:先确认记录里确实有消息内容(列表行尾的 (N) 是消息条数,(0) 表示空的)。再确认绑定按钮上显示的是键名而不是「未設定」。若仍然无效,用 speaker_status 看绑定是否写进去了。
Q:聊天里没出现我发的话?
A:先用 speaker_test_say 测通道 A。如果没反应,把 speaker_send_mode 设为 1 走通道 B —— 通道 B 需要服务端也装了本 mod(私人房/自建服务器满足;进别人的服务器不满足)。
Q:绑定的键和原来的功能冲突了? A:绑定会直接覆盖。mod 界面里能绑的键很多,建议优先用小键盘或 F 区这类平时不用的键。 想恢复原绑定:在「设置 → 控制 → 按键绑定」里改回去。
Q:改完记录忘了保存就退出了? A:退出时会弹窗问你要不要保存,选「保存并退出」即可。
Q:想批量改台词?
A:直接用文本编辑器改 speaker_data.json(注意 \n 是转义换行),然后在游戏里执行 speaker_reload。
兼容性与依赖
- 需要 Northstar 客户端;无其它 mod 依赖。
- 聊天通道 B 需要服务端加载本 mod,通道 A(默认)不需要。
- 与 Northstar 官方 mod、DemoManager 等共存测试通过。
- 已知限制:
- 游戏里极少数字符会被过滤(
";%与换行),以避免破坏指令解析; - 同一按键只能属于一条记录,「全部发送 / 停止」键与记录按键互斥,重复绑定会自动解除旧的。
- 游戏里极少数字符会被过滤(
English Guide
Installation
-
Install the Northstar client.
-
Drop the whole
starwish9527.Speakerfolder into:<Titanfall2 install dir>/R2Northstar/mods/ -
Launch the game. A Speech Board entry appears in the bottom-left footer of the main menu (LB on a controller), and in the Mods menu as well.
If you install from Thunderstore, just unzip it into that same folder.
Usage
Editing records
- Open the Speech Board menu.
- The left panel lists your records — click one to select it.
- On the right: the record name on top, the message content (one line per message) in the middle, and the key bind at the bottom.
- The bottom-right of the left panel has Add / Delete.
Binding keys
The bind button at the bottom of the right panel — Key bind: … — binds a key to the currently selected record. Click it and it turns into "Press the key to bind", then press the key you want.
Send-all / stop is not a UI button; bind it from Settings → Controls → Key Bindings, group SPEECH BOARD:
-
Speech Board: send all / stop (toggle) — press while idle to send every record in order, press again to stop immediately;
-
Speech Board: stop — stop only.
-
Esccancels the capture -
Delclears the binding -
Letters, digits, F1–F12, the numpad, arrow keys, symbol keys, modifiers… almost anything works
-
If the key is already used by the game, this bind overwrites it. Restore the original in Settings → Controls → Key Bindings.
Using it in a match
Press a record's key in a match and its message lines are sent in order (0.35 s apart by default). The send-all/stop key sends every record at once; press it again to stop immediately.
Data file
Records live next to your other Northstar mod saves:
<Titanfall2>/R2Northstar/save_data/starwish9527.Speaker/speaker_data.json
Format (hand-editable — run speaker_reload in-game to reload it):
{
"version": "1",
"count": "2",
"all_key": "F12",
"r1_name": "Hello",
"r1_key": "F1",
"r1_text": "Copy that!\nNice one!\nGG",
"r2_name": "Tactics",
"r2_key": "F2",
"r2_text": "Sniper!\nCapping the point"
}
all_key— the send-all/stop toggle key (empty = unbound);rN_name— record name,rN_key— bound key (empty = unbound),rN_text— message content;\ninsiderN_textseparates messages, and each one is sent as its own chat message.
Why not a single chat message containing newlines? Titanfall 2's chat panel is line-buffered and messages travel through a single-line command channel, so embedded newlines break parsing. That is why one record becomes several chat messages sent in quick succession. See section 9 of DEVELOPMENT.md (Chinese) for the research.
Console commands
| Command | Effect |
|---|---|
speaker_say <N> |
Send record N (this is what a bound key runs) |
speaker_say_all |
Send every record in order |
speaker_toggle |
One-key toggle: send all when idle, stop when sending |
speaker_stop |
Abort the current burst |
speaker_reload |
Re-read the data file |
speaker_status |
Print records, bindings and the save path |
speaker_test_say |
Test chat channel A (client say) |
speaker_test_impersonate |
Test chat channel B (server Chat_Impersonate) |
ConVars
| ConVar | Default | Meaning |
|---|---|---|
speaker_line_delay |
0.35 |
Seconds between messages inside one record; lower is faster |
speaker_team_chat |
0 |
1 = team chat, 0 = all chat |
speaker_send_mode |
0 |
0 = client say (recommended); 1 = server Chat_Impersonate |
speaker_debug |
0 |
1 = print a layout and key-bind self-test to the log at startup |
Put them in R2Northstar/mod/cfg/autoexec_ns_client.cfg, or type them in the in-game console.
FAQ
Q: Pressing my bound key does nothing.
A: Make sure the record actually has content (the (N) at the end of a list row is its message
count — (0) means empty), and that the bind button shows a key name instead of "not set".
Run speaker_status to check whether the bind was written.
Q: My messages never show up in chat.
A: Test channel A with speaker_test_say. If nothing happens, set speaker_send_mode to 1 to
use channel B — channel B requires the server to have this mod installed (fine on your own
listen server or private match, not on someone else's server).
Q: My bound key conflicts with a vanilla action. A: The bind overwrites it. Prefer keys you never use, such as the numpad or the F-row. To restore the original, rebind it in Settings → Controls → Key Bindings.
Q: I forgot to save before leaving. A: The menu asks on exit — choose "Save and exit".
Q: I want to edit all my lines at once.
A: Edit speaker_data.json in a text editor (\n is an escaped newline), then run
speaker_reload in-game.
Compatibility
- Requires the Northstar client; no other mod dependencies.
- Chat channel B needs the mod on the server; channel A (the default) does not.
- Tested alongside Northstar's bundled mods and DemoManager.
- Known limitations:
- A few characters are stripped (
",;,%and newlines) so the command channel stays intact; - A key can belong to only one record, and it is mutually exclusive with the send-all/stop key — rebinding a key automatically releases its previous owner.
- A few characters are stripped (
更新日志 · Changelog
1.1.0
- 新增:文字颜色 —— 颜色框填颜色码(6 位十六进制或 ANSI 码),整条记录发送时上色
- 新增:就地按键绑定扩展到 105 个按键(字母、数字、符号、修饰键),无需跳转原生绑定页
- 新增:发送守卫 —— 不在多人对局中时不发送,避开引擎在服务器 VM 切换窗口的崩溃
- 新增:保存按钮按脏状态显隐 —— 有未保存修改才出现,与退出时的保存询问共用同一状态
- 修正:彩色输出为空(净化顺序)、彩色输出不生效(发送路径未使用记录颜色)
- Added: message colours — set a colour code (6-digit hex or ANSI) and the whole record is coloured when sent
- Added: in-place key binding for 105 keys (letters, digits, symbols, modifiers)
- Added: send guard — refuses to send outside a live multiplayer match, avoiding an engine crash during server VM transitions
- Added: the Save button appears only when there are unsaved changes, sharing one state with the exit confirmation
- Fixed: empty coloured output (sanitise order) and colours not applied on send 1.0.0
- 首次发布:多行记录 + 按键绑定 + 就地捕获全部按键 + JSON 存档 + 中英文界面
- Initial release: multi-line records, in-place key binding for (almost) every key, JSON save file, Chinese/English UI
许可 · License
CC0-1.0(可自由使用、修改、再发布 / free to use, modify and redistribute)
联系 / 反馈 · Contact
- 仓库 Repository:https://gitee.com/starwish9527/speaker
- 邮箱 E-mail:[email protected] 或 [email protected]
欢迎反馈问题与建议 / Bug reports and suggestions are welcome.