しいたけサイクロン・アーカイブス

  1. トップ
  2. RGSS
  3. ショップ改変スクリプトver.2

ショップ改変スクリプトver.2

概要

ショップイベントの際に店員との会話形式になります。

仕様

店員のセリフはあらかじめセットしますがセットされていない場合
武器やアイテムの説明文が表示されます。
また定義されていない店員を呼び出すと0番目の店員が呼び出されます。

ver.1との変更点

不具合を修正しました。
コマンドウィンドウにおけるコメントを追加しました。
メッセージごとに顔を変更させることができるようにしました。
店員データを複製できるようにしました。

テストゲーム

ダウンロード (1.5MB)

(注)テストゲームを行うにはRPGツクールVXAceのRTPが必要です。

スクリプト

・DataManager
DataManager

・クラス
Scene_Shop
Shop_Person
Shop_Person_Action
Window_Sales
Window_ShopBuy

・上のクラスのスクリプトをまとめたもの(DataManagerは含まない)
composed_scripts

広告

使用方法の説明

導入法

上のスクリプトたちを導入した後、本体のDataManager内のself.initのcreate_game_objectsの下にload_normal_takoffshopdataを挿入してください。

使い方

$shop_people[id] = Shop_Person.new(name, face_data)
idは店員をあらわすIDになります。0から順に整数値を入れてください。
nameは店員の名前を設定します。
face_dataはデフォルトの顔データで[character_name, character_index]で指定します。
character_nameは顔画像のファイル名、
character_indexは顔画像ファイルの中で顔のID(0から7で指定)、
(例:[”Actor3.png”,3])
各店員ごとにメッセージをセットします。

$shop_people[id].actions[action_name]でaction_nameで指し示す行動を定義します。
(例:$shop_people[id].actions[:thanks_buy]で買ったときの行動を示します)
$shop_people[id].actions[action_name].message = strでアクション時のメッセージ(str)を定義します。
$shop_people[id].actions[action_name].face = [character_name, character_index]でアクション時の顔画像を定義します。
faceを設定しないときはデフォルトの顔データが使われます。messageを設定しない場合は無言になります。
action_name
:greetingで最初にするあいさつにおける選択時のアクション、
:select_sellで売るものを選択するときにおける選択時のアクション、
:thanks_sellで売ったときにおける選択時のアクション、
:select_buyで買うものを選択するときにおける選択時のアクション、
:thanks_buyで買ったときにおける選択時のアクション、
:cancel_shopで店を去るときにおける選択時のアクション、
:select_commandでコマンドウィンドウ(購入、売却などの選択ウィンドウ)における選択時のアクション
$shop_people[id].explanation_item[num] = textでnum番目のアイテムの説明文をtextに入れます。
numは1,2,3…の数字(1以上の整数)が入ります)
$shop_people[id].explanation_weapon[num]でnum番目の武器の説明文をtextに入れます。
$shop_people[id].explanation_armor[num]でnum番目の防具の説明文をtextに入れます。
$var_shop_peopleで店員を指定する変数のIDを指定します。
マップ上のイベントでショップの処理をしたとき$var_shop_peopleのIDの変数値のidとする
$shop_people[id] の店員が現れます。ですのでショップの処理をする直前に$var_shop_peopleのIDの変数値を変更してください。
$shop_people[id].copy_person(id2)でid番目の店員データにid2番目の店員データを複製します。(ただしデフォルトの顔データは複製しません、actionsのデータとアイテムなどの説明のみコピーします)

広告

使用例

まず$shop_people[0]にテスターという店員を作ってみます。

$shop_people[0] = Shop_Person.new("テスター",["People3.png",5])
まず、最初のあいさつ文と顔を設定します。
$shop_people[0].actions[:greeting].message = "いらっしゃいませ。"
$shop_people[0].actions[:greeting].face = ["People3.png",0]
もしここで$shop_people[0].actions[:greeting].faceを設定しなければデフォルトの顔画像、すなわち["People3.png",5]となります。
この調子ですべての行動を設定してみます。

$shop_people[0].actions[:greeting].message = "いらっしゃいませ。"
$shop_people[0].actions[:greeting].face = ["People3.png",0]
$shop_people[0].actions[:select_sell].message = "どれを売っていただけるのでしょうか?。"
$shop_people[0].actions[:select_sell].face = ["People3.png",1]
$shop_people[0].actions[:thanks_sell].message = "ありがとうございます。"
$shop_people[0].actions[:thanks_sell].face = ["People3.png",2]
$shop_people[0].actions[:select_buy].message = "好きなのを選んでくださいね。"
$shop_people[0].actions[:select_buy].face = ["People3.png",3]
$shop_people[0].actions[:thanks_buy].message = "ありがとうございます。"
$shop_people[0].actions[:thanks_buy].face = ["People3.png",4]
$shop_people[0].actions[:cancel_shop].message = "また来てくださいね。"
$shop_people[0].actions[:cancel_shop].face = ["People3.png",6]
$shop_people[0].actions[:select_command].message = "何の御用でしょうか?"
$shop_people[0].actions[:select_command].face = ["People3.png",7]

さらに新しく店員を作ります。

$shop_people[10] = Shop_Person.new("テスター2",["People3.png",5])
という店員を新たに作ります。

copy_personを使って、$shop_people[10]を設定してみます。

$shop_people[10].copy_person(0)
$shop_people[10].actions[:greeting].message = "こんばんは。"
$shop_people[10].actions[:greeting].face = ["People4.png",0]
$shop_people[10].explanation_item[1] = "体力を小回復させますぞ。"
$shop_people[10].copy_person(0)
とすることで$shop_people[0]の店員のメッセージや顔データがコピーされます。
とすることでメッセージや顔データを$shop_people[0]から変更することができます。

質問やバグなどの報告は製作ブログのコメント欄でお願いします。
ブログ

広告