聊天栏命令
PracLab 通过拦截全局聊天(say)与队伍聊天(say_team)来识别玩家指令。所有命令均支持以下两种前缀形式,大小写不敏感:
命令总览
Practice 模式控制
| 命令 |
别名 |
功能 |
.prac |
— |
加载练习配置,开启 practice 模式 |
地图管理
| 命令 |
别名 |
功能 |
.map |
— |
显示可用地图列表(仅发送者可见) |
.inferno |
— |
切换到「炼狱小镇」(de_inferno) |
.mirage |
— |
切换到「荒漠迷城」(de_mirage) |
.nuke |
— |
切换到「核子危机」(de_nuke) |
.ancient |
— |
切换到「远古遗迹」(de_ancient) |
.vertigo |
— |
切换到「殒命大厦」(de_vertigo) |
.anubis |
— |
切换到「阿努比斯」(de_anubis) |
.dust2 |
— |
切换到「炙热沙城2」(de_dust2) |
.train |
— |
切换到「列车停放站」(de_train) |
.cache |
— |
切换到「死城之谜」(de_cache) |
机器人管理
| 命令 |
别名 |
功能 |
.bot |
— |
在玩家位置生成一个 bot |
.crouchbot |
.cbot |
在玩家位置生成一个蹲着的 bot |
.kickall |
— |
移除所有 bot |
.kick |
— |
移除准星指向的 bot |
道具与环境
| 命令 |
别名 |
功能 |
.clear |
— |
清除所有的道具 |
.break |
.br |
破坏所有可破坏实体 |
时间与无敌
| 命令 |
别名 |
功能 |
.fastforward |
.ff |
启动 10 倍速服务器时间倍速,持续 20 秒后自动还原 |
.noflash |
— |
切换该玩家的闪光弹免疫(事件驱动,其他玩家不受影响) |
.god |
— |
切换该玩家无敌模式 |
出生点传送
| 命令 |
别名 |
功能 |
.spawn <N> |
.s |
传送到同队第 N 个出生点(缺省 N=1) |
.ctspawn <N> |
.cts |
传送到 CT 方第 N 个出生点 |
.tspawn <N> |
.ts |
传送到 T 方第 N 个出生点 |
.bestspawn |
.bs |
传送到最近的己方出生点 |
.worstspawn |
.ws |
传送到最远的己方出生点 |
.bestctspawn |
.bcts |
传送到最近的 CT 方出生点 |
.worstctspawn |
.wcts |
传送到最远的 CT 方出生点 |
.besttspawn |
.bts |
传送到最近的 T 方出生点 |
.worsttspawn |
.wts |
传送到最远的 T 方出生点 |
出生点方框
| 命令 |
别名 |
功能 |
.showspawns |
— |
重新显示双方出生点方框(prac 模式开启时自动显示) |
.hidespawns |
— |
隐藏出生点方框 |
E 键传送:对准方框按下使用键(默认 E)即可传送到该出生点,聊天栏提示「已传送到第 N 个出生点」。CT 和 T 方框均为绿色,方框中心显示序号(按地图配置旋转)。prac 模式下不限制队伍,玩家可瞄准任一方框传送。方框仅显示竞技模式出生点(与 .spawn 系列命令一致)。
队伍切换
| 命令 |
别名 |
功能 |
.watch |
.fas |
强制所有其他玩家进入观察者模式,仅保留命令使用者活动 |
道具重投与位置回溯
| 命令 |
别名 |
功能 |
.rethrow |
.rt |
重新投掷玩家最后投掷的道具 |
.rethrowsmoke |
.rethrows |
仅重投最后投掷的烟雾弹 |
.rethrownade |
.rethrown |
仅重投最后投掷的手雷 |
.rethrowflash |
.rethrowf |
仅重投最后投掷的闪光弹 |
.rethrowmolotov |
.rethrowm |
仅重投最后投掷的燃烧瓶 |
.rethrowdecoy |
.rethrowd |
仅重投最后投掷的诱饵弹 |
.last |
.ls |
传送回最后投掷道具的位置 |
Dryrun 与回合控制
| 命令 |
别名 |
功能 |
.dryrun |
.dry |
从 prac 模式临时切换到竞技配置打一个回合,回合结束自动回到 prac 模式 |
.restartround |
.rr |
重新开始当前回合(执行 mp_restartgame) |
Dryrun 流程:踢出所有 bot → 关闭 prac 特有 ConVar(sv_cheats、traj、infinite_ammo 等)→ 加载 dryrun.cfg 竞技配置 → 重启回合开始;回合结束(EventRoundEnd)自动恢复 prac 配置。用于在练习中快速打一个真竞技回合。
回放系统
| 命令 |
别名 |
功能 |
.record |
— |
进入待录制状态,玩家移动或按 F 键(检视键)开始录制,再次按 F 或 .stoprecord 停止并保存 |
.stoprecord |
— |
停止录制并保存(与按 F 键等效) |
.replay [Id] |
— |
无参数:并行回放所有已停止的录制;指定 Id:仅回放该录制。自动创建同队 Bot 作为回放载体 |
.stopreplay |
— |
停止所有正在进行的回放并踢出对应 Bot |
.clearrecord <Id> |
— |
删除指定 Id 的录制(同时删除 JSON 文件与列表条目) |
.clearrecordall |
— |
清除所有录制 |
.currentrecord |
.currentrec |
在服务器控制台输出录制列表表格(ID / 名称 / 状态 / Bot) |
二层架构:回放系统由两部分组成——
- Layer 1(CSSharp C#):命令分发、UI 提示、录制文件 JSON 读写(
cfg/PracLab/recordings/)。
- Layer 2(C++ Metamod 插件
PracLabReplayEngine):通过 Hook ProcessMovement、CCSBot::Update、PlayerRunCommand 等引擎函数实现帧级移动录制与回放。
跨语言 ABI 契约见 replay-engine/include/praclab_replay.h,修改字段顺序/类型须同步更新两层代码。
回放引擎未部署时:所有 .record/.replay/... 命令会向玩家提示「回放引擎未加载,回放功能不可用」,但插件其他功能不受影响。
计时器
| 命令 |
别名 |
功能 |
.timer |
— |
开始计时;再次输入 .timer 时停止并向玩家打印耗时 |
ConVar 切换
| 命令 |
别名 |
功能 |
.solid |
— |
切换 mp_solid_teammates(队友碰撞) |
.impacts |
— |
切换 sv_showimpacts(显示子弹命中点) |
.traj |
— |
切换 sv_grenade_trajectory_prac_pipreview(显示投掷物轨迹) |
帮助
| 命令 |
别名 |
功能 |
.help |
— |
在聊天栏分类显示所有可用指令(仅发送者可见) |