返信先: ARMA3 ミッションエディットスレ

ホーム フォーラム TRI Gaming フォーラム ARMA3 ミッションエディットスレ 返信先: ARMA3 ミッションエディットスレ

#47546
POLPOX
メンバー

久々に覗いてみたら質問が来ていたので答えてみる。
>るーでるさん
たぶんそれはaddEventHandlerを使えば実現できると思います。
addEventHandlerはユニット名と配列を投げると、配列の内容に応じてタイミングでスクリプトを発動させられます。
そのユニットが死亡したタイミングでスクリプトを起動させるなら、
(ユニット) addEventHandler ["Killed",{(適当なスクリプト)}]
で起動できます。また、起動したスクリプトには独立して引数が設定されていて、スクリプトの中において

_this select 0//死亡したユニット
_this select 1//殺害したユニット

が引数として使えます。

これを踏まえると、敵部隊には
(ユニット) addEventHandler ["Killed",{enemyKilledCount = enemyKilledCount + 1}]
スクリプト湧きの民間人には

(ユニット) addEventHandler ["Killed",{
if (isPlayer (_this select 1)) then {
 civilKilledCount = civilKilledCount + 1
} ;
}]

とすると実現できると思います。
民間人のスポーンにどのスクリプトを使っているかは知りませんが、恐らくスクリプトの引数の中にスポーンさせたときどんなスクリプトを起動するかっていう引数があると思うので、そこにぶち込めばいいと思います。

また、敵一人ひとりにスクリプトを適用するのが面倒なら、

{
 if (side _x == opfor) then {
  _x addEventHandler ["Killed",{enemyKilledCount = enemyKilledCount + 1}] ;
 } ;
} forEach allUnits

とすれば自動的に全部の敵(この場合はOPFOR陣営)に適用できます。