選択パネル作成方法 選択パネルというのは武器などを買おうとすると表示されるあれです。 まずはパネルの操作方法を説明するためのテキストボックスを作ります。 0512: show_permanent_text_box 'TBOX' これでfxt内のTBOXの文章を表示させることができます。 この文章にはsprintのキー(デフォルトではSpace?)で決定、enter vehicleのキー(デフォルトではF or Enter)でキャンセル、などと書く必要があるわけですが、設定を弄っている場合があるのでそのまま「Enterでキャンセルです」などと書くわけにはいきません。 なのでコマンドのようなものを使いキーを表示させます。 Sanny BuilderのHelpのSCM Documentation\GTA SA\Keypress numbersを見てください。 ~k~~GO_LEFT~ / ~k~~GO_RIGHT~とか~k~~GO_FORWARD~ / ~k~~GO_BACK~などのよくわからない文章が書かれていると思います。 これがコマンドです。 例えばenter vehicleの場合、 15 enter vehicle ~k~~VEHICLE_ENTER_EXIT~ となっているので ~k~~VEHICLE_ENTER_EXIT~がenter vehicleのキーを表示させるコマンドということです。 例えばfxtファイルに、 TBOX Use ~k~~VEHICLE_ENTER_EXIT~ と書くとenter vehicleのキーが表示されるはずです。 次は選択パネルの作り方です。 08D4: 30@ = create_panel_with_title 'PANEL' position 29.0 170.0 width 180.0 columns 1 interactive 1 background 1 alignment 1 08DB: set_panel 30@ column 0 header 'DUMMY' data 'DATA1' 'DATA2' 'DATA3' 'DATA4' 'DATA5' 'DATA6' 'DATA7' 'DATA8' 'DATA9' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' これらをセットで使います。 ※ソースにはこの二つの間に08D6: set_panel 30@ column 0 alignment 1と書かれていますが必要ないっぽいです。 08D4の'PANEL'はパネルの名前で、パネルの一番上に表示されます。 例えばfxtファイルに、 PANEL NAME と書くとパネルの上にNAMEと表示されます。 columnsの値は行数で、interactiveは1でカーソルを動かすことが出来て0では出来ません。なのでこれは1でいいです。 backgroundは1でテキストに背景色表示(灰色のあれ)、0で非表示です。これも1でいいと思います。 alignmentはパネル内のテキストの配置場所指定です。0で中央寄せ、1で左寄せ、2で右寄せです。 08D8のcolumnはよくわからないので0でいいです。 最初に書かれているheader 'DUMMY'はパネルの選択項目の上に表示される文字を設定するためのものです。 'DUMMY'を適当な文字に変えてfxtファイルに文章を書き込むと表示されます。 しかしこの'DUMMY'というのは文字通りダミーという意味なので'DUMMY'のままにしておくと選択項目の上のところには何も表示されません。dokodemo_garage.csでは別にいらないと思ったのでここはDUMMYにしました。 data 'DATA1' 'DATA2'…は選択項目です。 選択項目は1〜14個まで作れるっぽいです。 9個だけでいい場合は上のように10個目以降を'DUMMY'にすればいいわけです。 ここの項目も当然fxtファイルから読み取るのでfxtファイルを作っておきましょう。 次はどこが選択されているか取得する方法です。 08D7: 0@ = panel 30@ active_row これを使えばさっき作ったパネル30@の選択されている所を知ることができます。 1行目が選択されていれば0@は0になり、2行目なら1に、3行目なら2になります。 次はどこが選択されたか取得する方法です。 dokodemo_garage.csではsprintが押されたときの選択されている所(08D7で取得したもの)を選択された場所としていたのですが、 08D8: $9637 = panel $2419 selected_row を使えばどこが選択されたかわかるっぽいです。(これを書いてて気づきました。) 最後はパネルとテキストボックスの削除です。 08DA: remove_panel 30@ 03E6: remove_text_box これで削除します。 選択を決定したりキャンセルした時に実行すればいいと思います。 |