#◆◇◆◇◆ ☆ 動くリザルトエクセル2 ver 1.12 ◇◆◇◆◇ # ☆ マスタースクリプト ver 2.00 以降専用 # サポート掲示板 http://www2.ezbbs.net/21/minto-aaa/ # by みんと =begin 更新履歴 ver 1.12 密かにバージョンアップ ver 1.11 密かにバージョンアップ ver 1.10 入手アイテム名を統一化 ver 1.02 ポイントが0の際に エラー落ちするミスを修正 ver 1.01 微妙に演出を修正 セクション指定上下関係 スキル習得装備・アビリティシステム ↓ このスクリプト 導入場所の注意 特にありませんが、 出来れば下の方に導入するのが好ましいです。 説明 このスクリプト素材には 開発者用・高速数字描写機構の導入が必須となります。 他の動くリザルトシリーズ及び、 アクティブレベルアップとの同時使用は出来ません。 リザルトウィンドウを、 文字などが動くタイプに変更します。 文字のカスタマイズ等は ソース内部を参照してください。 =end #============================================================================== # ☆ MINTO #------------------------------------------------------------------------------ # 様々なフラグを扱うメインモジュールです。 #============================================================================== module MINTO # 動くリザルトエクセル2を有効化 ( true で有効 / false で無効 ) RGSS["リザルトエクセル2"] = true end #============================================================================== # ☆ カスタマイズ #------------------------------------------------------------------------------ # 機能のカスタマイズを行うモジュールです。 #============================================================================== module MINTO # リザルトテキストのハッシュ(変更しない) Result = {} # 注意 # リザルトテキストに半角のスペースを使わないでください # Result["殲滅完了"] = "任意の文字列" # リザルトテキスト "殲滅完了" Result["殲滅完了"] = "殲滅完了" # リザルトテキスト "Destroy_Complete" Result["Destroy_Complete"] = "Destroy_Complete" # リザルトテキスト "経験値" Result["経験値"] = "経験値" # リザルトテキスト "Experience" Result["Experience"] = "Experience" # リザルトテキスト "AP" Result["AP"] = "AP" # リザルトテキスト "Ability_Point" Result["Ability_Point"] = "Ability_Point" # リザルトテキスト "ゴールド" Result["ゴールド"] = "ゴールド" # リザルトテキスト "Odtain_Gold" Result["Odtain_Gold"] = "Odtain_Gold" # リザルトテキスト "アイテム" Result["アイテム"] = "アイテム" # リザルトテキスト "Odtain_Treasure" Result["Odtain_Treasure"] = "Odtain_Treasure" # リザルトテキスト "Press C Button" Result["Press C Button"] = "Press C Button" end if MINTO::RGSS["リザルトエクセル2"] #============================================================================== # ■ Window_BattleResult #------------------------------------------------------------------------------ #  バトル終了時に、獲得した EXP やゴールドなどを表示するウィンドウです。 #============================================================================== class Window_BattleResult < Window_Base #-------------------------------------------------------------------------- # ● オブジェクト初期化 # exp : EXP # gold : ゴールド # treasures : トレジャー #-------------------------------------------------------------------------- def initialize(exp, gold, treasures, ap = 0) super(0, 0, 640, 480) @exp = exp @gold = gold @treasures = treasures @ap = ap @ap = $scene.ap if MINTO::RGSS["equip_skill_ability_system"] @ability = MINTO::RGSS["equip_skill_ability_system"] @bitmap = Bitmap.new(32, 32) self.contents = Bitmap.new(width - 32, height - 32) self.z = 999 self.opacity = 0 self.visible = false end #-------------------------------------------------------------------------- # ● リザルトフェーズ1 #-------------------------------------------------------------------------- def result_phase1 # リザルトセット result_set(30, MINTO::Result["Destroy_Complete"], true, 1) # モーションセット motion_set(MINTO::Result["Destroy_Complete"], 2, 32) # リザルトセット result_set(80, MINTO::Result["殲滅完了"]) # モーションセット motion_set(MINTO::Result["殲滅完了"], 0, -32) # ライン描写 line_set(MINTO::Result["Destroy_Complete"], 1, 3) # モーションセット motion_set("ライン1", 2, 64) # リザルトセット result_set(22, MINTO::Result["Press C Button"]) # モーションセット motion_set(MINTO::Result["Press C Button"], 2, 96) # ボタン入力待ち press_c_button? # ズームアウト開始 motion_set(MINTO::Result["殲滅完了"], 1, 0) motion_set(MINTO::Result["Destroy_Complete"], 1, 0) motion_set("ライン1", 1, 0) motion_set(MINTO::Result["Press C Button"], 1, 0) # スプライト解放 sprite_dispose(MINTO::Result["殲滅完了"]) sprite_dispose(MINTO::Result["Destroy_Complete"]) sprite_dispose("ライン1") end #-------------------------------------------------------------------------- # ● リザルトフェーズ2 #-------------------------------------------------------------------------- def result_phase2 # リザルトセット result_set(30, MINTO::Result["Experience"], true, 1) # モーションセット motion_set(MINTO::Result["Experience"], 2, -80, -128) # EXP表示用のピクチャー数字を作成 x = @result[MINTO::Result["Experience"]].x y = @result[MINTO::Result["Experience"]].y @exp_s = Mint_Picture_Number.new(320, y + 10, 7, 2000) # リザルトセット result_set(40, MINTO::Result["経験値"]) # モーションセット motion_set(MINTO::Result["経験値"], 0, -128, -128) # ライン描写 line_set(MINTO::Result["Experience"], 2, 3) # モーションセット motion_set("ライン2", 2, -48, -128) @exp_s.set_text(0, 1) # EXP描写 set_point(0, @exp, @exp_s) # アビリティシステムが有効な場合 if @ability # リザルトセット result_set(30, MINTO::Result["Ability_Point"], true, 1) # モーションセット motion_set(MINTO::Result["Ability_Point"], 2, 0, -128) # AP表示用のピクチャー数字を作成 x = @result[MINTO::Result["Ability_Point"]].x y = @result[MINTO::Result["Ability_Point"]].y @ap_s = Mint_Picture_Number.new(320, y + 10, 7, 2000) # リザルトセット result_set(40, MINTO::Result["AP"]) # モーションセット motion_set(MINTO::Result["AP"], 0, -48, -128) # ライン描写 line_set(MINTO::Result["Ability_Point"], 3, 3) # モーションセット motion_set("ライン3", 2, 32, -128) @ap_s.set_text(0, 1) # AP描写 set_point(0, @ap, @ap_s) end # リザルトセット result_set(30, MINTO::Result["Odtain_Gold"], true, 1) # モーションセット motion_set(MINTO::Result["Odtain_Gold"], 2, 88, -128) # ゴールド表示用のピクチャー数字を作成 x = @result[MINTO::Result["Odtain_Gold"]].x y = @result[MINTO::Result["Odtain_Gold"]].y @gold_s = Mint_Picture_Number.new(320, y + 10, 7, 2000) # リザルトセット result_set(40, MINTO::Result["ゴールド"]) # モーションセット motion_set(MINTO::Result["ゴールド"], 0, 40, -128) # ライン描写 line_set(MINTO::Result["Odtain_Gold"], 4, 3) # モーションセット motion_set("ライン4", 2, 120, -128) @gold_s.set_text(0, 1) # ゴールド描写 set_point(0, @gold, @gold_s) # モーションセット motion_set(MINTO::Result["Press C Button"], 2, 128) # ボタン入力待ち press_c_button? # ズームアウト開始 motion_set(MINTO::Result["経験値"], 1, 0) motion_set(MINTO::Result["Experience"], 1, 0) motion_set("ライン2", 1, 0) @exp_s.dispose # アビリティシステムが有効な場合 if @ability motion_set(MINTO::Result["AP"], 1, 0) motion_set(MINTO::Result["Ability_Point"], 1, 0) motion_set("ライン3", 1, 0) @ap_s.dispose end motion_set(MINTO::Result["ゴールド"], 1, 0) motion_set(MINTO::Result["Odtain_Gold"], 1, 0) motion_set("ライン4", 1, 0) @gold_s.dispose motion_set(MINTO::Result["Press C Button"], 1, 0) # スプライト解放 sprite_dispose(MINTO::Result["経験値"]) sprite_dispose(MINTO::Result["Experience"]) sprite_dispose("ライン2") # アビリティシステムが有効な場合 if @ability sprite_dispose(MINTO::Result["AP"]) sprite_dispose(MINTO::Result["Ability_Point"]) sprite_dispose("ライン3") end sprite_dispose(MINTO::Result["ゴールド"]) sprite_dispose(MINTO::Result["Odtain_Gold"]) sprite_dispose("ライン4") end #-------------------------------------------------------------------------- # ● リザルトフェーズ3 #-------------------------------------------------------------------------- def result_phase3 # リザルトセット result_set(30, MINTO::Result["Odtain_Treasure"], true, 1) # モーションセット motion_set(MINTO::Result["Odtain_Treasure"], 2, -80, -128) # リザルトセット result_set(40, MINTO::Result["アイテム"]) # モーションセット motion_set(MINTO::Result["アイテム"], 0, -128, -128) # ライン描写 line_set(MINTO::Result["Odtain_Treasure"], 5, 3) # モーションセット motion_set("ライン5", 2, -48, -128) for i in 0...@treasures.size item = @treasures[i] name = item.name if @item_hash[item.name+item.id.to_s].size >= 2 name += " × #{@item_hash[item.name+item.id.to_s].size}" end result_set(22, name + " " + i.to_s, true, 4) end for i in 0...@treasures.size item = @treasures[i] x = 64 name = item.name if @item_hash[item.name+item.id.to_s].size >= 2 name += " × #{@item_hash[item.name+item.id.to_s].size}" end motion_set(name + " #{i}", 2, -32 + (i * 32), x) end # リザルトセット result_set(22, MINTO::Result["Press C Button"]) # モーションセット motion_set(MINTO::Result["Press C Button"], 2, 160) # ボタン入力待ち press_c_button? # ズームアウト開始 motion_set(MINTO::Result["Odtain_Treasure"], 1, 0) motion_set(MINTO::Result["アイテム"], 1, 0) motion_set("ライン5", 1, 0) for i in 0...@treasures.size item = @treasures[i] name = item.name if @item_hash[item.name+item.id.to_s].size >= 2 name += " × #{@item_hash[item.name+item.id.to_s].size}" end motion_set(name + " #{i}", 1, 0) end motion_set(MINTO::Result["Press C Button"], 1, 0) # スプライト解放 sprite_dispose(MINTO::Result["アイテム"]) sprite_dispose(MINTO::Result["Odtain_Treasure"]) sprite_dispose("ライン5") for i in 0...@treasures.size item = @treasures[i] name = item.name if @item_hash[item.name+item.id.to_s].size >= 2 name += " × #{@item_hash[item.name+item.id.to_s].size}" end sprite_dispose(name + " #{i}") end end #-------------------------------------------------------------------------- # ● セットポイント #-------------------------------------------------------------------------- def set_point(i, oi, sprite) # 初期代入 n = oi >= 10 ? oi % 10 : 0 # 分割率 split = oi >= 10 ? 10 : oi # ウェイトタイム wait = oi >= 10 ? 11 : oi+1 # スキップフラグ skip = false # ポイントが0の場合は処理を終了 if oi == 0 # 画面の情報を更新 Graphics.update # 入力情報を更新 Input.update # 値を描写 sprite.set_text(0, 1) return end # カウントがなくなるまで実行する while wait > 0 sprite.set_text(n, 1) n += oi / split wait -= 1 # C ボタンが押された場合 if Input.trigger?(Input::C) # スキップフラグをオン skip = true end if skip == false # 画面の情報を更新 Graphics.update # 入力情報を更新 Input.update end end end #-------------------------------------------------------------------------- # ● セットピクチャー #-------------------------------------------------------------------------- def set_picture # リザルト用のハッシュを初期化 @result = {} # 背景を作成 @result["背景"] = Sprite.new @result["背景"].z = self.z + 10 @result["背景"].zoom_x = 2 @result["背景"].zoom_y = 3 @result["背景"].y = (480 - (240 * 3)) / 2 @result["背景"].opacity = 192 % 40 @result["背景"].bitmap = Bitmap.new(320, 240) back = RPG::Cache.picture("Result_back") @result["背景"].bitmap.blt(0, 0, back, back.rect) # スプライトを生成 @result[MINTO::Result["殲滅完了"]] = Sprite.new @result[MINTO::Result["Destroy_Complete"]] = Sprite.new @result[MINTO::Result["経験値"]] = Sprite.new @result[MINTO::Result["Experience"]] = Sprite.new # アビリティシステムが有効な場合 if @ability @result[MINTO::Result["AP"]] = Sprite.new @result[MINTO::Result["Ability_Point"]] = Sprite.new @result["ライン3"] = Sprite.new end @result[MINTO::Result["ゴールド"]] = Sprite.new @result[MINTO::Result["Odtain_Gold"]] = Sprite.new @result[MINTO::Result["アイテム"]] = Sprite.new @result[MINTO::Result["Odtain_Treasure"]] = Sprite.new @result[MINTO::Result["Press C Button"]] = Sprite.new @result["ライン1"] = Sprite.new @result["ライン2"] = Sprite.new @result["ライン4"] = Sprite.new @result["ライン5"] = Sprite.new # トレジャーが空以外の場合 if @treasures != [] @item_hash = {} for i in 0...@treasures.size item = @treasures[i] if @item_hash[item.name+item.id.to_s] == nil @item_hash[item.name+item.id.to_s] = [] else @treasures[i] = nil end @item_hash[item.name+item.id.to_s].push(item) end @treasures.compact! for i in 0...@treasures.size item = @treasures[i] name = item.name if @item_hash[item.name+item.id.to_s].size >= 2 name += " × #{@item_hash[item.name+item.id.to_s].size}" end @result[name + " #{i}"] = Sprite.new end end # フェードイン開始 start_fade_in # 画面の情報を更新 Graphics.update # 入力情報を更新 Input.update # リザルトフェーズ1 result_phase1 # 画面の情報を更新 Graphics.update # 入力情報を更新 Input.update # リザルトフェーズ2 result_phase2 # 画面の情報を更新 Graphics.update # 入力情報を更新 Input.update # トレジャーが空以外の場合 if @treasures != [] # リザルトフェーズ2 result_phase3 end motion_set("背景", 1, 0) sprite_dispose("背景") sprite_dispose(MINTO::Result["Press C Button"]) end #-------------------------------------------------------------------------- # ● フェードイン #-------------------------------------------------------------------------- def start_fade_in # ウェイトタイム wait = 40 zoom_y = 1 / 40.0 # スキップフラグ skip = false # カウントがなくなるまで実行する while wait > 0 @result["背景"].zoom_y -= zoom_y @result["背景"].y = (480 - (240 * @result["背景"].zoom_y)) / 2 @result["背景"].opacity += 192 / 40 # 画面の情報を更新 Graphics.update # ウェイトを減らす wait -= 1 end end #-------------------------------------------------------------------------- # ● リザルトセット #-------------------------------------------------------------------------- def result_set(size, text, frame = false, collar = 0) # ダミーフォントサイズ @bitmap.font.size = size # ビットマップのサイズを取得 r_width = @bitmap.text_size(text).width r_height = @bitmap.text_size(text).height # 座標を取得 x = 80 + ((480 - r_width) / 2) y = 60 + ((360 - r_height) / 2) rect = Rect.new(1, 1, r_width, r_height) # 座標を設定 @result[text].x = x @result[text].y = y @result[text].z = self.z + 10 @result[text].opacity = 0 # ビットマップ作成 @result[text].bitmap = Bitmap.new(r_width, r_height) @result[text].bitmap.font.size = size # テキスト描写 result_text(@result[text].bitmap, text, rect, frame, collar) end #-------------------------------------------------------------------------- # ● テキスト描写 #-------------------------------------------------------------------------- def result_text(bitmap, text, rect, frame, collar) text = text.split(/ /)[0].to_s # 縁文字の場合 if frame # 文字カラーを取得 bitmap.font.color = text_color(2) # 縁を描写 bitmap.draw_text(rect.x + 1, rect.y + 1, rect.width, rect.height, text) bitmap.draw_text(rect.x + 1, rect.y - 1, rect.width, rect.height, text) bitmap.draw_text(rect.x - 1, rect.y + 1, rect.width, rect.height, text) bitmap.draw_text(rect.x - 1, rect.y - 1, rect.width, rect.height, text) end # 文字カラーを取得 bitmap.font.color = text_color(collar) # 文字を描写 bitmap.draw_text(rect, text) end #-------------------------------------------------------------------------- # ● ライン描写 #-------------------------------------------------------------------------- def line_set(text, id, collar, width = 388) # カラーを取得 collar = text_color(collar) # 座標を取得 @result["ライン#{id}"].x = @result[text].x.to_i @result["ライン#{id}"].y = @result[text].y.to_i + @result[text].bitmap.height @result["ライン#{id}"].z = @result[text].z.to_i + 10 @result["ライン#{id}"].opacity = 0 @result["ライン#{id}"].blend_type = 1 x = @result["ライン#{id}"].x y = @result["ライン#{id}"].y w = @result[text].bitmap.width h = @result[text].bitmap.height # ビットマップを作成 @result["ライン#{id}"].bitmap = Bitmap.new(w, h) # ラインを描写 @result["ライン#{id}"].bitmap.fill_rect(0, 0, w, 1, collar) end #-------------------------------------------------------------------------- # ● 文字色取得 # n : 文字色番号 (0〜7) #-------------------------------------------------------------------------- def text_color(n) case n when 0 return Color.new(255, 255, 255) when 1 return Color.new(150, 150, 150) when 2 return Color.new(0, 0, 0) when 3 return Color.new(0, 255, 0) when 4 return Color.new(100, 255, 255) end end #-------------------------------------------------------------------------- # ● モーションセット #-------------------------------------------------------------------------- def motion_set(text, type, y, x = 0) # タイプ別に分岐 case type # ズームイン when 0 motion_zoom_in(text, 10, y, x) # ズームアウト when 1 motion_zoom_out(text) # フェードイン when 2 motion_fade_in(text, 10, y, x) end end #-------------------------------------------------------------------------- # ● モーションズームイン #-------------------------------------------------------------------------- def motion_zoom_in(text, count = 10, y = 0, x = 0) # ズームを設定 zoom = 1 / 10.0 @result[text].zoom_x = 2 @result[text].zoom_y = 2 # 透明度を設定 @result[text].opacity = 255 % count # 座標を取得 w = @result[text].bitmap.width h = @result[text].bitmap.height # 座標を設定 @result[text].x = ((640 - (w * 2)) / 2) + x @result[text].y = ((480 - (h * 2)) / 2) + y # ウェイトタイム wait = count # スキップフラグ skip = false # カウントがなくなるまで実行する while wait > 0 @result[text].zoom_x -= zoom @result[text].x = ((640 - (w * @result[text].zoom_x)) / 2) + x @result[text].zoom_y -= zoom @result[text].y = ((480 - (h * @result[text].zoom_y)) / 2) + y @result[text].opacity += 255 / count # C ボタンが押された場合 if Input.trigger?(Input::C) # スキップフラグをオン skip = true end if skip == false # 画面の情報を更新 Graphics.update # 入力情報を更新 Input.update end # ウェイトを減らす wait -= 1 end end #-------------------------------------------------------------------------- # ● モーションズームアウト #-------------------------------------------------------------------------- def motion_zoom_out(text, count = 10) # 座標を取得 w = @result[text].bitmap.width # ウェイトタイム wait = count # スキップフラグ skip = false # 入力情報を更新 Input.update # カウントがなくなるまで実行する while wait > 0 @result[text].zoom_x += 0.35 @result[text].x = (640 - (w * @result[text].zoom_x)) / 2 @result[text].zoom_y -= 0.025 @result[text].opacity -= 255 / count # C ボタンが押された場合 if Input.repeat?(Input::C) # スキップフラグをオン skip = true end if skip == false # 画面の情報を更新 Graphics.update # 入力情報を更新 Input.update end # ウェイトを減らす wait -= 1 end end #-------------------------------------------------------------------------- # ● モーションフェードイン #-------------------------------------------------------------------------- def motion_fade_in(text, count = 10, y = 64, x = 0) # 透明度を設定 @result[text].opacity = 255 % count # 座標を取得 w = @result[text].bitmap.width h = @result[text].bitmap.height @result[text].zoom_x = 1 @result[text].zoom_y = 1 # 座標を設定 ox = ((640 - w) / 2) + x @result[text].x = 640 @result[text].y = ((480 - (h * 2)) / 2) + y # ウェイトタイム wait = count # スキップフラグ skip = false # カウントがなくなるまで実行する while wait > 0 abs_x = (640 - ox) / 10 @result[text].x -= abs_x @result[text].opacity += 255 / count # C ボタンが押された場合 if Input.trigger?(Input::C) # スキップフラグをオン skip = true end if skip == false # 画面の情報を更新 Graphics.update # 入力情報を更新 Input.update end # ウェイトを減らす wait -= 1 end @result[text].x = ox end #-------------------------------------------------------------------------- # ● ボタン入力待ち #-------------------------------------------------------------------------- def press_c_button? turn = 0 # 透明度を初期化 @result[MINTO::Result["Press C Button"]].opacity = 255 # ループ処理 loop do if turn == 0 @result[MINTO::Result["Press C Button"]].opacity -= 8 if @result[MINTO::Result["Press C Button"]].opacity <= 128 turn = 1 end else @result[MINTO::Result["Press C Button"]].opacity += 8 if @result[MINTO::Result["Press C Button"]].opacity >= 255 turn = 0 end end # 画面の情報を更新 Graphics.update # 入力情報を更新 Input.update # C ボタンが押された場合 if Input.trigger?(Input::C) break end end end #-------------------------------------------------------------------------- # ● スプライト解放 #-------------------------------------------------------------------------- def sprite_dispose(text) # スプライトを解放 @result[text].bitmap.dispose @result[text].dispose end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh # 空実行 end end #============================================================================== # ■ Scene_Battle (分割定義 1) #------------------------------------------------------------------------------ #  バトル画面の処理を行うクラスです。 #============================================================================== class Scene_Battle #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_reader :status_window # ステータスウィンドウ end #============================================================================== # ■ Scene_Battle (分割定義 2) #------------------------------------------------------------------------------ #  バトル画面の処理を行うクラスです。 #============================================================================== class Scene_Battle #-------------------------------------------------------------------------- # ● フレーム更新 (アフターバトルフェーズ) #-------------------------------------------------------------------------- alias :update_phase5_result2 :update_phase5 def update_phase5 # ウェイトカウントが 1 になった場合 if @phase5_wait_count == 1 and not @phase5 @phase5 = true # リザルトウィンドウを表示 @result_window.visible = true # 動くリザルト処理 @result_window.set_picture # メインフェーズフラグをクリア $game_temp.battle_main_phase = false # ステータスウィンドウをリフレッシュ @status_window.refresh end # 元の処理を実行 update_phase5_result2 end end end