Bot/zh

MCPK 机器人是一个致力于取代 MathBot 来计算运动的 Discord 机器人. 实际上，一直重新定义函数越来越令人厌烦，而且语法使用起来也不太方便. MathBot 作为通用计算工具仍然非常有用.

MCPK-bot is a Discord Bot aiming to replace MathBot for movement calculations. Indeed, it was getting tiresome to redefine functions all the time, and the syntax is not very convenient to use. MathBot is still very useful as a general-purpose calculation tool.

相对于 Mathbot 的优点：


 * 更充实且更具描述性的输出
 * 内置了函数：不需要手动重定义它们.
 * 机器人使用浮点数运算而不是分数，因此模拟更精确.
 * 对于模拟运动：
 * X 和 Z 运动都被考虑在内，并计入了动量阈值.
 * 操作是从左到右读取的，读写起来更方便.
 * 所有操作都有方向这一可选参数.

距离
%distance  [Z]

返回 X 乘 Z 跳跃的真距（以方块为距离单位，Z 方向为可选变量）

公式就是简单的 $$\sqrt{max(0,X-0.6)^2 + max(0,Z-0.6)^2}$$

范例：

 * 4b 跳跃：%distance 4
 * 3x3 跳跃：%distance 3 3

滞空时间
%duration <跳跃高度> [天花板高度]

对于给定的高度，返回一个跳跃的滞空时间（高度以方块为单位，天花板高度为可选变量）

范例：

 * -1.5b 跳跃：%duration -1.5
 * 3bc +1 跳跃：%duration 1 3

高度
%height <起跳 Tick 数> [天花板高度]

返回玩家 n ticks 后的起跳高度（天花板高度可选填）

范例：

 * 12t 跳跃：%height 12
 * 2bc 9t 跳跃：%height 9 2

卡角
%blip <重复次数> [初始高度] [卡角高度] [最后跳跃 Tick 数]

返回连续卡角后玩家的高度（按惯例，Y=0 作为地面）


 * <重复次数> 为连续卡角的次数
 * [初始高度] 是玩家第一次起跳前的初始高度（默认：0.0）
 * [卡角高度] 是卡角所用平面的高度（例如：地毯为 0.0625，活板门为 0.1875……）
 * 除非指定了 [最后跳跃 Tick 数]，否则按照默认值（6 tick）来返回跳跃的最高高度.

范例：

 * starting from Y=200:            %blip 4
 * 荷叶 17 连卡角：%blip_top 17 0.015625

模拟
%simulate <操作>（或仅输入 %<操作>）

从左到右读取给出的操作，并模拟运动的结果.

操作：
操作拥有两个变量：
 * 刻：操作的持续时间，以刻为单位
 * 方向（可选）：操作的方向（不是 facing），以度为单位

在操作前添加“max_”以获得该操作的最大加速（将该操作重复 20 次）



特殊符号：

 * Momentum，MM，以及 | 将当前的操作设置为助跑（在最后一 tick 重置位置的负值）


 * Blocks，和 b 将输出的落地距离转换成方块（如果不为零，在 X 和 Z 轴上 ± 0.6）


 * Meters，和 m 将输出的落地距离转换成米（默认值）


 * Position，pos，以及 p 将输出转换为相对位置（当你不在计算跳跃距离时使用）

用法：
语法分析器从左向右读取操作和记号. 所有的操作和记号应当用空格分隔.

Momentum 记号可以置于任意两个操作之间.

Blocks，Meters 与 Position 记号置于语句末尾（不可同时使用）.

范例：

 * 延立：% sprint | sprintjump(12)
 * rex bwmm：% walkjump(12,180) walk(1,180) Lsprintjump(12) | sprintjump(12)
 * 1bm 5-1：% walkjump45(12,170) walk45(1,170) Lsprintjump45(1,-10) sprint45_air(11) |