0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

2. 撲殺バットMODの作成(アイテム追加)

Posted at

概要

今回から実際のMODを開発していきます。
まずは、作成するMODの説明と、アイテム追加までを行います。1

1. 作成するMODについて

今回のチュートリアルでは、アイテム追加系のMODを作成します。アイテム追加と言っても、食べ物や本などの通常アイテム、武器や衣服などの装備品、家具や内装品などの設置物などがあり、共通の実装部分もあれば、個別の実装が必要な部分もあります。今回は、装備品(武器)を追加するMODとし、何でもできちゃうバット・エスカリボrg「撲殺バット」をゲーム内に追加します。

撲殺バットMODの仕様

  • アイコンやテクスチャは勿論のこと、独自の3Dモデルの武器とする
  • 武器のグレード(ティア1~3の3段階)を設ける
  • 武器のグレードは、レシピによりアップグレード可能とする
  • 多言語対応として、日本語と英語の翻訳を追加する
  • バニラ機能にはない、独自ギミック(内容は後述)を設ける

2. ひな型の用意

サンプルMODの時と同様に、ルートフォルダ直下にひな型を用意します。「MODフォルダ」および「ID」についてはユニークな名称であることが望ましいため、独自の接頭辞「P4」2を付けた「P4BokusatsuBat」としました。

C:\Users\%username%\Zomboid\Workshop
 └─ P4BokusatsuBat
     └─ Contents
         └─ mods
             └─ P4BokusatsuBat
                 │  mod.info
                 │  poster.png
                 │
                 └─ media
mod.info
name=Bokusatsu Bat
poster=poster.png
id=P4BokusatsuBat
description=Add the new item "Bokusatsu Bat".

poster.png

3. アイテムの追加

アイテムを追加するには「media」フォルダの下の「scripts」フォルダ内に、テキスト形式の設定ファイルで定義します。定義ファイルはゼロから記載しても良いのですが、追加しようとするアイテムと類似の設定を元にすることをお薦めます。そこで、今回はバニラ武器の「釘バット」を元とすることにします。

流用元の定義確認

釘バットの定義は、下記のファイルに記載されています。

C:\Program Files (x86)\Steam\steamapps\common\ProjectZomboid\media\scripts\items_weapons.txt
items_wepons.txt LL.2355-2401
	item BaseballBatNails
	{
		DisplayCategory = WeaponCrafted,
		MaxRange = 1.28,
		WeaponSprite = BaseballBatSpiked,
		MinAngle = 0.75,
		Type = Weapon,
		MinimumSwingTime = 3,
		KnockBackOnNoDeath = TRUE,
		SwingAmountBeforeImpact = 0.02,
		Categories = Blunt,
		ConditionLowerChanceOneIn = 10,
		Weight = 2,
		SplatNumber = 2,
		PushBackMod = 0.5,
		SubCategory = Swinging,
		ConditionMax = 15,
		MaxHitCount = 2,
		DoorDamage = 7,
		IdleAnim = Idle_Weapon2,
		SwingAnim = Bat,
		DisplayName = Spiked Baseball Bat,
		MinRange = 0.61,
		SwingTime = 3,
		HitAngleMod = -30,
		KnockdownMod = 2,
		SplatBloodOnNoDeath = TRUE,
		Icon = BaseballBatNails,
		RunAnim = Run_Weapon2,
		TwoHandWeapon = TRUE,
		BreakSound = SpikedBaseballBatBreak,
		DoorHitSound = SpikedBaseballBatHit,
		HitSound = SpikedBaseballBatHit,
		HitFloorSound = SpikedBaseballBatHit,
		SwingSound = SpikedBaseballBatSwing,
		TreeDamage = 1,
		MetalValue = 5,
		CriticalChance = 30,
		critDmgMultiplier = 5,
		MinDamage = 1,
		MaxDamage = 1.5,
		BaseSpeed = 0.95,
		WeaponLength = 0.5,
		DamageCategory = Slash,
		DamageMakeHole = TRUE,
		AttachmentType = Shovel,
	}

今回は、上記の設定を流用してアイテム定義を追加します。

定義ファイルの作成

撲殺バットMOD側に定義ファイルを作成します。

\media\scripts\P4BokusatsuBat_items.txt

定義ファイルのファイル名は任意の名前で問題ありません。

アイテム定義の追加(ティア3)

作成した定義ファイルに、撲殺バットの定義を追加します。まずは最低グレードのティア3を追加することとし、性能は釘バットと同等とします。

P4BokusatsuBat_items.txt
module P4BokusatsuBat
{
	imports
	{
		Base
	}

	item P4BokusatsuBatT3
	{
		DisplayCategory = Weapon,
		MaxRange = 1.28,
		WeaponSprite = BaseballBatSpiked,
		MinAngle = 0.75,
		Type = Weapon,
		MinimumSwingTime = 3,
		KnockBackOnNoDeath = TRUE,
		SwingAmountBeforeImpact = 0.02,
		Categories = Blunt,
		ConditionLowerChanceOneIn = 10,
		Weight = 2,
		SplatNumber = 2,
		PushBackMod = 0.5,
		SubCategory = Swinging,
		ConditionMax = 15,
		MaxHitCount = 2,
		DoorDamage = 7,
		IdleAnim = Idle_Weapon2,
		SwingAnim = Bat,
		DisplayName = Bokusatsu Bat T3,
		MinRange = 0.61,
		SwingTime = 3,
		HitAngleMod = -30,
		KnockdownMod = 2,
		SplatBloodOnNoDeath = TRUE,
		Icon = BaseballBatNails,
		RunAnim = Run_Weapon2,
		TwoHandWeapon = TRUE,
		BreakSound = SpikedBaseballBatBreak,
		DoorHitSound = SpikedBaseballBatHit,
		HitSound = SpikedBaseballBatHit,
		HitFloorSound = SpikedBaseballBatHit,
		SwingSound = SpikedBaseballBatSwing,
		TreeDamage = 1,
		MetalValue = 5,
		CriticalChance = 30,
		critDmgMultiplier = 5,
		MinDamage = 1,
		MaxDamage = 1.5,
		BaseSpeed = 0.95,
		WeaponLength = 0.5,
		DamageCategory = Slash,
		DamageMakeHole = TRUE,
		AttachmentType = Shovel,
	}
}

定義ファイルの詳細については、下記URLを参照してください。
PZwiki : Scripts guide

釘バットのアイテム定義からの変更点は下記になります。

  • アイテムIDを「BaseballBatNails」から「P4BokusatsuBatT3」に変更
  • DisplayCategoryを「WeaponCrafted」から「Weapon」に変更
  • DisplayNameを「Spiked Baseball Bat」から「Bokusatsu Bat T3」に変更

アイテム定義の追加(ティア1・2)

先程追加したティア3の定義を流用して、上位グレードのティア1・2の定義も追加します。追加に際して、下記の通り性能値を変更します。今回は簡易的な調整に留め、ダメージ設定およびクリティカル設定のみの変更とします。

Item Item ID Min
Damage
Max
Damage
Critical
Chance
critDmg
Multiplier
ティア1 P4BokusatsuBatT1 1.50 2.00 50 7
ティア2 P4BokusatsuBatT2 1.25 1.75 40 6
ティア3 P4BokusatsuBatT3 1.00 1.50 30 5
釘バット(参考) BaseballBatNails 1.00 1.50 30 5
P4BokusatsuBat_items.txt
	item P4BokusatsuBatT1
	{
		DisplayCategory = Weapon,
		MaxRange = 1.28,
		WeaponSprite = BaseballBatSpiked,
		MinAngle = 0.75,
		Type = Weapon,
		MinimumSwingTime = 3,
		KnockBackOnNoDeath = TRUE,
		SwingAmountBeforeImpact = 0.02,
		Categories = Blunt,
		ConditionLowerChanceOneIn = 10,
		Weight = 2,
		SplatNumber = 2,
		PushBackMod = 0.5,
		SubCategory = Swinging,
		ConditionMax = 15,
		MaxHitCount = 2,
		DoorDamage = 7,
		IdleAnim = Idle_Weapon2,
		SwingAnim = Bat,
		DisplayName = Bokusatsu Bat T1,
		MinRange = 0.61,
		SwingTime = 3,
		HitAngleMod = -30,
		KnockdownMod = 2,
		SplatBloodOnNoDeath = TRUE,
		Icon = BaseballBatNails,
		RunAnim = Run_Weapon2,
		TwoHandWeapon = TRUE,
		BreakSound = SpikedBaseballBatBreak,
		DoorHitSound = SpikedBaseballBatHit,
		HitSound = SpikedBaseballBatHit,
		HitFloorSound = SpikedBaseballBatHit,
		SwingSound = SpikedBaseballBatSwing,
		TreeDamage = 1,
		MetalValue = 5,
		CriticalChance = 50,
		critDmgMultiplier = 7,
		MinDamage = 1.5,
		MaxDamage = 2.0,
		BaseSpeed = 0.95,
		WeaponLength = 0.5,
		DamageCategory = Slash,
		DamageMakeHole = TRUE,
		AttachmentType = Shovel,
	}

	item P4BokusatsuBatT2
	{
		DisplayCategory = Weapon,
		MaxRange = 1.28,
		WeaponSprite = BaseballBatSpiked,
		MinAngle = 0.75,
		Type = Weapon,
		MinimumSwingTime = 3,
		KnockBackOnNoDeath = TRUE,
		SwingAmountBeforeImpact = 0.02,
		Categories = Blunt,
		ConditionLowerChanceOneIn = 10,
		Weight = 2,
		SplatNumber = 2,
		PushBackMod = 0.5,
		SubCategory = Swinging,
		ConditionMax = 15,
		MaxHitCount = 2,
		DoorDamage = 7,
		IdleAnim = Idle_Weapon2,
		SwingAnim = Bat,
		DisplayName = Bokusatsu Bat T2,
		MinRange = 0.61,
		SwingTime = 3,
		HitAngleMod = -30,
		KnockdownMod = 2,
		SplatBloodOnNoDeath = TRUE,
		Icon = BaseballBatNails,
		RunAnim = Run_Weapon2,
		TwoHandWeapon = TRUE,
		BreakSound = SpikedBaseballBatBreak,
		DoorHitSound = SpikedBaseballBatHit,
		HitSound = SpikedBaseballBatHit,
		HitFloorSound = SpikedBaseballBatHit,
		SwingSound = SpikedBaseballBatSwing,
		TreeDamage = 1,
		MetalValue = 5,
		CriticalChance = 40,
		critDmgMultiplier = 6,
		MinDamage = 1.25,
		MaxDamage = 1.75,
		BaseSpeed = 0.95,
		WeaponLength = 0.5,
		DamageCategory = Slash,
		DamageMakeHole = TRUE,
		AttachmentType = Shovel,
	}

アイテム定義の各プロパティ詳細については、下記URLを参照してください。
PZwiki : Item Script Parameters

4. アイテム追加の確認

それでは、実際にゲーム内でアイテムが追加されているかを確認しましょう。現在はアイテム設定を追加しただけなので、通常プレイでは追加したアイテムを入手する事ができません。そこで、デバッグモードを使って、アイテム一覧を確認したり、実際にアイテムを入手します。

デバッグモードでゲームを起動

Steamアプリを立ち上げ、ライブラリのProject Zomboidから「管理 > プロパティ」を選択します。
プロパティ表示

プロパティウィンドウにて、起動オプションに「-debug」を指定します。この状態でゲームを起動すると、デバッグモードが有効になります。
02-02.png

アイテムリストでの確認・取得

「DEBUG MENU > Items List」から起動される「アイテムリストの表示」で任意のアイテムを検索・取得できるので、今回追加したアイテムがゲーム内に追加されていることを確認します。
02-03.png

また、アイテムリストでアイテムをダブルクリックすると取得できるので、追加されたアイテムを確認します。アイテムの表示名や威力について、アイテム定義で指定した内容が反映されていることが確認できます。
02-04.png

あとがき

ここでは、アイテム定義をすることでゲーム内にアイテムを追加する方法を解説しました。ただし、アイコンや効果音、3Dモデルなどは流用したバニラ武器のままになっていますので、次回はそれらの差替えを行います。


索引:Project ZomboidのMODを開発する
前:1. サンプルMODの作成(Hello World)
次:3. 撲殺バットMODの作成(各種差替え)

  1. 今回の内容を反映したMODファイルは下記。
    💾 P4BokusatsuBat_02.zip(MD5チェックサム:28ed3c222ec6cb724818c70d6b5dbffc)

  2. 私のアカウント名「PePePePePeil」にちなんで「P4」を付けることでユニーク性を担保。実際にMOD開発される際は、ご自身の方法でユニーク性を担保して頂きたく。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?