スクリプト作成

出典: LFS Manual
ナビゲーションに移動検索に移動

by AndroidXP

はじめに

2006年12月のパッチVのリリースの際に、LFSの開発者は新しいスクリプトシステムを公開しました。これは、ほとんどのFPSシューティングゲームで実装されているものと非常に似ています。

一般的に、このシステムはタスクを自動化するのに便利です。 一般的には、一般的なタスクの自動化、車ごとのオプションのカスタマイズ、キーのバインディングを変更する簡単なトグル(その他)などが可能です。このガイドは、LFSスクリプトシステムの一般的な理解と、簡単なスクリプトの例をいくつか紹介することを目的としています。

使用方法

基本

スクリプトファイルは拡張子に.lfsおり、LFS\data\scriptフォルダ内に入っています。

これらのファイルを編集するには、まずメモ帳などのテキストエディタで開きます。

もちろん、新しいファイルを作成することもできます。新規作成する際には、正しい拡張子で保存するよう注意してください。

フォルダ内を整理するために、サブディレクトリ内にスクリプトを保存しておくことも可能です。

一般に、スクリプトファイルの各行はLFSが実行するコマンドを表し、上から下へと進んでいきます。唯一の例外は空行と"//"で始まる行で、これらはコメントとして扱われ、無視されます。基本的には、LFSが各行を読み、チャットウィンドウに書き込み、リターンを打つというシステムを想像していただければと思います。もちろん、その通りではありませんが、大まかなイメージはつかめるかと思います。

予約済みのファイル名

新しいスクリプトファイルには通常好きな名前を付けることができますが、いくつかの名前はLFSにとって特別な意味を持ちます。パッチを最初にインストールしたとき、影響を受けるファイルはすべてscriptフォルダにすでに存在していますので、ファイルを移動したり上書きしたりしない限り、すべてうまくいきます。

  • autoexec.lfs
このスクリプトはその名の通り、LFSが起動するたびに自動的に実行されるため、スクリプトの初期化に最適な場所です。
  • CAR.lfs
"CAR" を3文字の車のショートカット(こちらまたは下記参照)に置き換えると、ガレージで対応する車が選択されるたびにこれらのスクリプトが実行されます。例えば、XR GT Turboを選択した場合、LFSは "XRT.lfs "を実行します。通常、FOVやフォースフィードバックの強さなど、車種固有の設定に使用されます。
  • road.lfs, sequential.lfs, paddle.lfs
これらのファイル名は予約されているわけでも、自動的に実行されるわけでもありませんが、デフォルトでCAR.lfsスクリプトの中から実行されるため、言及する価値があります。主な目的は、特定のシフタータイプの車に適用されるべきカスタム設定です。Road.lfs はHゲートシフター、sequential.lfs はシーケンシャルスティックシフター、paddle.lfs はパドルを持つ車に相当するものです。このようなシフタータイプをサポートするホイール(例えばLogitech G25)を持っている場合、これらのスクリプトファイルは現在選択されている車に合うようにシフターの設定を自動的に変更するのに便利です。
車とギアボックスを一致させるために、以下のように割り当てる必要があります:
Road: UF1, XFG, XRG, XRT, RB4, FXO, LX4, LX6, FZ5, FZR, UFR, RAC
Sequential: FBM, FOX, FO8, MRT, XFR, XRR, FXR
Paddle: BF1

コマンド

以下に掲載しているコマンドはよく使われるものの抜粋です。

全てのコマンドのリストは、LFS\docs\Commands.txt で確認できます。

Options & Miscellaneous

/run        [scriptname]    - スクリプトを実行する(data\script\scriptname.lfs),
                              例:"/run myScript", "/run myFolder\myScript"
/say        [message]       - チャットを入力するのと同じです
/echo       [text]          - テキストを表示する(ローカル画面のみ)
/fov        [degrees]       - 視野
/ff         [0-200]         - フォースフィードバックの強度
/wheel_turn [degrees]       - コントローラーの回転角を指定する
/autoclutch [0-1]           - オートクラッチのON/OFF切り替え
/shifter    [auto/sequential/shifter]    - シフターの種類
/view       [fol/heli/cam/driver/custom] - 視点の選択
/view       [save/reload]  - 現在のカスタム視点を保存/リロードする

Binding & Executing Commands

Binding
/axis   [axis]   [function] - e.g. "/axis 2 throttle"   (to unbind, use -1)
/invert [0/1]    [function] - e.g. "/invert 1 brake"    
/button [button] [function] - e.g. "/button 5 shift_up" (to unbind, use -1)
/key    [key]    [function] - e.g. "/key Q handbrake"
/ctrlf  [num]    [text]     - change shortcut text, e.g. "/ctrlf 1 hello"
/altf   [num]    [text]     - change shortcut text, e.g. "/altf 1 bye"

Simulating key presses
/press [key]                - simulate key press
/shift [key]                - SHIFT + key
/ctrl  [key]                - CTRL + key
/alt   [key]                - ALT + key

パラメータ リファレンス

/button と /key コマンドの機能名
steer_left, steer_right, steer_fast, steer_slow
throttle, brake, shift_up, shift_down
clutch, handbrake, left_view, right_view, rear_view
horn, flash, reset, pit_speed, tc_disable, zoom_in, zoom_out
reverse, gear_1 - gear_7, ctrl_f1 - ctrl_f12, ignition

コントローラーのボタンの番号を調べるには、オプション>コントロールと進んでください。
そして問題のボタンを押す。画面右上にボタン番号と現在割り当てられている機能が表示されます。
画面右中段に割り当てられた機能が表示されます。

/axis と /invert コマンドの機能名
steer, combined, throttle, brake
lookh, lookp, lookr
clutch, handbrake, shiftx, shifty

キーを押すコマンド(press / shift / ctrl / alt)のパラメータ
Letters A to Z
Numbers 0 to 9
F1 to F12
up, down, left, right
space, enter, esc, tab
less, more (< >) or (, .) depending on your locale

一般的な注意点として、コマンドリストを見て気づいたかもしれませんが、現在のところ、他のスクリプトコマンドをボタンにバインドすることは不可能です。幸いなことに、テキストのショートカットキー(Ctrl+F1~F12、Alt+F1~F12)が使えるので、/ctrlf 1 /say hello/say hello をCtrl+F1にバインド)と /button 1 ctrl_f1 (Ctrl+F1押下をボタン#1へ)を使えばいいのである。しかし、これはスクリプトのためにショートカットキーのいくつかを手放さなければならないことを意味しますが、利用可能なショートカットが全部で32個(スクリプトでバインドできるのは24個)あることを考えれば、実際には問題ないはずです。

"F9 > F10 > F11 > F12 > Off" 切り替え

Shortcut keys used: Ctrl+F12

このスクリプトの基本的な考え方は、1つのボタン(例えばホイールのボタン)でF9-F12メニューを循環させたいというものです。これを実現するために、5つのスクリプトと autoexec.lfs のエントリが必要です。

このスクリプトでは、Ctrl+F12 のショートカットを使い、ボタン #0 (コントローラーのどのボタンでも) をバインドして実行させます。/press コマンドを複数回使用することで、事前に手動でメニューを開いていた場合でも、メニューが正しく表示されるようになります。例えば、F11メニューがすでに開いていて、F9キーを押さずに viewF11.lfs を実行すると、代わりにF11メニューが閉じてしまいますが、これはレース中に絶対に起こってほしくないことです。

次のように動作します:

  1. Button 0 -> Ctrl+F12 -> viewF9 -> press F9 + rebind Ctrl+F12 to run viewF10
  2. Button 0 -> Ctrl+F12 -> viewF10 -> press F10 + rebind Ctrl+F12 to run viewF11
  3. Button 0 -> Ctrl+F12 -> viewF11 -> press F11 + rebind Ctrl+F12 to run viewF12
  4. Button 0 -> Ctrl+F12 -> viewF12 -> press F12 + rebind Ctrl+F12 to run viewOff
  5. Button 0 -> Ctrl+F12 -> viewOff -> turn off menu + rebind Ctrl+F12 to run viewF9
...

viewF9.lfs

/press F10
/press F9
/ctrlf 12 /run viewF10

viewF10.lfs

/press F9
/press F10
/ctrlf 12 /run viewF11

viewF11.lfs

/press F9
/press F11
/ctrlf 12 /run viewF12

viewF12.lfs

/press F9
/press F12
/ctrlf 12 /run viewOff

viewOff.lfs

/press F10
/press F9
/press F9
/ctrlf 12 /run viewF9

autoexec.lfs

/button 0 ctrl_f12
/ctrlf 12 /run viewF9

Indicator Control

Shortcut keys used: Ctrl+F10, Ctrl+F11

この例では、2つのボタンでインジケータを快適にコントロールする簡単な方法を紹介します。必要なのは3つのスクリプトと autoexec.lfs へのいくつかの入力、ショートカットキーはCtrl+F10とF11を使用します。インジケータは次のように動作します。左ボタンを1回目に押すと左のインジケータが作動し、2回目に押すと解除されます。右ボタンはその逆です。左と右の切り替えも可能です。使いやすいように、スクリプトは現在選択されているモードを示す緑色の矢印をチャットエリアに出力します。

同じロジックを使い、別のスクリプトを追加することで、第3のボタンによるハザードの制御も簡単に実装できる。

indicateLeft.lfs

/press 7
/ctrlf 11 /run indicateStop
/ctrlf 10 /run indicateRight
/echo ^2‹ ‹ ‹

indicateRight.lfs

/press 8
/ctrlf 10 /run indicateStop
/ctrlf 11 /run indicateLeft
/echo ^2› › ›

indicateStop.lfs

/press 0
/ctrlf 10 /run indicateRight
/ctrlf 11 /run indicateLeft
/echo ^8Off

autoexec.lfs

/button 16 ctrl_f11
/button 18 ctrl_f10 
/ctrlf 10 /run indicateRight
/ctrlf 11 /run indicateLeft

オートシフター設定 (Logitech G25/G27 ユーザー向け)

Shortcut keys used: None

現在選択されている車で使用されているシフトメカニズム用にコントローラのバインディングを自動的に調整するには、以下のように既存の road.lfs, sequential.lfs, paddle.lfs を変更すればよいのです。

オプションで、フリーシフター/パドルボタンを使いたいもののリバインドを追加することも可能です。例えば、シフターユニットを使うときは、右のパドルがハンドブレーキ、左のパドルがホーンになり、パドルを使うときは、シーケンシャルスティックを引くとハンドブレーキ、押すとホーンが鳴るという具合です。こうすることで、G25の手の届きやすい数少ないボタンの機能を最大限に活用できます。このリ・バインディングは、サンプルスクリプトには含まれていません

road.lfs

/button 8 gear_1
/button 9 gear_2
/button 10 gear_3
/button 11 gear_4
/button 12 gear_5
/button 13 gear_6
/button 14 reverse

/shifter shifter
/autoclutch 0

/echo Shiftmode: H-Gate

sequential.lfs

/button 9 shift_up
/button 8 shift_down

/shifter sequential
/autoclutch 0

/echo Shiftmode: Sequential

paddle.lfs

/button 4 shift_up
/button 5 shift_down

/shifter sequential
/autoclutch 1

/echo Shiftmode: Paddles