アイテム合成

■ 概  要

  • ・ 所持品を別のアイテムと交換する機能を追加します。

■ スクリーンショット


※ 画像は開発中のものです。

■ 更新履歴

■ スクリプト

データベース作成スクリプト

■ 使用準備

■ 独自データベース

増減させるアイテムをレシピ、それをまとめたものをレシピブックとして設定します。
基本的には、アイテムなどのデータベースと同じです。

変数 (配列)配列内オブジェクトファイル
レシピ$data_imrecipesRPG::ItemMake::RecipeimRecipes.rvdata2
ブック$data_imbooksRPG::ItemMake::BookimBooks.rvdata2

※ データ構造は、ソース内の定義を参照してください。
※ データ ID と配列の添字を揃えるために、配列の最初 (0 番目) の要素は nil です。

データファイルを作成するスクリプトを用意していますので、ご利用ください。

レシピ
ITEMMAKE_RECIPES = [
  [アイコン, 名前, 価格, [減らすアイテム], [増やすアイテム], 説明], # 設定A
  [増やすアイテム, 価格, [減らすアイテム]],                         # 設定B
]

レシピの設定方法は2種類あり、どちらを使っていただいても構いません。
設定Aは、レシピに関してのすべての設定が行えます。
設定Bは、データベース上のアイテムを作成する場合に使用してください。
(アイコン, 名前, 説明)の部分は、増やすアイテムのものが使用されます。

アイテムの設定は、"識別子(IWA)ID:数"のような文字列で行います。
識別子は、I がアイテム、W が武器、A が防具となります。
ID は、データベースでの番号です。
数は、そのアイテムを増減する数です。1個の場合は、省略可能です。
例)"I1:3" でポーションが3個という意味になります。
例)"W20" でロングソードが1個という意味になります。

説明は、ヘルプウィンドウに表示される文章です。文字列で設定してください。
\n という文字で改行することができます。
数値で設定を行うと特定のアイテムと同じ説明文にすることもできます。
その場合は、識別数と ID を足した数値を記述してください。
アイテムが 1000、武器が 2000、防具が 3000 です。
例)1001 でポーションの説明文が使用されます。

レシピブック
ITEMMAKE_BOOKS = [
  [アイコン, 名前, [リスト], [減数,増数], [減名,増名], [背景,前景], 効果音, ...],
]
アイコン
表示するアイコンの番号を設定します。
0 にすると、代わりに名前を表示します。
※ 単一ブックの場合、表示されません。
名前
表示しない設定の場合は、空文字でも構いません。
※ 単一ブックの場合、表示されません。
リスト
レシピ ID を配列で設定してください。
ID は 1 から始まります。
減数,増数
右側のウィンドウに表示するアイテムの数です。
空配列 [] にするとデフォルト値([4,4])となります。
減名,増名
その項目名です。空配列 [] にすると用語設定のものが使われます。
背景,前景
ウィンドウの前後に表示する画像のファイル名を設定してください。
空配列 [] にするとデフォルト値となります。
効果音
合成時の効果音を設定します。(省略可能)
文字列で、鳴らす効果音のファイル名を設定してください。
配列で ["効果音名", 音量, ピッチ] の設定も可能です。
...
オプションを設定できます。(省略可能)
:price価格・所持金を表示する。:nowndウィンドウを透明にする。
:nosct無効レシピを非表示にする。:qty合成数指定ウィンドウを表示する。

■ 背景・前景画像

※ 画像を使用しない場合は必要ありません。
Graphics/System フォルダにサイズ 544 x 416 の画像を用意してください。

■ 設定項目

■ ブック(カテゴリ)の名称を表示

DISPLAY_BOOKNAME = false

true時、カテゴリの下に名称を表示します。

■ レシピの番号を表示

DISPLAY_NUBER = true

falseにすると番号は表示しません。

■ 増やすアイテムを上に表示

PLUS_GA_UE = true

falseにすると減らすアイテムを先に描画します。

■ 使用方法

■ アイテム画面の表示

start_item_make(param)
イベントコマンド「スクリプト」で実行してください。
Scene_ItemMake.start(param)
こちらは、どこでも実行できます。メニューなどでお使いください。

param には、レシピブックの ID を設定してください。ID は、1 から始まります。
start_item_make(1) のように数値1つで設定した場合は、
カテゴリ選択ウィンドウが表示されません。
start_item_make(1,2,3)start_item_make([1]) のように設定すると
カテゴリ選択ウィンドウが表示されます。
このように複数指定した場合、背景・前景・所持金・ウィンドウの透過の設定は、
最初のブックの設定が使用されます。

■ レシピを隠す

CAO::ItemMake.activate_recipe(recipe_id) (有効化)
CAO::ItemMake.deactivate_recipe(recipe_id) (無効化)

ID recipe_id のレシピの状態を変更します。
無効化されたレシピは、内容が表示されません。

CAO::ItemMake.activate_book(book_id) (有効化)
CAO::ItemMake.deactivate_book(book_id) (無効化)

ID book_id のレシピブックの状態を変更します。
指定されたブック内のレシピすべてに適用されます。

例)次のように複数の指定方法があります。
  CAO::ItemMake.activate_recipe(1)
  CAO::ItemMake.deactivate_recipe(1,2,4)
  CAO::ItemMake.activate_book(2..5)
  CAO::ItemMake.deactivate_book(1,3..5)
  CAO::ItemMake.deactivate_book([1,3..5])

■ レシピの取得

$game_imrecipes[id]
レシピ ID id のレシピオブジェクトを取得します。
※ id が 0 の要素は nil となります。
例)recipe = $game_imrecipes[3]

■ アイテムが交換可能か調べる

CAO::ItemMake.can_change_item?(recipe, amount = 1)
所持アイテムがレシピ recipe の条件に合致するかを判定します。
条件が満たされており合成可能なら true をそうでなければ、false を返します。
amount を指定した場合は、その数が交換可能かを調べます。
※ 所持数がいっぱいでも条件に合致すれば true となります。

■ アイテムの交換可能数を取得

CAO::ItemMake.count_changeable(recipe)
レシピのアイテムをいくつ交換できるかを調べ、その数を返します。
所持数や所持金、素材の有無を確認します。

■ アイテムの交換

CAO::ItemMake.change_item(recipe, amount = 1)
レシピ recipe の条件で amount 個のアイテムを交換(合成)します。
※ 交換可能かを調べてから実行してください。

■ レシピの初期化

$game_imrecipes.init
レシピやレシピブックのデータを変更した場合に実行してください。
ロードゲームを行った際に問題が発生する場合があります。
※ ニューゲームの場合は、自動で実行されます。