AIスクリプトリファレンス

命令(その他)

disable-self

■説明
この命令はそれが入っているルールを無効化する。 無効化は次の実行時に効力を発するから、同じルール内の他の命令はやはり一度最後に実行される。

■注釈
初期化など一度しか実行したくないルールを作成する場合に使う命令である。下記の例は戦士育成所の建設を一度だけ行うルールである。

(defrule 
(can-build barracks)
=> (build barracks)
(disable-self)
)

resign

■説明
この命令はコンピュータプレイヤーにゲームを放棄させる。

■注釈
下記の例はゲーム開始後6000秒(100分)になったらゲームを放棄するルールである。

(defrule 
(game-time equal 6000)
=>
(resign)
)

enable-timer <timer-id> <value>

■説明
この命令は指定されたタイマーを有効にし指定された時間の間隔を設定する。

■注釈
タイマーはループしないので、繰り返し使用する場合はタイムアウトしたらタイマーを再起動する必要がある。<timer-id>は1〜10まで使用可能。<value>にはタイムアウトまでの秒数を設定する。下記の例は町が攻撃されたらタイマ1を10秒に設定して有効にするルールである。

(defrule
  (town-under-attack)
=>
(enable-timer 1 10) (disable-self)
)

disable-timer <timer-id>

■説明
この命令は指定されたタイマーを無効にする。

■注釈
起動したタイマを止めるときに使用する。タイマを止めることでタイムアウトイベントが起きないようにできる。下記の例は町が攻撃されていない場合、タイマ1を無効にする。

(defrule
(not(town-under-attack))
=> (disable-timer 1)
)

acknowledge-event <event-type> <event-id>

■説明
この命令は、関連するフラグをリセットすることによって受信したイベントに受取り通知をする。

■注釈
シナリオとAIを連動させる場合に使用する条件。<event-type>はtriggerのみ指定できる。「acknowledge-event」命令を使用しないと「event-detected」条件が真のままになるので注意が必要。下記の例はシナリオからのAIシグナル1を検出した場合、攻撃を行うルールである。

(defrule
  (event-detected trigger 1)
=>
  (acknowledge-event trigger 1)
  (attack-now)
)

acknowledge-taunt <player-number> <taunt-id>

■説明
この命令はボイスメッセージの受取り通知(フラグのリセット)をする。 AIの他のイベントシステムのように、ボイスメッセージの検出は明示的な受取り通知が必要である。
<player-number>に「any」または「every」ワイルドカードパラメータを使用してよい。
また、<player-number>にルール変数を使用してもよい。

■注釈
<taunt-id>は1〜255まで使用可能。「acknowledge-taunt」命令を使用しないと「taunt-detected」条件が真のままになるので注意が必要。下記の例はボイスメッセージ「3」を受取った場合、受取り通知をする例である。

(defrule
  (taunt-detected any-enemy 3)
=>
  (acknowledge-taunt this-any-enemy 3)
  (chat-to-player this-any-enemy "No food for you")
)

generate-random-number <value>

■説明
この命令はプレイヤー特有の指定された範囲内(1〜<value>)の整数の乱数を生成する。乱数は記憶され、その値を調べることができる。この命令の続けての実行は、存在する値を置き換える新しい乱数を生成する。

■注釈
AIの行動をランダムにしたい場合に使用する命令。この命令で発生させた乱数の値は「random-number」条件で参照することができる。「generate-random-number」命令を何度も実行することで「random-number」条件の値は次々に変更される。下記の例はゲーム開始時に1〜100の間の乱数を生成するルールである。

(defrule 
(true)
=>
(generate-random-number 100)
(disable-self)
)

do-nothing

■説明
この命令は全く何もしない。主にテスト目的のスタブとして使用される。すべてのルールは最低1つの命令が必要であることに注意。

■注釈
テスト用に命令を1つもしないルールを作成するときに使用する。AIの文法上、命令なしのルールは作成できないのでこの命令を使用する。また、ルールが1つもないAIもエラーとなるので、その場合、下記の例のようなルールを作成する必要がある。

(defrule
  (true)
=> (do-nothing) )

log <string>

■説明
この命令は指定された文字列をログファイルに書き込む。単にテスト目的に使用される。ログ書き込みが有効になっている場合のみ機能する。

■注釈
ログ機能を有効にする方法は不明。コマンドラインオプション設定やシナリオのテスト実行後に「C:\AILog.txt」という空テキストができたという話もあるが詳細は不明。

(defrule
  (game-time == 600)
=> (log "10分経過") (disable-self) )

log-trace <value>

■説明
この命令は指定された値をログファイルに書き込む。単にルールが実行されたかチェックするためのテスト目的に使用される。ログ書き込みが有効になっている場合のみ機能する。

■注釈
ログ機能を有効にする方法は不明。

(defrule
  (game-time == 600)
=> (log-trace 1) (disable-self) )

disable-rule <value>

■説明
ドキュメントに記載なし。

■注釈
AIスクリプトの命令として使用しても文法エラーにならないが使用方法が不明な条件。実行しても何も起こらないように見える。この命令自体が使用できないように無効にされている可能性もある。

例なし

enable-rule

■説明
ドキュメントに記載なし。

■注釈
AIスクリプトの命令として使用しても文法エラーにならないが使用方法が不明な条件。実行しても何も起こらないように見える。この命令自体が使用できないように無効にされている可能性もある。

例なし