跳轉至內容

FPI 指令碼

0% developed
來自華夏公益教科書

FPI 指令碼語言是一種簡單的基於觸發的人工智慧語言,用於在遊戲中對物件進行程式設計。它包含簡單的 if/then 語法以及預定義的條件語句和命令列表。

condition,[第二個條件(可選)]:action,[第二個動作(可選)]

語句以冒號開頭。緊隨其後是條件,用於測試某件事是否為真。如果有多個條件,則用逗號隔開。列出所有條件後,將有另一個冒號。第二個冒號將條件與操作隔開。如果您熟悉其他程式語言,這類似於 IF THEN 條件語句。

if(CONDITION) { ACTION }

翻譯成

:CONDITION: ACTION

還有註釋來幫助您組織指令碼,註釋以分號開頭,例如

FPI 指令碼教程 第一部分

[編輯 | 編輯原始碼]

FPI 指令碼可用於多種操作,包括物件行為和人工智慧指令碼。有關每個子句的更詳細描述和示例,請參見FPI 使用示例

物件行為

[編輯 | 編輯原始碼]

這是 FPI 指令碼最常見的用途之一。下面的指令碼顯示了一個簡單的傷害區域指令碼,每次玩家進入傷害區域時,它都會從玩家那裡扣除 5 生命值。

人工智慧指令碼
描述

state0,plriswithin=zone,plraddhealth=-5

請注意程式碼開頭處的“state0 命令。狀態就像積木 - “state0 始終是程式碼段中的第一個狀態。它是主要基礎。其他程式碼行都是從 “state0” 命令呼叫的。


人工智慧行為

[編輯 | 編輯原始碼]

人工智慧行為告訴 NPC 或玩家如何表現。除了主要動畫之外,所有內容都是建立在 AI 指令碼之上的。與物件行為指令碼一樣,程式碼始終必須以“;人工智慧指令碼”命令開頭。沒有它,您的程式碼將無法執行。另一個變化是“desc”命令。

"從物件行為指令碼中獲取"

人工智慧指令碼
描述


AI 指令碼

[編輯 | 編輯原始碼]
人工智慧指令碼
desc () = 跟蹤並射擊


請注意 desc 後的命令。“跟蹤並射擊”告訴角色要採取的操作。不言自明。

在第二部分中,我將進一步解釋 rotateplr 命令,以及如何將其運用到實際應用中。

條件列表

[編輯 | 編輯原始碼]
  • ACTIVATED=X 當實體的啟用值等於 X 時為真
  • ALPHAFADEEQUAL=X 當 alpha 值等於 X 時為真
  • ALWAYS 始終為真
  • ANIMATIONOVER=X 當動畫 X 完成時為真
  • ANYFURTHER=X 當不在 X 個四分之一瓦片範圍內時為真
  • ANYWITHIN=X 當任何其他實體在 X 個四分之一瓦片範圍內移動時為真
  • ASSOCIATED=X 當實體與玩家關聯(抬起)時為真
  • ENTITYWITHINZONE 當實體在觸發區域內時為真
  • FRAMEATEND=X 當動畫 X 結束時為真
  • FRAMEATSTART=X 當動畫 X 開始時為真
  • FRAMEBEYOND=X Y 當動畫 X 超過幀 Y 時為真
  • FRAMEWITHIN=X Y 當動畫 X 在幀 Y 內時為真
  • HEADANGLEGREATER=X 當頭部角度大於 X 時為真
  • HEADANGLELESS=X 當頭部角度小於 X 時為真
  • HEALTH=X 當生命值等於 X 時為真
  • HEALTHLESS=X 當生命值小於 X 時為真
  • IFWEAPON=X 當實體使用的武器處於準備狀態且 X 為 1 時為真
  • LOSETARGET=X 當實體在 X 次嘗試後卡住時為真
  • NEARACTIVATABLE=X 當實體即將被啟用時為真
  • NEVER 從不為真
  • NEWWEAPONCANBESEEN=X 當實體可以看到更好的武器時為真
  • NOISEHEARD=X 當實體從場景中聽到廣播噪音時為真
  • PLRALIVE=X 當玩家活著且 X 為 1 時為真
  • PLRCANBESEEN 當玩家可見時為真
  • PLRCANNOTBESEEN 當玩家不可見時為真
  • PLRDISTFURTHER=X 當玩家距離超過 X 個單位時為真
  • PLRDISTWITHIN=X 當玩家距離小於 X 個單位時為真
  • PLRELEVFURTHER=X 當玩家在垂直方向上不可見 X 度時為真
  • PLRELEVWITHIN=X 當玩家在垂直方向上可見 X 度時為真
  • PLRHASKEY=X 當玩家按下以值 X 表示的鍵時為真
  • PLRHIGHER=X 當玩家比實體高 X 個單位時為真
  • PLRINGUNSIGHT=X 當實體的槍口瞄準玩家時為真
  • PLRUSINGACTION=X 當玩家執行使用操作時為真
  • PLRWITHINZONE 當玩家在觸發區域內時為真
  • QUANTITY=X 當數量等於 X 時為真
  • RANDOM=X 當 0 到 X 之間的隨機值等於 1 時為真
  • RAYCAST=X Y 當射線從 X 到 Y 個單位擊中前方的東西時為真
  • RAYCASTBACK=X 當射線從 X 到 Y 個單位擊中後方的東西時為真
  • RAYCASTUP=X 當射線從 X 到 Y 個單位擊中上方的東西時為真
  • REACHTARGET=X 當實體到達目標時為真
  • SHOTDAMAGE=X 當受到的傷害超過值 X 時為真
  • SPEED=X 當速度等於 X 時為真
  • STATE=X 當儲存在 FPI 指令碼中的值等於 X 時為真

這些是條件詞,如果所有條件都為真,它們將執行操作

  • WAYPOINTSTATE=X 當航點狀態值等於 X 時為真
  • 狀態 0 表示實體尚未開始跟蹤航點
  • 狀態 1 表示實體正在尋找最近的航點標記作為起點
  • 狀態 2 表示實體正在沿著航點線跟蹤其當前航點標記
  • 狀態 3 表示實體已到達航點標記,需要決定下一步行動
  • 狀態 4 表示實體已到達航點標記,它會分裂成多個其他方向
  • 狀態 5 表示實體已到達當前航點結構的末尾,需要做出決策

注意:狀態 999 表示實體已置於零航點模式,在這種模式下,實體會簡單地忽略航點。

  • ANYFURTHER=X 當任何實體距離它超過 X 個單位時為真
  • ANYWITHIN=X 當任何實體距離它小於 X 個單位時為真
  • ANYWITHINZONE 當任何實體在它的區域內時為真
  • CANTAKE 當玩家可以收集實體時為真
  • ESCAPEKEYPRESSED=X 當按下 Escape 鍵時為真
  • HUDEDITDONE=X 當使用“可編輯”的 HUD 專案 X 時為真
  • HUDHAVENAME 當未輸入玩家名稱時為真
  • HUDSELECTIONMADE=X 當用戶點選 HUD 按鈕 X 時為真
  • IFMARKER=X 當場景中存在實體先前放置的標記時為真
  • IFPLRTRAIL=X 當存在玩家留下的軌跡時為真
  • NORAYCASTUP=X Y 當向上 X 到 Y 沒有碰撞時為真
  • PLRHEALTHGREATER=X 當玩家生命值大於 X 時為真
  • PLRHEALTHLESS=X 當玩家生命值低於 X 時為真
  • SCANCODEKEYPRESSED=X 當 X=按下鍵的鍵碼時為真。例如:SCANCODEKEYPRESSED=5 當按下 Tab 鍵時為真
  • TIMERGREATER=X 當內部 FPI 計時器超過 X 毫秒時為真

動作列表

[編輯 | 編輯原始碼]
  • ANIMATE=X 自動播放動畫 X
  • DECFRAME=X 在動畫 X 中減少一幀
  • DESTROY 銷燬實體
  • FLOATRATE=X 使實體以 X 的懸停速度在空中漂浮
  • FORCEBACK=X 以 X 的倍數對實體施加向後力
  • FORCEBOUNCE=X 對實體施加力,使其以 X 的倍數彈回
  • FORCEFORE=X 以 X 的倍數對實體施加向前力
  • FORCELEFT=X 以 X 的倍數對實體施加向左力
  • FORCERIGHT=X 以 X 的倍數對實體施加向右力
  • FREEZE=X 阻止實體移動
  • INCFRAME=X 在動畫 X 中增加一幀
  • MOVEBACK=X 將實體向後移動 X 個單位
  • MOVEFORE=X 將實體向前移動 X 個單位
  • MOVEUP=X 將實體向上移動 X 個單位
  • NONE 無操作
  • RESETHEAD 如果實體有頭部,則重置頭部角度
  • ROTATEHEAD=X 將實體的頭部旋轉 X 度
  • ROTATEHEADRANDOM=X 以 X 度的隨機角度旋轉實體的頭部
  • ROTATEIY=X 圍繞 Y 軸對實體進行 X 度的增量旋轉
  • ROTATETOPLR 將實體旋轉以面向玩家
  • ROTATEY=X 將實體繞 Y 軸旋轉 X 度
  • RUNFPI=X 按名稱 X 執行另一個 FPI 指令碼(即,appear1.fpi)
  • RUNFPIDEFAULT=X 執行預設 FPI 指令碼,X 值為 (0-初始化、1-主指令碼、2-結束)
  • SETFRAME=X 設定動畫 X 的起始幀
  • SPINRATE=X 以 X 的速度繞 Y 軸旋轉實體
  • STATE=X 將內部變數 State 的值設定為 X
  • SUSPEND 永久停用實體,並保持可見

關於提供的角色,內建了可以播放的動畫。

  • 0 = 生成
  • 1 = 空閒
  • 2 = 緩慢移動
  • 3 = 左側橫移
  • 4 = 右側橫移
  • 5 = 快速移動
  • 6 = 重新裝填武器(或投擲)
  • 10 = 攀爬
  • 11 = 正面衝擊
  • 12 = 正面反彈
  • 13 = 正面起身
  • 14 = 背面衝擊
  • 15 = 背面反彈
  • 16 = 背面起身
  • 17 = 左側衝擊
  • 18 = 左側反彈
  • 20 = 右側衝擊
  • 21 = 右側反彈
  • 31 = 蹲姿空閒
  • 32 = 蹲姿緩慢移動(相同)
  • 33 = 蹲姿左側橫移(相同)
  • 34 = 蹲姿右側橫移(相同)
  • 35 = 蹲姿快速移動(相同)
  • 36 = 蹲姿重新裝填武器(或投擲)
  • 40 = 自由形式空閒
  • 41 = 自由形式移動
  • 50 = 武器生成
  • 51 = 武器空閒
  • 52 = 武器緩慢移動
  • 53 = 武器左側橫移
  • 54 = 武器右側橫移
  • 55 = 武器快速移動
  • 56 = 武器重新裝填武器(或投擲)
  • 57 = 武器全新攀爬
  • 61 = 武器正面衝擊
  • 62 = 武器正面反彈
  • 63 = 武器正面起身
  • 64 = 武器背面衝擊
  • 65 = 武器背面反彈
  • 66 = 武器背面起身
  • 67 = 武器左側衝擊
  • 68 = 武器左側反彈
  • 70 = 武器右側衝擊
  • 71 = 武器右側反彈
  • 81 = 武器蹲姿空閒
  • 82 = 武器蹲姿緩慢移動(相同)
  • 83 = 武器蹲姿左側橫移(相同)
  • 84 = 武器蹲姿右側橫移(相同)
  • 85 = 武器蹲姿快速移動(相同)
  • 86 = 武器蹲姿重新裝填武器(或投擲)
  • 90 = 武器自由形式空閒
  • 91 = 武器自由形式移動


  • 3DSOUND=X 播放由 X 檔名指定的 3D 音效。使用 $0 表示 soundest
  • ACTIVATE=X 使用值 X 啟用此實體
  • ACTIVATE=X 將實體的啟用值設定為 X
  • ACTIVATEALLINZONE=X 啟用觸發區域內的所有實體,使用 X
  • ACTIVATEIFUSED=X 啟用在 IFUSED 屬性中描述的實體
  • ACTIVATEIFUSEDNEAR=X 啟用在 IFUSED 中描述的實體,並靠近它
  • ACTIVATETARGET=X 啟用之前標記為目標的實體,使用 X
  • ACTIVEALLINZONE 啟用實體區域內的所有內容
  • ADVFRAME=X 將動畫前進 X%
  • ALTTEXTURE=X 根據 X 為零或一設定使用的紋理
  • AMBIENCE=X 將場景中的整體環境光級別設定為 X
  • AMBIENCEBLUE=X 將環境光的藍色分量設定為 X
  • AMBIENCEGREEN=X 將環境光的綠色分量設定為 X
  • AMBIENCERED=X 將環境光的紅色分量設定為 X
  • BACKDROP=X 使用 X 檔名載入並貼上螢幕背景
  • CHOOSESTRAFE 隨機選擇一個橫移方向(即左/右/前)
  • COLLECTTARGET 如果目標是可收集的,則在靠近時收集目標
  • COLOFF 停用玩家與此實體的所有碰撞
  • COLON 啟用玩家與此實體的所有碰撞
  • CONTINUEGAME=X 繼續遊戲操作,發出指令進入下一頁
  • DECALPHAFADE=X 遞減 Alpha 漸變,X 為目標值
  • DROPMARKER 實體以後可以返回的放置標記
  • FLOORLOGIC=X 如果 X 為 1,實體永遠不會離開其 Y 位置
  • FOG=X 當 X 為 1 時,設定場景中的霧模式
  • FOGBLUE=X 將霧的藍色分量設定為 X
  • FOGGREEN=X 將霧的綠色分量設定為 X
  • FOGRED=X 將霧的紅色分量設定為 X
  • FOLLOWPLR 如果存在,則跟隨玩家的軌跡
  • HOSTGAME 觸發多人遊戲,被 HOSTED
  • HUDANIM=X 設定動畫序列的 X 檔名(不包括 #.TGA)
  • HUDBLUE=X 設定 HUD 專案的藍色分量
  • HUDFADEOUT 使 HUD 專案從螢幕上淡出
  • HUDFONT=X 設定 HUD 專案的字型名稱
  • HUDGREEN=X 設定 HUD 專案的綠色分量
  • HUDHIDE=X 將 X 設定為要隱藏的 HUD 專案的名稱
  • HUDIMAGE=X 設定 HUD 專案的影像檔名
  • HUDIMAGEFINE=X 使用高質量載入 HUD 的影像
  • HUDMAKE=X 當所有 HUD 專案設定完畢時,使用此操作來最終建立 HUD
  • HUDNAME=X 設定要建立的 HUD 專案的名稱
  • HUDRED=X 設定 HUD 專案的紅色分量
  • HUDRESET=X 呼叫此方法重置 HUD 建立系統
  • HUDSHOW=X 將 X 設定為要顯示的 HUD 專案的名稱
  • HUDSIZE=X 設定 HUD 專案的字型大小
  • HUDSIZEX=X 設定 HUD 專案的 X 大小 90
  • HUDSIZEY=X 設定 HUD 專案的 Y 大小
  • HUDSIZEZ=X 設定 HUD 專案的 X 大小
  • HUDTEXT=X 設定將用於代替 HUD 專案無影像的文字
  • HUDTYPE=X 設定 HUD 型別 (1-生命值、2-生命值、3-武器)
  • HUDUNSHOW=X 將 X 設定為要取消隱藏的 HUD 專案的名稱
  • HUDX=X 設定要放置 HUD 專案的 X 位置百分比
  • HUDY=X 設定要放置 HUD 專案的 Y 位置百分比
  • HUDZ=X 設定要放置 HUD 專案的 Z 位置百分比
  • INCALPHAFADE=X 增加 Alpha 漸變,X 為目標值
  • INCSTATE=X 將狀態變數遞增 X
  • JOINGAME 觸發多人遊戲,被 JOINED
  • LIGHTBLUE=X 淡藍色
  • LIGHTGREEN=X 淡綠色
  • LIGHTOFF=X 燈光關閉
  • LIGHTON=X 燈光開啟
  • LIGHTRANGE=X 燈光範圍
  • LIGHTRED=X 淡紅色
  • LOADGAME=X 觸發載入已儲存的遊戲
  • LOOKATPLR=X 直接看向玩家,即使看不到玩家
  • LOOKATTARGET 旋轉實體的頭,使其面向目標
  • LOOPSOUND=X 迴圈播放由 X 檔名指定的 3D 音效。
  • MOVETOTARGET 移動到目標
  • MUSIC=X 載入並播放使用 X 檔名的 WAV
  • MUSICVOLUME=X 將音樂音量設定為 0-100 範圍內的值
  • NEWGAME=X 觸發執行新遊戲(通常從標題頁面開始)
  • NEXTMARKER 指示實體轉到最後一個放置的標記
  • NOGRAVITY 為物理實體關閉重力
  • PAUSEGAME=X 觸發遊戲暫停,通常進入遊戲選單
  • PIVOTRANDOM=X 隨機繞軸旋轉,面向另一個方向,旋轉 X 度
  • PLRADDHEALTH=X 將 X 點新增到玩家的生命值
  • PLRASS=X 將此實體與玩家關聯(提升)
  • PLRDROP 用於從玩家的庫存中刪除物品
  • PLRMOVEDOWN=X 將玩家向下移動 X 個單位
  • PLRMOVEEAST=X 將玩家向東移動 X 個單位
  • PLRMOVEIFUSED=X 如果玩家執行 USE 操作,則按上述方式移動玩家
  • PLRMOVENORTH=X 將玩家向北移動 X 個單位
  • PLRMOVESOUTH=X 將玩家向南移動 X 個單位
  • PLRMOVETO=X 將玩家移動到 X 實體名稱描述的新位置
  • PLRMOVEUP=X 將玩家向上移動 X 個單位
  • PLRMOVEWEST=X 將玩家向西移動 X 個單位
  • PLRNOASS=X 取消將此實體與玩家關聯
  • PLRTAKE 用於將實體新增到玩家的庫存中並獲取其資產
  • QUITGAME=X 觸發當前遊戲退出,返回到標題頁面
  • RELOADWEAPON 從實體的無限彈藥庫存中重新裝填武器
  • REPEATGAME 觸發多人遊戲重複播放
  • RESETMARKERS 重置此實體放置的所有標記
  • RESUMEGAME=X 觸發遊戲恢復,在之前暫停後
  • ROTATETOTARGET 旋轉實體,使其面向目標
  • RUNDECAL=X 從實體建立貼花,X 為特定模式 1-6
  • RUNFORE 使實體以跑步速度向前移動
  • SAVEGAME=X 觸發當前遊戲的儲存
  • SETALPHAFADE=X 將 Alpha 值設定為 X,導致實體透明
  • SETTARGET 為實體設定內部目標,遵循“目標”條件
  • SHAPEDECAL=X 將實體的貼花模式更改為 X
  • SHOOTPLR 執行在角色屬性中指定的內部 FPI 指令碼 SHOOT
  • SKY=X 將天空盒設定為 X 檔名指定的天空模型
  • SKYSCROLL=X 將天空滾動紋理設定為 X 檔名指定的檔案
  • SOUND=X 播放由 X 檔名指定的音效。使用 $0 指定 soundest
  • SOUNDSCALE=X 按百分比 X 更改 3D 音效比例
  • SPAWNOFF 關閉實體的生成能力
  • SPAWNON 啟用實體的生成能力
  • STRAFE 執行先前選擇的橫移,以躲避玩家射擊
  • TIMERSTART 將 FPI 指令碼計時器重置為零,允許計時
  • TRIGGERFORCE=X 以 X 的大小對實體施加力
  • USEWEAPON 實體朝目標方向開火任何武器
  • VIDEO 全屏播放動畫檔案一次
  • WAYPOINTNEXT 指示實體找到下一個路點
  • WAYPOINTPREV 指示實體找到上一個路點
  • WAYPOINTRANDOM 指示實體選擇一個隨機路點方向
  • WAYPOINTREVERSE 使實體反向行駛,走另一條路
  • WAYPOINTSTART 指示實體找到最近的路點
  • WAYPOINTSTOP 停止實體跟隨路點
華夏公益教科書