[FiveM]サーバーサイドで車両を追加する方法を解説![Replace/Add-On]

 

どうも元マヨラーのHachiQ4です。

今回は、FiveMのサーバーを立てる方法講座第3弾として「実車MODを入れる方法(サーバーサイド)」というテーマで解説していこうと思います。

なんやかんやでサーバーを建てるときに知りたいことってこれじゃないでしょうか(笑)

FiveMについて

FiveMについての基本的なことから導入方法まではこちらの記事で解説しています。

ちなみに、私が公開しているサーバーもあります(笑)

 

FiveMサーバーを立てよう講座

第一弾:「自分でサーバーを立てよう!(FXサーバー)」

第二弾:「サーバーの基本的な設定を済ませよう!」

第三弾:「サーバーに車両MODを追加しよう!」

第四弾:「サーバーにマップMODを入れてみよう!」

第五弾:「サーバーを公開してみよう!」

最終回(仮):「サーバーにプレイヤー情報を保存しよう!EssentialModeBase」

 

作業がやりやすくなるようにいいもの作ったよ!

毎度毎度フォルダーやファイルを作るのはぶっちゃけめんどいので、自分なりのテンプレートを作って使っています。

せっかくこんな記事を書いたので、みなさんにもお使いいただけるようにテンプレートを配布します。

(利用方法はreadme.txtをご覧下さい。)

 

PR:何かを始めるのに遅すぎるということはないのだ

PR:何かを始めるのに遅すぎるということはないのだ

バニラの車両と入れ替える(Replace)

とりあえず一番手っ取り早く実車MODを導入する方法としてReplace形式で導入する方法があります。

ただし、いくつか問題点もあるのでその辺も踏まえて解説していきます。

 

参考:

 

準備するもの

  • ご自分のFiveMサーバー
  • 入れ替える車両MODのファイル(.yft,ytd…)
  • OpenIV(あった方がいい)
  • テキストエディター(あったほうがいい)

 

「resources」フォルダーに新しいフォルダーをつくる

まずはMODを導入するための最初の準備として、Replace車両を導入する場所を用意します。

FiveMのサーバーにMODを追加するときは「resources」フォルダーに追加します。

とりあえず今回は実車MODを導入するということで「vehicles」という名前のフォルダーにでもしておきます。

(このフォルダーの名前は何でもいいです。任意の名前にしてください。)

 

「__resource.lua」と「stream」フォルダーをつくる

次に「vehicles」フォルダーにファイルを読み込ませるためのファイルとフォルダーを用意します。

  • stream   ——フォルダー
  • __resource.lua

「__resource.lua」を作るときは、新規テキストファイルを作成しファイル名を「__resource.lua」に変更します。

(拡張子の警告が出ますが気にしなくてOK)

ファイルには何も書かなくて大丈夫です。

 

入れ替えるMODを「stream」フォルダーにコピーする

あとはMODを入れるだけです。

「stream」フォルダーに入れ替える車両のモデルとテクスチャーをコピーしてください。

例えば

[vehicles]

—–“__resource.lua”

—–[stream]

———banshee.yft

———banshee.ytd

———banshee_hi.yft

 

改造パーツを入れたいとき/複数の車両を入れたいとき

実車MODの改造パーツも車両モデルなどと同じように「stream」フォルダーに追加します。

ただし、後々わかりにくくなったりするので以下のようにフォルダしておくとわかりやすいかもしれません。

[stream]

—[banshee]

———banshee.yft

———banshee.ytd

———banshee_hi.yft

———banshee_mods.rpf

—[sultan]

———kuruma.yft

———kuruma.ytd

———kuruma_hi.yft

———kuruma_hi.ytd

———kuruma_mods.rpf

 

ちなみに、改造パーツはrpf形式でもそれを解凍して個別に導入しても反映されます。

 

「server.cfg」に追記する

server.cfgに以下のコードを追加してください。

start vehicles

(「vehicles」はフォルダーの名前です。)

導入は以上です。

車両を新しく導入したら「cache」フォルダーを削除し、前回の記事で解説した「restart sessionmanager」を実行しておきましょう。

(やっておかないとサーバーに入るときに”Couldn’t load sessionmanager”というエラーが出たりします。)

 

問題点:handling.metaなどがクライアント側に依存する

Replace形式であれば驚くほど簡単に実車MODを導入できるので多数の車両を導入したい時に便利な方法です。

ところが、Replace形式で導入できるのはモデルとテクスチャだけなので、handling.metaやvehicles.meta、carcols.metaといったファイルはクライアント側に依存します。

つまり、サーバー側でbansheeのハンドリングを変更することはできません。

(もちろんbanshee以外のバニラ車両についても同様)

ハンドリングに関しては、ユーザーに自由に編集してもらえばいいと思うのですが、改造パーツやメーターを動かすためにはvehicles.meta、carcols.metaを導入してもらう必要があります。

(ただ単にモデルを入れ替えたいだけならばmetaファイルは必要ありません)

 

私のサーバーもReplace形式の車両の改造パーツを反映させるためのファイルをクライアントに導入してもらえるようにしています。

 

車両を追加する(Add-On)

正直言ってAdd-On車両の導入にはいくつか不安定な点があります。

Replaceのようにどの車両も同じように導入できるわけではないのです…。

(基本は同じですが)

しかし、ハンドリングやチューニングなどをサーバーサイドで統一することができるというメリットは大きいです。

とりあえず、私が把握している導入方法と問題点をまとめてみます。

 

参考:

 

準備するもの

  • ご自分のFiveMサーバー
  • Ad-On車両MODのファイル(.yft,ytd…)
  • OpenIV
  • テキストエディター(あったほうがいい)

 

「resources」フォルダーに新しいフォルダーをつくる

Replace形式と同様にAdd-On車両を導入するフォルダーを用意します。

この時、一つのフォルダーで複数の車両を導入するのではなく、1つの車両ごとにファルダーを作成することをおすすめします。

もちろん、metaファイルをひとつにまとめることができる方は1つのフォルダーにAdd-On車両をまとめて問題ありません。

例:)

[resources]

—…

—[add-r34]

—[add-r35]

—[add-s14]

—…

(フォルダー名は任意)

 

「__resource.lua」と「stream」フォルダーをつくる

「resources」フォルダーに作ったフォルダーごとに「__resource.lua」と「stream」フォルダーが必要です。

 

例)

[resources]

—…

—[add-r34]

———[stream]

———“__resource.lua”

—[add-r35]

———[stream]

———“__resource.lua”

—[add-s14]

———[stream]

———“__resource.lua”

—…

 

「dlc.rpf」を開き中身を書き出す

Add-On車両は大体の場合でdlc.rpfの形でまとめられています。

しかしながら、そのままではFiveMのサーバーに導入することができないので中身を個別に書き出す必要があります。

また、それぞれのファイルの場所はMODによって異なったりしますが、基本的には「data」にmetaファイル「x64」にモデルファイルがあります。

 

書き出すべきファイルは以下のものです

  • vehicles.meta
  • carcols.meta(改造可能にしたい場合)
  • carvariations.meta(改造可能にしたい場合)
  • handling.meta
  • vehiclelayouts.meta (必須ではありません)
  • 車両と改造パーツのモデルとテクスチャー

MODによって「vehiclelayouts.meta」があるものとないものがあります。

 

“vehicle_names.lua”について

ぶっちゃけよくわかってません(笑)参考までにどうぞ。

「vehicle_names.lua」は必須ではありません。

なくても動くし、あっても動かないことがあります。

ちなみに、このファイルは”__resourcce.lua”と同じ手順で作成します。

その中の記述は以下のようになります。

Citizen.CreateThread(function() 	-- Nissan GTR 	AddTextEntry('0x9790D1BD', 'gtr') end)

‘0x9790D1BD’という数字はハッシュと呼ばれるものです。

これはOpenIVで”dlc.rpf/x64/data/lang/american/global.gx2″開くとその中に数字が並んでいます。

 

モデルやmetaファイルをフォルダーにコピーする

Replace形式と同様にモデルファイルとテクスチャーファイルを「stream」フォルダーにコピーします。

また、改造パーツも同じように「stream」フォルダー内にコピーします。

さらに、Add-On車両の場合はサーバー側でmetaファイルを用意してあげなければいけないので、metaファイルたちを「stream」フォルダーと同じ場所に入れておきます。

 

例)

[resources]

—…

—[add-r34]

———[stream]

———“__resource.lua”

———“carcols.meta”

———“carvariations.meta”

———“handling.meta”

———“vehicles.meta”

———“vehiclelayouts.meta”

———“vehicle_names.lua”

 

「__resource.lua」の記述

Replace形式では何も記述しませんでしたが、Add-On車両を読み込ませるためにはいくつかのファイルが必要なので、それらを読み込むための記述をしなければいけません。

resource_manifest_version '77731fab-63ca-442c-a67b-abc70f28dfa5'  files {     'vehicles.meta',     'carvariations.meta',     'carcols.meta',     'handling.meta',     'vehiclelayouts.meta'    //必須ではありません }  data_file 'HANDLING_FILE' 'handling.meta' data_file 'VEHICLE_METADATA_FILE' 'vehicles.meta' data_file 'CARCOLS_FILE' 'carcols.meta' data_file 'VEHICLE_VARIATION_FILE' 'carvariations.meta' data_file 'VEHICLE_LAYOUTS_FILE' 'vehiclelayouts.meta'   //必須ではありません   client_script {     'vehicle_names.lua'    //必須ではありません }

この記述を見ればだいたいわかると思いますが、これはどのファイルを読み込むのかを指定したものです。

「vehiclelayouts.meta」と「vehicle_names.lua」は車両によっては必要ありません。

 

「server.cfg」に追記する

server.cfgに以下のコードを追加してください。

start フォルダ名

導入は以上です。

車両を新しく導入したら「cache」フォルダーを削除し、前回の記事で解説した「restart sessionmanager」を実行しておきましょう。

(やっておかないとサーバーに入るときに”Couldn’t load sessionmanager”というエラーが出たりします。)

 

問題点1:ytdファイルのサイズを16MB以内に収める必要がある

ytdファイルには車両のテクスチャーが入っていますが、このファイルのサイズが16MBを超えているとうまく動作しないことがあるようです。

Liveryに対応している車両の場合は元々ファイルサイズが大きいことがあるので、OpenIVで開いて不要なスキンを削除しておきましょう。

 

問題点2:「modkit」の値を変更する必要がある(場合がある)

チューニングパーツのあるなしに関わらず、車両の改造を行うには「modkit」の値が適切である必要があります。

これに関しては有効なチュートリアルが見つからないので私も苦労しています…。

この値は「carcols.meta」と「carvariations.meta」の両方に同じ値を記述する必要があります。(車両ごと)

 

carcols.meta

    <Item>       <kitName>1912_gtr_modkit</kitName>       <id value="1912" />

carvariations.meta

      <kits>         <Item>1912_gtr_modkit</Item>       </kits>

それぞれのファイルにこのような記述がされているはずです。

このままできちんと動作してくれればいいのですが、なかなかそうもいかなかったりします。

そんなわけで車両を改造できるようにするためにはこの値を探さなければならりません。

(おそらくほかの車両と同じ数字は使えない)

 

FiveMのフォーラムでは「1008から1967までなら動くぜ!」とか「1001から1007までは既に使われてるから1008から1024までを使おう」とかいろいろ言われていますが、これといった確実な数字はなさそうです。

私の環境では、1018が動いても1017では動かなかったり、1665はいけるのにその前後の数字はダメといった感じです(笑)

こればっかりは一つ一つテストして動くものを探す他なさそうです。

(Route894では20台くらいは改造可能にできました)

 

問題点3:「vehiclelayouts.meta」の問題(未解決)

上記の改造への対応の問題だけでなく、MODによっては車両を呼び出して乗り込もうとしたらFiveMがクラッシュするものがあります。

私の環境では、その多くが「vehiclelayouts.meta」を持っている車両です。

(というかそれでしか起こってない)

すべてのMODに「vehiclelayouts.meta」が必要なわけではないので、これを必要としていないMODはほぼ100%クラッシュしません。

(modkitは別問題として)

 

そんなわけで、FiveMのフォーラムで質問した結果がこちらです。

[speech_bubble type=”ln-flat” subtype=”L1″ icon=”1.jpg” name=”HachiQ4″]vehiclelayouts.metaが必要な車両に乗り込むとクラッシュするんやけどなんででっしゃろ??[/speech_bubble]

[speech_bubble type=”ln-flat” subtype=”R1″ icon=”2.jpg” name=”優しい人”]metaファイルにタイプミスがないか、テクスチャーファイルが16MBを超えていないか確認してみそ。[/speech_bubble]

 

metaファイルの記述ミスなんかわかるわけないやん…

しかしながら、とりあえず試してみないといけないので以下のことを試してみました。

 

閉じタグ</example>が正しく使われているかどうか

GTA5のmetaファイルはxmlの記述方式で書かれています。

そんなわけで基本的には<example>のようなタグが使われています。

(htmlに近いのでかなり理解しやすいのかしら)

タグは通常<example>xxxxxxxxxxx</example>のように使います。

しかしながら、metaファイルを読んでみると割と</example>のように閉じタグだけが使われていることがありました。

まれに<example />のような記述も見受けられます。

(これは正しい記述方式)

 

データの入っていないタグは消しちゃえ~

とりあえず右も左もわからない私は気になったところはサクサク消してみることにしました。

 

データが入っている例

<AgitatedClipSet>clipset@veh@low@ds@idle_agitated</AgitatedClipSet>

データが入っていない例

</AgitatedClipSet>

このような閉じタグだけの場合はそのタグを片っ端から削除しました。

 

結論:動くやつは動くし動かない奴は動かない

ところがどっこい、こんなことをしても動きません。

「vehiclelayouts.meta」が必要だからといって100%動作しないわけではありません。2~3割くらいは動作してくれます。

もしかしたら問題は別のmetaファイルにあるのかもしれませんが、私にはお手上げです(笑)

これまたご存知の方がいらっしゃいましたらぜひご教授くださいm(_ _)m

 

最後に

自分なりに理解できたポイントをまとめてみましたが、ほとんどよくわかっていません。

それでも意外となんとかなるっちゃなんとかなるので私みたいに無理してAdd-Onを改造可能にしようとしない限り苦労することはないでしょう(笑)

実際に作業をしてみてわからないことがあったらこのサイト内のフォーラムで質問してみてください!