Advanced Turn Signals - v2.0.4 (Created By QuestDragon)

～作成した経緯～
今日も多数の方向指示器Modがアップロードされていますが、その多くは点灯と消灯を手動で行うものだったり、方向指示器の音がなかったりするものがほとんどでしたので、スクリプト制作の練習も兼ねて作成してみました。
方向指示器の音に関してはゲーム側に一応用意されているのですが、すごく小さい音かつ、ほんの一部の車両でしか鳴らないので、方向指示器の音や方向指示器レバーの音がなる機能も開発しました。

～機能～
車の方向指示器を操作することができます。左折、右折、ハザードランプの点灯、消灯が可能です。
現実の車で採用されている方向指示器の挙動をできる限り再現しており、ハンドルを切って戻すと自動で方向指示器が消灯する機能が用意されています。（ハンドルの角度はiniファイルにて調整可能）
その他に、方向指示器と逆の方向にハンドルを回した際にも消灯するようになっていたり、方向指示器の点灯状態とハザードランプの点灯状態は独立しているなど、細部の挙動にもこだわっています。
低速走行時にハンドルを回すと、自動で方向指示器が点灯する機能もつけています。（NoRainさんからのリクエスト）
方向指示器に関する効果音を使用できます。scripts\AdvancedTurnSignals\TurnSignalSounds フォルダにサンプルの各種効果音を同梱しています。xmlファイルを使用して車両ごとにカスタマイズすることも可能です。（iniファイルにて効果音の有効無効を切り替えられます）
スクリプトから送信される通知の表示言語はscripts\AdvancedTurnSignals\Localization.iniにて翻訳できます。
コントローラー操作にも対応しています。なお、コントローラーでの方向指示器操作を行わない方のために使用の有無をiniファイルから設定できるようになっています。（stevensonjnrさん、dustybluesさんからのリクエスト）
修飾キーや2つのコントローラーボタンを組み合わせることも可能です。（Reldam88さんからのリクエスト）
非推奨ですが、方向指示器の代わりにヘッドライトを使用した制御も可能です。（DiNaganoさんからのリクエスト）

～機能追加、フィードバックについて～
制作者は初心者なので何かと至らないところがあると思います。
不具合等を発見しましたら、QuestDragonまでご連絡ください。
また、「こんな機能がほしい！」「ここはこうしてほしい！」という要望がありましたらご相談ください。
こちらもスクリプトModについて勉強したいので、ご意見や要望はいつでもお待ちしております。

～同梱物～
zipファイルには以下のファイルが含まれています。
Localization_JPフォルダ：日本語翻訳ファイルが同梱されているフォルダです。
	Localization.ini：通知欄に表示されるメッセージ内容をカスタマイズできます。（日本語翻訳済み、使用時はAdvancedTurnSignalsフォルダ内のファイルと置き換えてください。）
scriptsフォルダ：スクリプトMod本体と付随ファイルが同梱されているフォルダです。
	AdvancedTurnSignalsフォルダ：スクリプトModが動作するために必要なファイルが同梱されているフォルダです。
		TurnSignalSoundsフォルダ：効果音の格納フォルダです。
			HAZARD_BUTTON.wav：ハザードランプを点灯したり、消灯したりした際に再生されるサウンドです。
			INDICATOR_SOUND.wav：方向指示器が作動している間再生されるサウンドです。
			TURN_LEVER_INTRO.wav：方向指示器を操作するキーを押した際に再生されるサウンドです。
			TURN_LEVER_OUTRO.wav：方向指示器が自動消灯した際に再生されるサウンドです。
		Localization.ini：通知欄に表示されるメッセージ内容をカスタマイズできます。
		TurnSignalSoundSetup.xml：再生する音声ファイルをデフォルトと車両ごとに指定できます。
	AdvancedTurnSignals.dll：スクリプト本体です。
	AdvancedTurnSignals.ini：設定ファイルです。
	NAudio.Core.dll：NAudio関連ファイルです。ウインカー音の再生に必要です。
	NAudio.dll：NAudio関連ファイルです。ウインカー音の再生に必要です。
	NAudio.Wasapi.dll：NAudio関連ファイルです。ウインカー音の再生に必要です。
	NAudio.WinForms.dll：NAudio関連ファイルです。ウインカー音の再生に必要です。
	NAudio.WinMM.dll：NAudio関連ファイルです。ウインカー音の再生に必要です。
Readme_JP.txt：日本語の説明書です。（本ファイル）
Readme_EN.txt：英語の説明書です。

～インストール～
scriptsフォルダをGrand Theft Auto V フォルダにコピーして下さい。
以下リンクからScript Hook Vをダウンロードし、zipを解凍したらbinフォルダ内にある2つのdllファイルをGrand Theft Auto Vフォルダにコピーしてください。
http://dev-c.com/gtav/scripthookv/
【重要】本スクリプトModはScriptHookV DotNet のバージョン3.7.0が必要です。公開時点では安定版の3.7.0はリリースされておりませんので、Nightlyビルドを使用する必要があります。
以下リンクからScript Hook V .NET のNightlyビルドをダウンロードし、zipを解凍したら「ScriptHookVDotNet」の文字列が入った7個のファイルをGrand Theft Auto Vフォルダにコピーして下さい。
https://github.com/scripthookvdotnet/scripthookvdotnet-nightly/releases/latest
Grand Theft Auto V Enhanced でAdvanced Turn Signalsを使用する場合は下記のScript Hook V .NET Enhanced をダウンロードしてください。
https://www.gta5-mods.com/tools/script-hook-v-net-enhanced
その他、上記2つが動作する要件を満たす必要があります。詳細は各ダウンロードページの説明欄をご確認ください。

～インストール時のSCRIPT HOOK V ERRORについて～
ScriptHookV DotNet Nightlyビルドを導入してGTA5を起動すると、「SCRIPT HOOK V ERROR」が表示され、scriptsフォルダに導入されている.NETスクリプトのすべてが読み込まれない現象になることがあります。
これは、ScriptHookV DotNetの前提条件を満たしていないことが原因です。Releaseビルドでは動いていても、Nightlyビルドでは動かないことがあります。
そのため、今一度次のコンポーネントがインストールされているかご確認ください。
.NET Framework 4.8 （ランタイム、開発者ビルドの"両方"が必要です。）
Visual C++ Redistributable for Visual Studio 2019 x64

～各種設定～
設定はiniファイルから行います。
基本的にiniファイル内にも説明を記述しているので困ることはないと思いますが、こちらにも記載しておきます。
GeneralセクションのEnabledは本スクリプトの有効化と無効化を切り替えます。「true」で有効、「false」で無効になります。
UseSoundは効果音の有効化と無効化を切り替えます。同じく「true」で有効、「false」で無効になります。ただし、音声ファイルが正しく用意されていない場合、スクリプトの動作は継続されますが本来音声ファイルが必要になる操作を行っても音声ファイルは再生されません。
InterSoundは効果音の音声ファイルが見つからなかった場合に、デフォルトの音声ファイルを再生するかを切り替えます。同じく「true」で有効、「false」で無効になります。ただし、デフォルトの音声ファイルが設定されていないか、デフォルトの音声ファイルも存在しない場合は本来音声ファイルが必要になる操作を行っても音声ファイルは再生されません。
HeadlightModeは方向指示器を点滅させる代わりにヘッドライトを点滅させます。方向指示器が装備されていない車両でもAdvanced Turn Signalsを使用したい方に向けた機能ですが、動作が不安定になる可能性があるため、非推奨としています。
Keysセクションでは方向指示器のキー設定を変更できます。Leftが左折、Rightが右折、Hazardがハザードランプです。指定する文字列は以下のサイトをご確認ください。指定が正しくない場合、スクリプトModロード時に一時的にデフォルト設定が読み込まれます。
https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.keys?redirectedfrom=MSDN&view=windowsdesktop-7.0
Buttonsセクションでは方向指示器をコントローラーで操作する場合のボタン設定を変更できます。コントローラーを使用してスクリプトModを操作する場合はUseButtonを「true」にしてください。ボタン設定はKeysセクションと同じく、Leftが左折、Rightが右折、Hazardがハザードランプです。指定する文字列はiniのコメントアウト欄をご確認ください。指定が正しくない場合、スクリプトModロード時に一時的にデフォルト設定が読み込まれます。
AutoOffセクションでは方向指示器の自動消灯に関する設定が行なえます。AutoOffは有効化と無効化を切り替えます。「true」で有効、「false」で無効になります。ただし、設定条件が正しくない場合、スクリプトModロード時に一時的に無効になります。
ReadyAngleは方向指示器が自動消灯するために回さなければならないハンドルの最低角度です。この角度を超えてハンドルを切ると自動消灯機能が働くようになります。
OffAngleは方向指示器が自動消灯するハンドルの角度です。この角度までハンドルを戻すか、方向指示器と反対の方向へこの角度まで相対で回すと方向指示器が自動で消灯します。
KeyboardCompはキーボードなどの細かいハンドル操作ができない操作方法を用いてスクリプトModを使用する場合に有効にするオプションです。「true」で有効、「false」で無効にでき、有効にすると、方向指示器は指定したハンドル角度まで戻ると指定したミリ秒後に自動消灯するようになります。アナログコントローラー等をお使いの場合で指定したハンドル角度まで戻った際に即自動消灯したい場合はここを無効にします。
AutoOffDurationはKeyboardCompが有効になっている状態でOffAngleの値まで戻った際に方向指示器を自動消灯する所要時間をミリ秒単位で指定できます。※約200ミリ秒以下にすると正常に動作しない可能性があります。即時自動消灯を行う場合はKeyboardCompを無効にしてください。
AutoOnセクションでは方向指示器の自動点灯に関する設定が行なえます。AutoOnは有効化と無効化を切り替えます。「true」で有効、「false」で無効になります。ただし、設定条件が正しくない場合、スクリプトModロード時に一時的に無効になります。
OnAngleは方向指示器が自動点灯するために回さなければならないハンドルの最低角度です。この角度を超えてハンドルを切り、OnSpeed以内の速度で走行すると自動点灯機能が働くようになります。
OnSpeedは方向指示器が自動点灯するおおよその車両速度です。この速度以内で走行し、ハンドルを切ると方向指示器が自動で点灯します。
UseLeverSoundは方向指示器が自動点灯した際にレバー音を鳴らすかどうかの設定です。UseSoundがtrueである必要があります。「true」で有効、「false」で無効になります。ただし、設定条件が正しくない場合、スクリプトModロード時に一時的に有効になります。
角度についてですが、GTA5におけるハンドルの最大角度は40度とのことです。40度までの値であればスクリプトModは自動消灯機能を正常に実行できると思います。
 
～使い方 <本体編>～
iniファイルにてEnabledをTrueにしているとゲームロード時に自動で読み込まれ、有効になります。
乗り物に乗って、iniファイルに設定したキーまたはボタンを押すと方向指示器が作動します。（自転車やヘリコプターなど、一部の乗り物を除く）
UseSoundをTrueにしていて、音声ファイルが正しく用意されている場合は効果音が再生されます。
AutoOffをTrueにしていて、設定が正しい場合は右左折が終わると自動で方向指示器が消灯します。（バイクを除く）
KeyboardCompをTrueにしている場合はキーボード操作後、AutoOffDurationで指定したミリ秒後に方向指示器が自動消灯します。
AutoOnをTrueにしていて、条件を満たしている場合は方向指示器が自動点灯します。

～使い方 <Localization.ini編>～
スクリプトModから送信されるメッセージの内容を編集できます。
文字の色を変更したり、太字にしたりすることができます。
キー側の文字（=より左側）は編集しないでください。スクリプトModが編集したメッセージを認識できなくなります。
メッセージの内容が読み込めない場合は一時的に該当メッセージ部分が英語表記になります。

～使い方 <TurnSignalSoundSetup.xml編>～
再生する効果音の音声ファイルを指定できます。
コメントとしてxmlファイル側にも記述していますが、<DefaultSettings>のタグは削除しないでください。効果音が再生されなくなってしまいます。
各タグ内の音声ファイル名を編集することで再生する音声ファイルを変更することができます。
DefaultSettingsタグの下にはサンプルとして車両ごとの音声ファイル設定を記述しています。あくまでもサンプルなので削除してしまっても構いません。
車両ごとに音声ファイルを指定する場合はサンプルで用意されているタグの構成を真似してください。（コピペがおすすめです）
各タグ（SoundSetupなど）はサンプルと全く同じに書いていないとスクリプトModが読み込めませんのでご注意ください。
Vehiclesタグ内のVehicleタグは複数追加できます。同じ音声ファイルを複数の車両で再生したい場合はVehicleタグを増やすだけで指定することができます。
SoundsタグはTURN_LEVER_INTRO、TURN_LEVER_OUTRO、INDICATOR_SOUND、HAZARD_BUTTONの計4つのタグを必ず書いてください。
再生したくない箇所がある場合はタグ名だけ書いておいてください。タグを省略することはしないでください。（例：<HAZARD_BUTTON /> または <HAZARD_BUTTON></HAZARD_BUTTON>）

～余談～
ハンドルの角度で方向指示器を自動消灯するか判断しているので、ikt氏のManual Transmission Modにも対応させようかと思ったのですが、GTA5のアップデートによって使えなくなっていることが判明し、実装できませんでした…。

～免責事項～
本スクリプトModを使用したことにより生じた被害に関して、私QuestDragonは一切の責任を負いかねます。自己責任でご使用ください。
2次配布は禁止です。
予告なく配布を停止することがあります。予めご了承ください。

制作：QuestDragon