Version1.0.0現在の情報です |
ページが完成しました。
英語版wikiと私自身の推測で作りました。
実際の環境(factorio)で動いておりますので、実行してもおかしくなることはないはずです(自己責任ですが)。
=============================
目次
=============================
このmodはなにか
ここの記事で紹介するmodは、「ハンドガン・タレット」で使用できる『弾薬(ammo)』を追加するものです。
具体的には「石の弾丸(StoneMagazine)」を追加するmodです。
ディレクトリ構造
BulletPackets_0.1.0
| data.lua
| item.lua
| info.json
|
┗ーーgraphics
| |stone-rounds-magazine.png
|
┗ーーlocale
┗ーーja
|locale.cfg
=============================
☆フォルダ・ファイル説明
・data.lua
『item.lua』を呼び出す処理を行う。
ちなみに、『data.lua』は、ゲームが自動的に呼び出すため、『data.lua』を呼び出す処理は必要ないです。
・item.lua
アイテムの定義と、レシピの定義をします。
最後に、アイテムとレシピを対応づけつつ、「dataテーブル(ゲームの全アイテムが保存されているテーブル状のデータ構造)」に追加します。
これによって、ゲーム内で使用・制作ができるようになります。
・info.json
mod自体の定義をします。
具体的には、「modの名前」「対応factorioのバージョン」などです。
これが無いと、modとして認識されません。
・graphicsフォルダの中のstone-rounds-magazine.pngファイル
ハンドガンの弾のアイコンデータ(画像ファイル)です。
『item.lua』のアイテム定義で使用します。
↓この記事で使う『stone-rounds-magazine.png』ファイルです。右クリックして名前を付けて保存でご自身のPCに保存して下さい。
・"localeフォルダ"の中の"ja"フォルダの中の"locale.cfg"
『item.lua』で設定した「アイテム名(厳密には変数名)」を指定して、表示名・表示説明を追加します。
これが無くても遊べますが、ゲーム内でアイテム名と説明が出ず、ユーザは困ってしまいます。
各ファイルのソースコードと説明
・data.lua
require("item")
『require("item")』は、「item.lua」を呼び出す処理です。
・item.lua
--アイテム(StoneMagazine)の定義 local StoneMagazine = { type = "ammo", name = "StoneMagazine", icon = "__base__/../BulletPackets_0.1.0/graphics/stone-rounds-magazine.png", icon_size = 64, icon_mipmaps = 4, ammo_type = { category = "bullet", action = { type = "direct", action_delivery = { type = "instant", source_effects = { type = "create-explosion", entity_name = "explosion-gunshot" }, target_effects = { { type = "create-entity", entity_name = "explosion-hit", offsets = {{0, 1}}, offset_deviation = {{-0.5, -0.5}, {0.5, 0.5}} }, { type = "damage", damage = { amount = 5, type = "physical"} } } } } }, magazine_size = 10, subgroup = "ammo", order = "a[basic-clips]-c[StoneMagazine]", stack_size = 200 } --レシピ(recipe)の定義 local recipe = { type = "recipe", name = "StoneMagazine", enabled = true, energy_required = 10, ingredients = { {"stone", 1}, }, result = "StoneMagazine" } --アイテムとレシピを「dataテーブル」に追加する。 data:extend{StoneMagazine,recipe}
このファイル(item.lua)は、大きく見て「アイテム定義」「レシピ定義」「dataテーブルに追加」の3つのフェーズから成ります。
また、五行目の『icon = "__base__/../BulletPackets_0.1.0/graphics/stone-rounds-magazine.png"』で、作成した「graphicsフォルダ」のなかにある「stone-rounds-magazine.png」を読み込んでいます。
・info.json
{ "name": "BulletPackets", "version": "0.1.0", "title": "BulletPackets", "author": "Moka", "factorio_version": "1.0", "dependencies": ["base >= 1.0"], "description": "This mod adds in more and more Bullet." }
このファイル(info.json)は、mod自体の情報を記述します。
mane(modの名前)、version(modのバージョン)、factorio_version(対応するfactorioのバージョン)などです。
・locale.cfg
[item-name] StoneMagazine=石の弾丸 [item-description] StoneMagazine=石製の弾丸。威力は低いがたくさん作れるかも?
アイテム名(厳密には変数名)を指定し、それに文字列を設定します。
すると、ゲーム内でアイテムにカーソルを当てたときに、しっかりアイテム名と説明が表示されます。
文字化けする場合は、文字コードを変えてファイルを作って下さい。(私は『UTF-8』で作成)
==<注意>==
『StoneMagazine=石の弾丸』の『=』の前後に「スペース」を入れないで下さい。
スペースを入れると、うまく処理ができないようです。
========
将来に向けて
この記事では、ハンドガンの弾を1つだけ追加しました。
『item.lua』ファイルで、同じかんじにアイテム・レシピ、そしてdataテーブルへの追加をすれば、すきなハンドガンの弾を作れます。
ちなみに、もともとfactorio自体が持っているデータ(アイテムやレシピなど)が記述されたファイルをみながら作ると楽です。
アイテムデータ:『Factorio/data/base/prototypes/item』のなかにいろいろ。
レシピデータ:『Factorio/data/base/prototypes/recipe』のなかにいろいろ。
英語wikiや他ブログを見ましたが、私には難しく、だいぶ無理矢理な実装かもしれません。
以上です。
コメント
- 私自身、まだ勉強中の身です。質問やアドバイスなどありましたら、遠慮無くコメントお願いします!! -- 当ページの制作者? 2020-12-17 (木) 10:09:36
- 誤字修正[.lue]→[.lua]、[lacale]→[locale]、[barrett]→[bullet] -- 2020-12-26 (土) 07:47:23