#============================================================================== # ■ スキルを忘れる ver 1.01 #------------------------------------------------------------------------------ #  配布元: # 白の魔 http://www12.plala.or.jp/izumiizayoi/tkool/ # #  利用規約: # RPGツクールVXの正規の登録者のみご利用になれます。 # 利用報告・著作権表示とかは必要ありません。 # 改造もご自由にどうぞ。 # 何か問題が発生しても責任は持ちません。 #============================================================================== #-------------------------------------------------------------------------- # ★ 初期設定。 # 忘れることのできないスキルと # 確認用メッセージウィンドウの設定を行います。 #-------------------------------------------------------------------------- module WD_forgetskill_ini Notforgetlist = [33,34,45] #忘れることのできないスキルをIDで指定 Forget_mess = "を本当に忘れてもよろしいですか?" #確認用メッセージ Forget_yes = " はい" Forget_no = " いいえ" Se_name = "Decision1" #忘れる際のSE Window_y = 312 #確認用ウィンドウのy座標 Opacity = 255 #確認用ウィンドウの不透明度(0〜255) Comb_2player = false #「ニ人パーティ用メニュー変更」スクリプトと併用する場合:true Comb_3player = false #「三人パーティ用メニュー変更」スクリプトと併用する場合:true end #-------------------------------------------------------------------------- # ★ 初期設定おわり #-------------------------------------------------------------------------- class Scene_Skill < Scene_Base #-------------------------------------------------------------------------- # ● 開始処理 #-------------------------------------------------------------------------- def start super create_menu_background @actor = $game_party.members[@actor_index] @viewport = Viewport.new(0, 0, 544, 416) @help_window = Window_Help.new @help_window.viewport = @viewport @status_window = Window_SkillStatus.new(0, 56, @actor) @status_window.viewport = @viewport @skill_window = Window_Skill.new(0, 112, 544, 304, @actor) @skill_window.viewport = @viewport @skill_window.help_window = @help_window if WD_forgetskill_ini::Comb_2player == true @target_window = Window_MenuStatus.new(160, 416-128) elsif WD_forgetskill_ini::Comb_3player == true @target_window = Window_MenuStatus.new(0, 416-128) else @target_window = Window_MenuStatus.new(0, 0) end hide_target_window create_forget_window end #-------------------------------------------------------------------------- # ● 終了処理 #-------------------------------------------------------------------------- def terminate super dispose_menu_background @help_window.dispose @status_window.dispose @skill_window.dispose @target_window.dispose @forget_window.dispose end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update super update_menu_background @help_window.update @status_window.update @skill_window.update @target_window.update @forget_window.update if @skill_window.active update_skill_selection elsif @forget_window.active update_forget_selection elsif @target_window.active update_target_selection end end #-------------------------------------------------------------------------- # ● スキル選択の更新 #-------------------------------------------------------------------------- alias wd_orig_update_skill_selection8 update_skill_selection def update_skill_selection wd_orig_update_skill_selection8 if Input.trigger?(Input::X) @skill = @skill_window.skill forget_hantei = true forget_hantei = false if @skill == nil WD_forgetskill_ini::Notforgetlist.each{|n| forget_hantei = false if @skill.id == n } if forget_hantei == true Sound.play_decision forget_skill else Sound.play_buzzer end end end #-------------------------------------------------------------------------- # ● スキル削除確認用ウィンドウの作成 #-------------------------------------------------------------------------- def create_forget_window @forget_window = Window_ForgetSkill.new(0, WD_forgetskill_ini::Window_y, 544, 104) @forget_window.active = false @forget_window.visible = false @forget_window.opacity = 255 @forget_window.index = 0 end #-------------------------------------------------------------------------- # ● スキルの削除確認用ウィンドウの表示 #-------------------------------------------------------------------------- def forget_skill @forget_window.set_skillid(@skill.id) @forget_window.index = 0 @skill_window.active = false @forget_window.active = true @forget_window.visible = true end #-------------------------------------------------------------------------- # ● スキル削除確認用ウィンドウの更新 #-------------------------------------------------------------------------- def update_forget_selection if Input.trigger?(Input::B) Sound.play_cancel @forget_window.active = false @forget_window.visible = false @skill_window.active = true elsif Input.trigger?(Input::C) case @forget_window.index when 0 # 忘れる Audio.se_play("Audio/SE/" + WD_forgetskill_ini::Se_name) $game_actors[@actor.id].forget_skill(@skill.id) @skill_window.refresh @forget_window.active = false @forget_window.visible = false @skill_window.active = true when 1 # キャンセル Sound.play_cancel @forget_window.active = false @forget_window.visible = false @skill_window.active = true end end end end #============================================================================== # ■ Window_ForgetSkill #------------------------------------------------------------------------------ #  スキル画面などで、スキルを忘れる際の確認用ウィンドウです。 #============================================================================== class Window_ForgetSkill < Window_Selectable #-------------------------------------------------------------------------- # ● オブジェクト初期化 # x : ウィンドウの X 座標 # y : ウィンドウの Y 座標 # width : ウィンドウの幅 # height : ウィンドウの高さ # actor : アクター #-------------------------------------------------------------------------- def initialize(x, y, width, height) super(x, y, width, height) @column_max = 1 @index = 0 @item_max = 2 end #-------------------------------------------------------------------------- # ● スキルのIDの受け渡し #-------------------------------------------------------------------------- def set_skillid(skill_id) self.contents.clear self.contents.draw_text(0, 0, 512, WLH, "「#{$data_skills[skill_id].name}」#{WD_forgetskill_ini::Forget_mess}") self.contents.draw_text(0, 24, 120, WLH, "#{WD_forgetskill_ini::Forget_yes}") self.contents.draw_text(0, 48, 120, WLH, "#{WD_forgetskill_ini::Forget_no}") end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update super y = WLH * (1 + @index) self.cursor_rect.set(0, y, 512, WLH) end end