CLEOを作っていると一度はしたくなる車の制御
私自身、車から脱出させたり、ニトロさせたり、RPGを飛ばしたり(ほとんどⅣのインフェルノMODの逆輸nyゲフンゲフン)
まあ、それはさておき・・・・
通常ゲーム内のものを制御しようとすると、その対象が存在していないとフリーズやエラー等のバグの元になりかねません。
その際、制御対象が存在しているかを確かめる方法によっては、ほんの少し挙動が違うことがあるためここにメモしておきます。
一応最初に言っておきますが、CJの制御(プレイヤー自身)を中心に話をしますが、一般市民でも同じことができるかも・・・・(2014年1月26日現在、未検証だからはっきり言えない)
さて、自分自身が乗る車を制御しようとする場合、大体この2つの命令を起点にしてると思われます
0449: actor $PLAYER_ACTOR in_a_car
か
Actor.Driving($PLAYER_ACTOR)
この2つ、意味が少し違いますが
上は $PLAYER_ACTOR=CJ が車の中にいるか
下は CJ が車の運転をしているか
一見条件が満たされる時と、満たされなくなる時が同じに見えますが、実は違うみたいなんです。
この2つのコード、満たされるタイミングはほぼ同じになりますが、条件によっては満たされなくなるタイミングが全く違います。
それが、CJが中にいる状態で車が破壊され、それが原因でCJが病院送りになった場合です。
上だと、CJが車と共に爆散した場合、その瞬間に条件が満たされなくなります。
下だと、CJが病院にワープさせられるまで満たされた状態になります。
これを利用すれば少しMOD作りに夢が広がるかも・・・・というお話でした。
0 件のコメント:
コメントを投稿