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
- 設定實體的內部目標。 遵循“目標”條件。