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=X
- 如果实体的 HEALTH 值小于数字 X,则返回真。
-用法:QUANTITY=X
- 如果数量(什么???也许是关卡中的数字?)等于 X,则返回真。
-用法:SPEED=X
- 如果实体的速度等于数字 X,则返回真。
-用法:ASSOCIATED=X
- 如果实体与玩家相关联,则返回真。与电梯一起使用。
- (X 值可以是什么?ASSOCIATED=1 返回真,如果它与它关联,ASSOCIATED=0 返回真,如果它没有关联?)
-用法:PLRDISTWITHIN=X
- 如果玩家距离实体 X 个单位以内,则返回真。单位以(100 个“单位”等于一个段大小)测量。
-用法:PLRFURTHER=X
- 如果玩家距离实体 X 个单位以外,则返回真。单位以(100 个“单位”等于一个段大小)测量。
-用法:PLRALIVE=X
- 如果 X 为 1,则如果玩家活着,则返回真。如果 X 不为 1,则如果玩家死了,则返回真。
-用法:PLRHIGHER=X
- 如果玩家比实体高 X 个单位,则返回真。
-用法:PLRELEVWITHIN=X
- 当玩家可以在 X 度垂直范围内看到时,返回真。
-用法:PLRELEVFURTHER=X
- 当玩家不能在 X 度垂直范围内看到时,返回真。
-用法:PLRCANBESEEN
- 当玩家可以被看到时,返回真。
- 注意:当玩家位于实体眼睛(正面位置)的视野锥角内时,可以被看到。
-用法:PLRCANNOTBESEEN
- 当玩家不能被看到时,返回真。
- 注意:当玩家位于实体眼睛(正面位置)的视野锥角内时,可以被看到。
-用法:PLRHASKEY
- 当玩家拥有钥匙(实体)来解锁另一个实体时,返回真。
- 例如,门或闩。
- 用法: PLRUSINGACTION=X
- 当玩家执行使用操作时返回 true。
- (X 应为 1=true 或 0=false)
- 用法: PLRWITHINZONE
- 当玩家在触发区域内时返回 true。仅与触发区域一起使用。
- 用法: PLRINGUNSIGHT=X
- 当实体(如果它携带武器)将玩家置于枪口时返回 true。
- 用法: ANYWITHIN=X
- 当任何其他实体在 X 个四分之一瓦片内时返回 true
- 用法: ANYFURTHER
- 当没有任何其他实体在 X 个四分之一瓦片内时返回 true
- 用法: ENTITYWITHINZONE
- 当实体在触发区域内时返回 true。
- 用法: SHOTDAMAGE=X
- 当受到的伤害超过 X 的值时返回 true。例如,这可以用来击退一个敌人,如果他被非常强大的武器击中。
- 用法: IFWEAPON=X
- 如果 X=1,则当实体使用的武器准备好时返回 true。如果 X=0,则当实体使用的武器没有准备好时返回 true。
- 用法: ACTIVATED=X
- 当实体的激活值等于 X 时返回 true
(关于激活的更多信息?)
- 用法: NEARACTIVATABLE=X
- 当实体即将被激活时返回 true。
(这意味着什么?)
- 用法: NEWWEAPONCANBESEEN=X
- 当实体可以看到更好的武器时返回 true。(如果 X=1?)
- 用法: NOISEHEARD=X
- 当实体听到场景中的广播噪音时返回 true。
(什么是广播噪音?任何 SFX 声音都是广播噪音吗?)
- 用法: RAYCAST = X Y
- 当光线投射在 X 到 Y 单位之间的前方时返回 true。
(嗯,什么是光线投射?)
- 光线投射是指从一个位置到另一个位置绘制 3D 空间中的线(光线)。在这种情况下,编码人员可以评估空间中的一个点是否实际上可以从第一个位置看到。
- 用法: RAYCASTUP=X
- 当光线投射在 X 到 Y 单位之间的上方时返回 true。
- 用法: RAYCASTBACK=X
- 当光线投射在 X 到 Y 单位之间的后方时返回 true。
- 用法: FRAMEATEND=X
- 当标记为 X 的动画结束时返回 true。
- 用法: FRAMEATSTART=X
- 当标记为 X 的动画开始时返回 true。
- 用法: FRAMWITHIN=X Y
- 当标记为 X 的动画在帧 Y 内时返回 true
- 用法: FRAMEBEYOND=X Y
- 当标记为 X 的动画超过帧 Y 时返回 true
- 用法: ANIMATIONOVER=X
- 当标记为 X 的动画完成时返回 true。
-用法: ALPHAFADEEQUAL=X
- 当 alpha 值 = X 时返回 true
-用法: REACHTARGET=X
- 当实体到达其目标时返回 true(如果 X=1?)
-用法: LOSETARGET=X
- 当实体在 X 次尝试后卡住时返回 true。
-用法: HEADANGLEGREATER=X
- 当实体头部角度大于 X 时返回 true
-用法: HEADANGLELESS=X
- 当实体头部角度小于 X 时返回 true
-用法: WAYPOINTSTATE=X
- 当航点值等于 X 时返回 true
- 状态 0 表示实体尚未开始遵循航点。
- 状态 1 表示实体正在寻找最近的航点标记作为起点。
- 状态 2 表示实体正在沿着航点线前往其当前的航点标记。
- 状态 3 表示实体已到达航点标记,并且它在多个其他方向上分支。
- 状态 4 表示实体已到达航点标记,并且它在多个其他方向上分支。
- 状态 5 表示实体已到达当前航点结构的末尾,需要做出决定。
- 状态 999 表示实体已被置于零航点模式,在这种模式下,实体会简单地忽略航点。
-用法: IFMARKER=X
- 当场景中存在实体之前放置的标记时返回 true。
-用法: IFPLRTRAIL=X
- 当玩家留下的轨迹存在时返回 true
-用法: TIMERGREATER=X
- 当内部 FPI 计时器超过 X 毫秒时返回 true
-用法: ESCAPEKEYPRESSED=X
- 当按下 Escape 键时返回 true。
-用法: NONE
- 无操作
-用法: DESTROY
- 销毁实体
-用法: SUSPEND
- 永久禁用实体,并保持可见。 这用于留下尸体或单向开关。 你也可以用它来永久打开门。
-用法: RUNFPIDEFAULT=X
- 运行默认 FPI 脚本。 如果 X=0,则运行实体属性中“初始化”下列出的 FPI 脚本。 如果 X=1,则运行“主”FPI 脚本,如果 X=2,则运行“销毁”FPI 脚本。
-用法: RUNFPI=X
- 按名称运行另一个 FPI 脚本。 例如
- : STATE=1:RUNFPI=runaway.fpi
-用法: MOVEUP=X
- 将实体向上移动 X 个单位。
-用法: MOVEFORE=X
- 将实体向前移动 X 个单位。
-用法: MOVEBACK=X
- 将实体向后移动 X 个单位。
-用法: FREEZE=X
- 阻止实体移动。
X 为毫秒数。
-用法: ROTATEY=X
- 将实体绕其“Y”轴旋转至 X 度
-用法: ROTATEIY=X
- 将实体绕其“Y”轴旋转 X 度
-用法: ROTATEY=X
- 将实体绕其“Y”轴旋转 X 个单位
-用法: SETTARGET
- 设置实体的内部目标。 遵循“目标”条件。