#============================================================================== # ■ スキル・アイテム時にサウンド Ver2.1                By むー #------------------------------------------------------------------------------ # 単純に、アイテムまたはスキル使用時にサウンドを鳴らす機能です。 # 特に高度な機能はありません。単純にそれだけです。 # # ★簡単な仕様★ # # スキル使用前にサウンドを鳴らします。戦闘中も移動中も有効です。 # # ★使い方★ # # アイテムまたはスキルのメモ欄に、以下のように記述します。 # # <直前サウンド:1> # # 「直前サウンド」という文字は、以下の設定で指定する文字です。 # 1というのは、以下の設定で指定する番号です。 # この記述がメモ欄にあるアイテム・スキルを使用すると、 # 下記設定の PLAY_SE に該当するサウンドを鳴らします。 #  # PLAY_SE = [ # [1, ["Audio/SE/Magic1", 90, 100, 60]], # [2, ["Audio/SE/Magic2", 90, 100, 60]], # ] #  # と書かれていたとすると、メモ欄に<直前サウンド:2>と書かれたアイテムおよび # スキルを使った場合、Magic2というSEをボリューム90,、ピッチ100で鳴らします。 # さらにサウンドを鳴らしている間、60フレーム(60で約1秒)の待機をします。 # サウンドを鳴らすタイミングは、スキルの場合はメッセージ1とメッセージ2の間、 # アイテムの場合はメッセージの後となります。 #============================================================================== module MOO_SKILL_ITEM_USE_SOUND #-------------------------------------------------------------------------- # 以下、設定箇所です。 #-------------------------------------------------------------------------- # メモ欄に記述するキーワードを指定します。 KEYWORD = "直前サウンド" # 他のスクリプトと校合する場合にのみ変更してください。 # 下記のキーワードをステートのメモ欄に記述します。 PLAY_SE = [ [1, ["Audio/SE/Darkness3", 100, 100, 30]], ] # 最初と最後の[]はそのままにしておいてください。 # 内容は # [番号, ["サウンド名", ボリューム, ピッチ]], # となります。最後の,を忘れずに。最終行のみ,は省略できます。 #-------------------------------------------------------------------------- # ここまで。 #-------------------------------------------------------------------------- #-------------------------------------------------------------------------- # ○ スキル/アイテムのメモ欄取得                  <追加> # item: スキルかアイテムの情報 #-------------------------------------------------------------------------- def moo_skill_item_use_memo(item) # スキルかアイテムいずれかのメモ欄のキーワードを取得 if item.class == RPG::Skill memo = $data_skills[item.id].note.scan((/<#{MOO_SKILL_ITEM_USE_SOUND::KEYWORD}[::](\S+)>/)) elsif item.class == RPG::Item memo = $data_items[item.id].note.scan((/<#{MOO_SKILL_ITEM_USE_SOUND::KEYWORD}[::](\S+)>/)) end # メモ整備 memo = memo.flatten # メモ欄のキーワードに該当する値を取得 if memo != nil and not memo.empty? val= memo[0].to_i else val = 0 end # 該当しない場合は空の配列を返す return [] if val == 0 # 設定があれば if MOO_SKILL_ITEM_USE_SOUND::PLAY_SE.size > 0 # サウンド番号を探す for i in MOO_SKILL_ITEM_USE_SOUND::PLAY_SE # メモと一致するサウンド番号があった場合(戦闘時移動時問わずここを通る) if i[0] == val # 値を返す return [i[1][0], i[1][1], i[1][2], i[1][3] * (1.0000000 / 60)] break end end end end end #============================================================================== # ■ Window_BattleLog #------------------------------------------------------------------------------ #  戦闘の進行を実況表示するウィンドウです。枠は表示しませんが、便宜上ウィンド # ウとして扱います。 #============================================================================== class Window_BattleLog < Window_Selectable include MOO_SKILL_ITEM_USE_SOUND #-------------------------------------------------------------------------- # ● スキル/アイテム使用の表示                  <再定義> #-------------------------------------------------------------------------- def display_use_item(subject, item) if item.is_a?(RPG::Skill) add_text(subject.name + item.message1) # ここから↓ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ s_arr = moo_skill_item_use_memo(item) if s_arr != [] wait Audio.se_play(s_arr[0], s_arr[1], s_arr[2]) sleep(s_arr[3]) end # ここまで↑ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ unless item.message2.empty? wait add_text(item.message2) end else add_text(sprintf(Vocab::UseItem, subject.name, item.name)) # ここから↓ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ s_arr = moo_skill_item_use_memo(item) if s_arr != [] Audio.se_play(s_arr[0], s_arr[1], s_arr[2]) sleep(s_arr[3]) end # ここまで↑ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ end end end #============================================================================== # ■ Scene_ItemBase #------------------------------------------------------------------------------ #  アイテム画面とスキル画面の共通処理を行うクラスです。 #============================================================================== class Scene_ItemBase < Scene_MenuBase include MOO_SKILL_ITEM_USE_SOUND #-------------------------------------------------------------------------- # ◎ アイテムの使用                      <エイリアス> #-------------------------------------------------------------------------- alias moo_skill_item_use_sound_use_item use_item def use_item # 戦闘中ではない場合ここで音を鳴らす処理↓ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥ if $game_party.in_battle == false s_arr = moo_skill_item_use_memo(item) if s_arr != [] Audio.se_play(s_arr[0], s_arr[1], s_arr[2]) sleep(s_arr[3]) end end # ここまで↑ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ moo_skill_item_use_sound_use_item end end