Skip to content

聊天栏命令

PracLab 通过拦截全局聊天(say)与队伍聊天(say_team)来识别玩家指令。所有命令均支持以下两种前缀形式,大小写不敏感:

前缀 示例
. .prac
! !prac

命令总览

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 .cl 清除所有的道具
.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 系列命令一致)。

目标区域绘制

命令 别名 功能
.nadedraw .ndr 三段式绘制立方体目标区域(左键依次确认底面角点/底面斜对角/高度点,右键取消,红色预览/绿色已确认线框,最多 8 个)
.cleardraw .cdr 清除自己所有目标区域(联动清除搜索结果)

立方体语义:底面角点与斜对角确定底面矩形(支持空中取点自动投影到地面),高度点直接取其 z 作为盒体顶面(必须高于底面)。3D 盒体用于表达「窗口闪」「箱上烟」等有高度语义的目标。

投掷物反解搜索

命令 别名 功能
.findall .fa 搜索全部投掷方式 × 力度组合,找出可投进最新目标区域的描点角度
.findnormal .fn 仅搜索普通投掷(.fnl/.fnm/.fnr 分别指定左键/中力/右键力度)
.findjump .fj 仅搜索跳投(.fjl/.fjm/.fjr 指定力度)
.findrunjump .frj 仅搜索前跳投(.frjl/.frjm/.frjr 指定力度)
.findduck .fd 仅搜索蹲下投掷(.fdl/.fdm/.fdr 指定力度)
.findduckjump .fdj 仅搜索蹲下跳投(.fdjl/.fdjm/.fdjr 指定力度)
.findduckrunjump .fdrj 仅搜索蹲下前跳投(.fdrjl/.fdrjm/.fdrjr 指定力度)
.nadeaccuracy .nac 查看/切换搜索精度 low(4°)/ mid(2°+细化)/ high(1°+细化)
.nadetype .nt 查看/切换道具类型 smoke/flash/he/molo/inc/decoy
.nadetest .ntt 投掷校准:登记后 30 秒内投掷,自动识别力度/方式并在服务器控制台输出真实 vs 预测对比数据
.nadetestsim .nts 单次仿真调试:指定 yaw pitch mode strength 跑一次弹道仿真并输出诊断(出手点/碰撞日志/落点/终止原因/飞行时长)到控制台,用于对比 .nadetest 真实数据

搜索说明:前置需先用 .nadedraw 绘制目标区域;搜索按毫秒预算摊销执行不卡服务器,中心提示实时刷新进度;闪光/手雷按 1.65s 引信空爆判定落点,燃烧瓶/燃烧弹按触地或 2s 空爆判定,烟雾/诱饵按静止判定;弹墙类点位不会被粗筛误杀。yaw 扫描扇形为站位朝目标方向 ±15°(v1 已知限制:以直投+浅弹跳为主)。

探测结果

命令 别名 功能
.nadelist .nl 控制台输出搜索结果表格(ID/投掷方式/力度/道具/描点角)
.nadeclearlist .ncl 清除自己所有搜索结果及其可视化实体
.nadegoto .ng 传送到指定结果 ID 站位,视角对准描点角,显示站位十字与弹道预览

结果 ID 规则道具缩写-方式-力度-序号(如 SMK-N-L-01)。传送到站位后按提示的力度与方式投掷即可复现搜索到的弹道。

队伍切换

命令 别名 功能
.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 ProcessMovementCCSBot::UpdatePlayerRunCommand 等引擎函数实现帧级移动录制与回放。

跨语言 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 在聊天栏分类显示所有可用指令(仅发送者可见)