集成诸常用键控炮阵计算器的非交互式 CLI / MCP 工具,便于 AI Agent 使用。
采用的时间单位为 cs,取刷新等效时间基准(seml 子命令仍以 avzTime 字段为准);列单位为格(1 格 = 80 px),以炮落点为基准。
# 构建
cargo build --release
# 添加至 Claude Code
claude mcp add --scope user --transport stdio puc "C:\path\to\puc" mcp-server
# 添加至 Codex
codex mcp add puc "C:\path\to\puc" mcp-server输出语言在运行时选择(--lang zh|en 或 PUC_LANG 环境变量,默认 zh)。
不需要 MCP 服务端时可去掉异步栈:cargo build --release --no-default-features。
有状态指令流:同次调用内用 ; 分隔多条指令,场合与波次状态在分号间保留。
puc intercept "pe; wave 1 400 800; delay 8.8"
# delay row=1,5 col=8.8 garg_rows=[1,2,5,6] intercept=212~230 eat=410 iceable=445完整语法:puc docs intercept(离线 CLI)、puc://docs/intercept(MCP 资源)或
doc/intercept.md(源码)。
给定炮或毁灭菇的爆炸生效时机,输出各僵尸的 x 区间与全伤落点列区间。仅当整批僵尸的
坐标范围都处于可伤域时才输出落点;否则“全伤”栏显示“不可全伤”,各落点
列显示 —。
puc coord <时间> [--wave normal|flag] [--scene de|pe|re] [--kind cob|doom]
[--roof-tail 1-8] [--x 最小[,最大]] [--zombies ...]--kind doom 计算核武落点:命中范围上下各 3 行,输出 7 列(收上3…收本…收下3)。
屋顶炮必须提供 --roof-tail;毁灭菇不需要炮尾列。
旗帜波通常在普通波坐标上增加 40px;撑杆、冰车、投篮和巨人是例外,其旗帜 波坐标与普通波相同。潜水、海豚和矿工使用各自的旗帜波位置表。
coord/time --zombies 支持以下 28 个键:
regular,regular_dc_fast,regular_dc_slow,pole,newspaper,door,football,dancing,
snorkel,zomboni,dolphin,jack,balloon,digger,pogo,ladder,catapult,gargantuar,
flag,duck,duck_dc_fast,duck_dc_slow,snorkel_ashore,digger_reverse,duck_flag,
dolphin_swim,balloon_ground,pogo_walk
flag 和 duck_flag 仅在旗帜波有结果。未知键会被静默忽略;如果所有键都不匹配,
命令只输出表头。
落点计算器的逆运算:给定爆炸落点,输出能够全伤各行整批僵尸的爆炸生效时机区间。
puc time <de|pe|re> <cob|doom> <行> <列> [--wave normal|flag] [--roof-tail 1-8] [--zombies ...]计算快速/慢速巨人、梯子或小丑在给定行走时间后的坐标,并给出对应全收落点列。
puc extreme [--fast|--slow] [--type garg|ladder|jack] <行走时间>...多个行走时间为同行叠加段。garg 额外输出落点列;ladder/jack 仅输出坐标。
给定热过渡时机,输出各区域炮的同收落点列区间。
加 --wave-len 时额外输出巨人坐标与炸虚落点;再加 --find 可从给定
时机起检查连续 300 个时机,寻找最早满足指定同收方式的时机。使用
--find 时必须同时提供 --wave-len。
puc ipp <热过渡时机> [--wave-len 加速波波长] [--ice 冰时机]
[--find back2|back3|front2|front3]
# 例:卡等效完美预判冰,从 400cs 起查后院收二
puc ipp 400 --wave-len 601 --find back2计算炮不伤巨人时,全收各类快速僵尸上、本、下行的最早时机。只有整批坐标
都进入可伤域后才会计为可全收;巨人尚未进入可伤域时则自然无需避伤。搜索
窗口固定为 0..=600cs,— 表示该窗口内无解。
puc separate [--scene de|pe|re] [--roof-tail 1-8] [--zombies ...]屋顶场合必须给出炮尾列;省略 --scene 时默认为后院。
--zombies 可用键为 football,dancing,snorkel,dolphin,jack,digger,pogo,ladder,catapult。
前院不含 snorkel,dolphin;屋顶仅支持 football,jack,pogo,ladder,catapult。
筛选后没有任何适用类型时命令会报错,而不是输出空表。
解析 SEML 场景文件,调用内置 PvZ 模拟器,输出模拟测试结果。
puc seml [--compact] [--strict] [--csv <目标>] <类型> <文件>| 类型 | 说明 |
|---|---|
pos |
坐标 / 到达时刻分布 |
smash |
红眼砸率 |
explode |
保护植物所受小丑爆炸与其他损伤 |
refresh |
刷新意外率 |
pogo |
全收跳跳所需的炮落点范围 |
survive |
各类僵尸受击率及受击/未受击均血 |
reuse |
用炮复用计算(纯时间计算,不跑模拟器) |
--compact 省略明细;--strict 遇未知头部时报错(默认跳过);--csv 额外导出 CSV
(reuse 忽略)。
新建、修改或审计 SEML 时建议使用 --strict。
完整语法:puc docs seml(离线 CLI)、puc://docs/seml(MCP 资源)或
doc/seml.md(源码)。
输出编译进 puc.exe 的完整 Markdown 文档,不依赖网络或当前工作目录:
puc docs seml
puc docs intercept需要保存为文件时可使用 shell 重定向,例如 puc docs seml > seml.md。
将各计算子命令作为工具暴露,通过标准 stdio 提供 MCP 服务;SEML 和 intercept 完整文档则作为 MCP 资源提供。
- 拦截计算器(
puc intercept基于此重写) - 万能表(
coord/time/extreme/ipp数据来源) - pvz-emulator(
puc seml内置模拟器) - SEML(SEML 语法)