返信先: Arma3 スクリプト公開スレ

ホーム フォーラム TRI Gaming フォーラム Arma3 スクリプト公開スレ 返信先: Arma3 スクリプト公開スレ

#121433
Stealer
メンバー

追記:
先ほど某氏より
「森の中に基地を作りたいので、範囲内の木を倒すのでなく完全に消し去りたい」との依頼があり、色々試した結果方法を編み出せたので記載します。

こういった要望の場合、マップ固有のオブジェクトでHouse属性のある建造物の削除は簡単ですが、
それに属さないもの、とりわけ木やパイプ等のobjectにはclassnameの取得(typeof)が難しいモノがあります。
こういったモノを手っ取り早く削除するには、IDを使った方法が良い…と思います(現時点では。)

1.objectのIDを表示する
 マップ固有のobjectにはIDが振られており、それを特定することで削除が可能です。
 ID表示の方法はエディタツールの”ID”ボタンを押すか、Tools > Debug consoleを開いて以下のコマンドを打ちます。
 do3DENAction "ToggleMapIDs"
 この状態でマップを拡大していくと、白抜きに黒字の数字がたくさん出てくると思います。これがIDです。
 これで消したいobjectのIDをひたすらメモります。めんどくさいです。
 ここでは3本の木、1441,1440,1439を消すとします。

2.消したい範囲の直近にGame Logicを作る。
 Variable name: log1
 Cond: True
On act: {((position log1) nearestObject _x) hideobjectglobal true} foreach [1441,1440,1439];
 []には先程メモったIDを”,”で区切って入れていきます
 

Classnameが存在する場合はもっと簡単ですが…めんどくさいので後で書きます。
とりあえず以上の方法まで。