2014年1月26日日曜日

GTASAで車(乗り物全般)の制御をする時のお話

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 件のコメント:

コメントを投稿