Skip to content

Latest commit

 

History

27 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PvZ's Ultimate Calculator

集成诸常用键控炮阵计算器的非交互式 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|enPUC_LANG 环境变量,默认 zh)。

不需要 MCP 服务端时可去掉异步栈:cargo build --release --no-default-features

子命令

puc intercept "<command>": 拦截计算器

有状态指令流:同次调用内用 ; 分隔多条指令,场合与波次状态在分号间保留。

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(源码)。

puc coord: 落点计算器

给定炮或毁灭菇的爆炸生效时机,输出各僵尸的 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

flagduck_flag 仅在旗帜波有结果。未知键会被静默忽略;如果所有键都不匹配, 命令只输出表头。

puc time: 时机计算器

落点计算器的逆运算:给定爆炸落点,输出能够全伤各行整批僵尸的爆炸生效时机区间。

puc time <de|pe|re> <cob|doom> <> <> [--wave normal|flag] [--roof-tail 1-8] [--zombies ...]

puc extreme: 快慢速计算器

计算快速/慢速巨人、梯子或小丑在给定行走时间后的坐标,并给出对应全收落点列。

puc extreme [--fast|--slow] [--type garg|ladder|jack] <行走时间>...

多个行走时间为同行叠加段。garg 额外输出落点列;ladder/jack 仅输出坐标。

puc ipp: 热过渡

给定热过渡时机,输出各区域炮的同收落点列区间。
--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

puc separate: 无冰分离

计算炮不伤巨人时,全收各类快速僵尸上、本、下行的最早时机。只有整批坐标 都进入可伤域后才会计为可全收;巨人尚未进入可伤域时则自然无需避伤。搜索 窗口固定为 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。 筛选后没有任何适用类型时命令会报错,而不是输出空表。

puc seml: SEML 模拟器

解析 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 docs: 离线文档

输出编译进 puc.exe 的完整 Markdown 文档,不依赖网络或当前工作目录:

puc docs seml
puc docs intercept

需要保存为文件时可使用 shell 重定向,例如 puc docs seml > seml.md

puc mcp-server: MCP 服务端

将各计算子命令作为工具暴露,通过标准 stdio 提供 MCP 服务;SEML 和 intercept 完整文档则作为 MCP 资源提供。

致谢

About

PvZ's Ultimate Calculator

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages