Skip to content

Chapter 9.10: MOD管理

ホーム | << 前へ: アクセス制御 | 次へ: トラブルシューティング >>


概要: DayZ専用サーバーにサードパーティMODをインストール、設定、保守します。起動パラメータ、Workshopダウンロード、署名キー、ロード順序、サーバー専用MODとクライアント必須MOD、アップデート、クラッシュやプレイヤーキックの原因となる最も一般的な間違いを解説します。


目次


MODのロード方法

DayZは -mod= 起動パラメータを通じてMODをロードします。各エントリはPBOファイルと config.cpp を含むフォルダへのパスです。エンジンは各MODフォルダ内のすべてのPBOを読み取り、クラスとスクリプトを登録してから、リスト内の次のMODに進みます。

サーバーとクライアントは -mod= で同じMODを持つ必要があります。サーバーが @CF;@MyMod をリストし、クライアントが @CF しか持っていない場合、署名の不一致で接続が失敗します。-servermod= に配置されたサーバー専用MODは例外です -- クライアントはそれらを必要としません。


起動パラメータの形式

典型的なMOD入りサーバーの起動コマンド:

batch
DayZServer_x64.exe -config=serverDZ.cfg -port=2302 -profiles=profiles -mod=@CF;@VPPAdminTools;@MyContentMod -servermod=@MyServerLogic -dologs -adminlog
パラメータ目的
-mod=サーバーとすべての接続クライアントの両方に必要なMOD
-servermod=サーバー専用MOD(クライアントには不要)

ルール:

  • パスは セミコロン区切り で、セミコロンの周囲にスペースなし
  • 各パスはサーバールートディレクトリからの相対パスです(例: @CF<server_root>/@CF/ を意味する)
  • 絶対パスも使用可能: -mod=D:\Mods\@CF;D:\Mods\@VPP
  • 順序が重要 -- 依存関係はそれを必要とするMODの前に表示される必要があります

Workshop MODのインストール

ステップ1: MODのダウンロード

DayZ クライアント のApp ID(221100)とMODのWorkshop IDを使用してSteamCMDで実行します:

batch
steamcmd.exe +force_install_dir "C:\DayZServer" +login your_username +workshop_download_item 221100 1559212036 +quit

ダウンロードされたファイルは以下に配置されます:

C:\DayZServer\steamapps\workshop\content\221100\1559212036\

ステップ2: シンボリックリンクまたはコピーの作成

Workshopフォルダは数値IDを使用しており、-mod= では使用できません。名前付きシンボリックリンク(推奨)を作成するか、フォルダをコピーします:

batch
mklink /J "C:\DayZServer\@CF" "C:\DayZServer\steamapps\workshop\content\221100\1559212036"

ジャンクションを使用すると、SteamCMD経由のアップデートが自動的に適用されます -- 再コピーは不要です。

ステップ3: .bikeyのコピー

次のセクションを参照してください。


MODキー (.bikey)

すべての署名されたMODには、1つ以上の .bikey ファイルを含む keys/ フォルダが付属しています。これらのファイルは、BattlEyeにどのPBO署名を受け入れるかを伝えます。

  1. MODフォルダを開きます(例: @CF/keys/
  2. すべての .bikey ファイルをサーバーのルート keys/ ディレクトリにコピーします
DayZServer/
  keys/
    dayz.bikey              # バニラ -- 常に存在
    cf.bikey                # @CF/keys/ からコピー
    vpp_admintools.bikey    # @VPPAdminTools/keys/ からコピー

正しいキーがないと、そのMODを実行しているプレイヤーは: "Player kicked: Modified data" と表示されます。


ロード順序と依存関係

MODは -mod= パラメータ内で左から右にロードされます。MODの config.cpp は依存関係を宣言します:

cpp
class CfgPatches
{
    class MyMod
    {
        requiredAddons[] = { "CF" };
    };
};

MyModCF を必要とする場合、@CF は起動パラメータで @MyMod前に 表示される必要があります:

-mod=@CF;@MyMod          正しい
-mod=@MyMod;@CF          クラッシュまたはクラスの欠落

一般的なロード順序パターン:

  1. フレームワークMOD -- CF, Community-Online-Tools
  2. ライブラリMOD -- BuilderItems, 共有アセットパック
  3. 機能MOD -- マップ追加、武器、車両
  4. 依存MOD -- 上記を requiredAddons としてリストするもの

不明な場合は、MODのWorkshopページまたはドキュメントを確認してください。ほとんどのMOD作者は必要なロード順序を公開しています。


サーバー専用MODとクライアント必須MOD

パラメータ誰に必要か典型的な例
-mod=サーバー + すべてのクライアント武器、車両、マップ、UIモッド、衣服
-servermod=サーバーのみエコノミーマネージャー、ロギングツール、管理バックエンド、スケジューラスクリプト

ルールは明確です: MODに いずれかの クライアントサイドスクリプト、レイアウト、テクスチャ、モデルが含まれている場合、-mod= に入れる必要があります。サーバーサイドのロジックのみでクライアントが触れるアセットがない場合は、-servermod= を使用します。

サーバー専用MODを -mod= に入れると、すべてのプレイヤーにダウンロードを強制します。クライアント必須MODを -servermod= に入れると、クライアント側でテクスチャの欠落、UIの破損、またはスクリプトエラーが発生します。


MODのアップデート

手順

  1. サーバーを停止する -- サーバー実行中のファイル更新はPBOを破損させる可能性があります
  2. SteamCMD経由で再ダウンロード:
    batch
    steamcmd.exe +force_install_dir "C:\DayZServer" +login your_username +workshop_download_item 221100 <modID> +quit
  3. 更新された.bikeyファイルをコピー -- MOD作者は署名キーをローテーションすることがあります。常にMODの keys/ フォルダから最新の .bikey をサーバーの keys/ ディレクトリにコピーしてください
  4. サーバーを再起動する

シンボリックリンク(ジャンクション)を使用した場合、ステップ2でMODファイルがその場で更新されます。手動でファイルをコピーした場合は、再度コピーする必要があります。

クライアント側のアップデート

Steam WorkshopでMODにサブスクライブしているプレイヤーは、自動的にアップデートを受け取ります。サーバーのMODを更新してプレイヤーが古いバージョンを持っている場合、クライアントがアップデートされるまで署名の不一致で接続できません。


MOD競合のトラブルシューティング

RPTログの確認

profiles/ 内の最新の .RPT ファイルを開きます。以下を検索してください:

  • "Cannot register" -- 2つのMOD間のクラス名の衝突
  • "Missing addons" -- 依存関係がロードされていない(ロード順序の誤りまたはMODの欠落)
  • "Signature verification failed" -- .bikey の不一致または欠落キー

スクリプトログの確認

profiles/ 内の最新の script_*.log を開きます。以下を探してください:

  • "SCRIPT (E)" 行 -- ロード順序またはバージョンの不一致によるスクリプトエラー
  • "Definition of variable ... already exists" -- 2つのMODが同じクラスを定義している

問題の分離

多くのMODがあり何かが壊れた場合、段階的にテストしてください:

  1. フレームワークMODのみで開始(@CF
  2. 一度に1つのMODを追加
  3. 各追加後に起動してログを確認
  4. エラーを引き起こすMODが原因です

2つのMODが同じクラスを編集している場合

2つのMODが両方とも modded class PlayerBase を使用する場合、最後に-mod= で最も右に)ロードされたものが優先されます。その super 呼び出しは他のMODのバージョンにチェーンします。これは通常機能しますが、一方のMODが super を呼び出さずにメソッドをオーバーライドすると、他のMODの変更が失われます。


よくある間違い

ロード順序が間違っている。 依存関係がまだロードされていないため、サーバーがクラッシュするか「Missing addons」がログに記録されます。対処法: 依存関係MODを -mod= リスト内でより前に移動します。

サーバー専用MODに -servermod= を使い忘れる。 プレイヤーが不要なMODのダウンロードを強制されます。対処法: サーバー専用MODを -mod= から -servermod= に移動します。

MODアップデート後に .bikey ファイルを更新しない。 サーバーのキーがMODの新しいPBO署名と一致しないため、プレイヤーが「Modified data」でキックされます。対処法: MODを更新する際は常に .bikey ファイルを再コピーしてください。

MODのPBOを再パックする。 MODのPBOファイルを再パックすると、デジタル署名が壊れ、すべてのプレイヤーがBattlEyeキックされ、ほとんどのMOD作者の利用規約に違反します。自分が作成していないMODを再パックしないでください。

Workshopパスとローカルパスの混在。 一部のMODにはWorkshopの数値パスを使用し、他には名前付きフォルダを使用すると、アップデート時に混乱が生じます。1つのアプローチを選択してください -- シンボリックリンクが最もクリーンです。

MODパスのスペース。 -mod=@My Mod のようなパスはパースを壊します。スペースを避けるためにMODフォルダの名前を変更するか、パラメータ全体を引用符で囲んでください: -mod="@My Mod;@CF"

サーバーのMODが古く、クライアントが更新済み(またはその逆)。 バージョンの不一致で接続できません。サーバーとWorkshopのバージョンを同期させてください。すべてのMODとサーバーを同時にアップデートしてください。


ホーム | << 前へ: アクセス制御 | 次へ: トラブルシューティング >>

Released under CC BY-SA 4.0 | Code examples under MIT License