跳转到内容

FPI 脚本/FPI 使用示例

来自维基教科书,开放的书籍,开放的世界


本模块详细介绍了 FPI 语言中每个子句,并提供使用示例。

条件测试某个事物是否为真。每个条件都会返回 TRUE 或 FALSE。如果返回 TRUE,则评估以逗号分隔的条件列表中的下一个条件。如果所有条件都评估为真,则执行操作。

-用法:STATE=X

测试变量 "STATE" 是否设置为值 X。从默认值 0 开始,"STATE" 用于 fpi 脚本的每一行以控制流程,例如
state=0:state=1

-此行检查 STATE 变量是否为 0。如果是,我们将它更改为 1。

state=1;state=2

-此行测试 STATE 变量是否为 1。如果是,我们将它更改为 2。

state=2:state=1

-当我们到达状态 2 时,我们返回状态 1。这会导致一个永远循环,它实际上什么也不做。它只是一个例子。

-用法:NEVER

永远为假。永远不会返回真,也不会导致 ACTIONS 列表中的任何内容被执行。
目的?

-用法:ALWAYS

总是为真。如果所有其他条件语句都评估为真,则 ACTIONS 列表中的内容将被执行。
目的?

-用法:RANDOM=X

在 0 到 X 之间创建一个随机数,如果该随机数等于 1,则评估为真。这对于在您的角色实体中创建烦躁很有用,例如。当他们只是站在那里时,你可以让他们偶尔随机烦躁,例如
:STATE=0,RANDOM=30:ANIMATE=6

-此行检查状态是否为零(如果实体最近已初始化或其 STATE 变量被另一个脚本或此脚本中的另一行设置为 0)。然后,它创建一个从 0 到 30 的随机数。如果该随机数为 1(1/30 的时间),则列出的动画将运行,在本例中,它为数字 6,它显示角色重新装填他们的武器。

正确?

实体条件

[编辑 | 编辑源代码]

-用法:HEALTH=X

如果实体的 HEALTH 值等于数字 X,则返回真。
:HEALTH=20

HEALTHLESS

[编辑 | 编辑源代码]

-用法:HEALTHLESS=X

如果实体的 HEALTH 值小于数字 X,则返回真。

-用法:QUANTITY=X

如果数量(什么???也许是关卡中的数字?)等于 X,则返回真。

-用法:SPEED=X

如果实体的速度等于数字 X,则返回真。

ASSOCIATED=

[编辑 | 编辑源代码]

-用法:ASSOCIATED=X

如果实体与玩家相关联,则返回真。与电梯一起使用。
(X 值可以是什么?ASSOCIATED=1 返回真,如果它与它关联,ASSOCIATED=0 返回真,如果它没有关联?)

对玩家的引用

[编辑 | 编辑源代码]

PLRDISTWITHIN

[编辑 | 编辑源代码]

-用法:PLRDISTWITHIN=X

如果玩家距离实体 X 个单位以内,则返回真。单位以(100 个“单位”等于一个段大小)测量。

PLRDISTFURTHER

[编辑 | 编辑源代码]

-用法:PLRFURTHER=X

如果玩家距离实体 X 个单位以外,则返回真。单位以(100 个“单位”等于一个段大小)测量。

-用法:PLRALIVE=X

如果 X 为 1,则如果玩家活着,则返回真。如果 X 不为 1,则如果玩家死了,则返回真。

PLRHIGHER

[编辑 | 编辑源代码]

-用法:PLRHIGHER=X

如果玩家比实体高 X 个单位,则返回真。

PLRELEVWITHIN

[编辑 | 编辑源代码]

-用法:PLRELEVWITHIN=X

当玩家可以在 X 度垂直范围内看到时,返回真。

PLRELEVFURTHER

[编辑 | 编辑源代码]

-用法:PLRELEVFURTHER=X

当玩家不能在 X 度垂直范围内看到时,返回真。

PLRCANBESEEN

[编辑 | 编辑源代码]

-用法:PLRCANBESEEN

当玩家可以被看到时,返回真。
注意:当玩家位于实体眼睛(正面位置)的视野锥角内时,可以被看到。

PLRCANNOTBESEEN

[编辑 | 编辑源代码]

-用法:PLRCANNOTBESEEN

当玩家不能被看到时,返回真。
注意:当玩家位于实体眼睛(正面位置)的视野锥角内时,可以被看到。

PLRHASKEY

[编辑 | 编辑源代码]

-用法:PLRHASKEY

当玩家拥有钥匙(实体)来解锁另一个实体时,返回真。
例如,门或闩。

PLRUSINGACTION

[编辑 | 编辑源代码]

- 用法: PLRUSINGACTION=X

当玩家执行使用操作时返回 true。
(X 应为 1=true 或 0=false)

PLRWITHINZONE

[编辑 | 编辑源代码]

- 用法: PLRWITHINZONE

当玩家在触发区域内时返回 true。仅与触发区域一起使用。

PLRINGUNSIGHT

[编辑 | 编辑源代码]

- 用法: PLRINGUNSIGHT=X

当实体(如果它携带武器)将玩家置于枪口时返回 true。

对其他对象的引用

[编辑 | 编辑源代码]

ANYWITHIN

[编辑 | 编辑源代码]

- 用法: ANYWITHIN=X

当任何其他实体在 X 个四分之一瓦片内时返回 true

ANYFURTHER

[编辑 | 编辑源代码]

- 用法: ANYFURTHER

当没有任何其他实体在 X 个四分之一瓦片内时返回 true

ENTITYWITHINZONE

[编辑 | 编辑源代码]

- 用法: ENTITYWITHINZONE

当实体在触发区域内时返回 true。

SHOTDAMAGE

[编辑 | 编辑源代码]

- 用法: SHOTDAMAGE=X

当受到的伤害超过 X 的值时返回 true。例如,这可以用来击退一个敌人,如果他被非常强大的武器击中。

- 用法: IFWEAPON=X

如果 X=1,则当实体使用的武器准备好时返回 true。如果 X=0,则当实体使用的武器没有准备好时返回 true。

ACTIVATED

[编辑 | 编辑源代码]

- 用法: ACTIVATED=X

当实体的激活值等于 X 时返回 true

(关于激活的更多信息?)

NEARACTIVATABLE

[编辑 | 编辑源代码]

- 用法: NEARACTIVATABLE=X

当实体即将被激活时返回 true。

(这意味着什么?)

NEWWEAPONCANBESEEN

[编辑 | 编辑源代码]

- 用法: NEWWEAPONCANBESEEN=X

当实体可以看到更好的武器时返回 true。(如果 X=1?)

NOISEHEARD

[编辑 | 编辑源代码]

- 用法: NOISEHEARD=X

当实体听到场景中的广播噪音时返回 true。

(什么是广播噪音?任何 SFX 声音都是广播噪音吗?)

对象检测

[编辑 | 编辑源代码]

- 用法: RAYCAST = X Y

当光线投射在 X 到 Y 单位之间的前方时返回 true。

(嗯,什么是光线投射?)

光线投射是指从一个位置到另一个位置绘制 3D 空间中的线(光线)。在这种情况下,编码人员可以评估空间中的一个点是否实际上可以从第一个位置看到。

RAYCASTUP

[编辑 | 编辑源代码]

- 用法: RAYCASTUP=X

当光线投射在 X 到 Y 单位之间的上方时返回 true。

RAYCASTBACK

[编辑 | 编辑源代码]

- 用法: RAYCASTBACK=X

当光线投射在 X 到 Y 单位之间的后方时返回 true。

FRAMEATEND

[编辑 | 编辑源代码]

- 用法: FRAMEATEND=X

当标记为 X 的动画结束时返回 true。

FRAMEATSTART

[编辑 | 编辑源代码]

- 用法: FRAMEATSTART=X

当标记为 X 的动画开始时返回 true。

FRAMWITHIN

[编辑 | 编辑源代码]

- 用法: FRAMWITHIN=X Y

当标记为 X 的动画在帧 Y 内时返回 true

FRAMEBEYOND

[编辑 | 编辑源代码]

- 用法: FRAMEBEYOND=X Y

当标记为 X 的动画超过帧 Y 时返回 true

ANIMATIONOVER

[编辑 | 编辑源代码]

- 用法: ANIMATIONOVER=X

当标记为 X 的动画完成时返回 true。

ALPHAFADEEQUAL

[编辑 | 编辑源代码]

-用法: ALPHAFADEEQUAL=X

当 alpha 值 = X 时返回 true

REACHTARGET

[编辑 | 编辑源代码]

-用法: REACHTARGET=X

当实体到达其目标时返回 true(如果 X=1?)

LOSETARGET

[编辑 | 编辑源代码]

-用法: LOSETARGET=X

当实体在 X 次尝试后卡住时返回 true。

HEADANGLEGREATER

[编辑 | 编辑源代码]

-用法: HEADANGLEGREATER=X

当实体头部角度大于 X 时返回 true

HEADANGLELESS

[编辑 | 编辑源代码]

-用法: HEADANGLELESS=X

当实体头部角度小于 X 时返回 true

WAYPOINTSTATE

[编辑 | 编辑源代码]

-用法: WAYPOINTSTATE=X

当航点值等于 X 时返回 true
状态 0 表示实体尚未开始遵循航点。
状态 1 表示实体正在寻找最近的航点标记作为起点。
状态 2 表示实体正在沿着航点线前往其当前的航点标记。
状态 3 表示实体已到达航点标记,并且它在多个其他方向上分支。
状态 4 表示实体已到达航点标记,并且它在多个其他方向上分支。
状态 5 表示实体已到达当前航点结构的末尾,需要做出决定。
状态 999 表示实体已被置于零航点模式,在这种模式下,实体会简单地忽略航点。

-用法: IFMARKER=X

当场景中存在实体之前放置的标记时返回 true。

IFPLRTRAIL

[编辑 | 编辑源代码]

-用法: IFPLRTRAIL=X

当玩家留下的轨迹存在时返回 true

TIMERGREATER

[编辑 | 编辑源代码]

-用法: TIMERGREATER=X

当内部 FPI 计时器超过 X 毫秒时返回 true

ESCAPEKEYPRESSED

[编辑 | 编辑源代码]

-用法: ESCAPEKEYPRESSED=X

当按下 Escape 键时返回 true。

-用法: NONE

无操作

-用法: DESTROY

销毁实体

-用法: SUSPEND

永久禁用实体,并保持可见。 这用于留下尸体或单向开关。 你也可以用它来永久打开门。

运行 FPI 默认脚本

[编辑 | 编辑源代码]

-用法: RUNFPIDEFAULT=X

运行默认 FPI 脚本。 如果 X=0,则运行实体属性中“初始化”下列出的 FPI 脚本。 如果 X=1,则运行“主”FPI 脚本,如果 X=2,则运行“销毁”FPI 脚本。

运行 FPI

[编辑 | 编辑源代码]

-用法: RUNFPI=X

按名称运行另一个 FPI 脚本。 例如
: STATE=1:RUNFPI=runaway.fpi

向上移动

[编辑 | 编辑源代码]

-用法: MOVEUP=X

将实体向上移动 X 个单位。

向前移动

[编辑 | 编辑源代码]

-用法: MOVEFORE=X

将实体向前移动 X 个单位。

向后移动

[编辑 | 编辑源代码]

-用法: MOVEBACK=X

将实体向后移动 X 个单位。

-用法: FREEZE=X

阻止实体移动。

X 为毫秒数。

绕 Y 轴旋转

[编辑 | 编辑源代码]

-用法: ROTATEY=X

将实体绕其“Y”轴旋转至 X 度

绕 Y 轴增量旋转

[编辑 | 编辑源代码]

-用法: ROTATEIY=X

将实体绕其“Y”轴旋转 X 度

绕 Y 轴旋转

[编辑 | 编辑源代码]

-用法: ROTATEY=X

将实体绕其“Y”轴旋转 X 个单位

设置目标

[编辑 | 编辑源代码]

-用法: SETTARGET

设置实体的内部目标。 遵循“目标”条件。
华夏公益教科书