#============================================================================== # ■ RGSS3 アクター名変更メニューコマンド&名前変更禁止特徴 Ver1.01 by 星潟 #------------------------------------------------------------------------------ # アクター名を変更できるメニューコマンドを追加します。 # また、このコマンドで選択できなくなる特徴を設定できるようになります。 #============================================================================== # 特徴を有する物(アクター・職業・装備・ステート等)のメモ欄に記述。 #------------------------------------------------------------------------------ # <名前変更禁止> # # この特徴を有するアクターはメニューコマンドから名前を変更できない。 #============================================================================== module NameChangeMenuCommand #名前変更コマンドの名称を指定。 Name = "名前変更" #名前変更禁止特徴設定用キーワードを指定。 Word = "名前変更禁止" #名前変更コマンド使用時の最大文字数を指定。 Max = 6 #名前変更コマンド表示用変数IDを指定。 #この変数IDの値に応じて、表示内容が変化します。 #0の時    →表示され、選択できます。 #1の時    →半透明で表示され、選択できません。 #それ以外の時→表示されません。当然選択も出来ません。 VID = 10 end class Scene_Menu < Scene_MenuBase #-------------------------------------------------------------------------- # コマンドウィンドウの作成 #-------------------------------------------------------------------------- alias create_command_window_change_actor_name create_command_window def create_command_window create_command_window_change_actor_name @command_window.set_handler(:change_actor_name,method(:command_personal)) end #-------------------------------------------------------------------------- # ステータスウィンドウの作成 #-------------------------------------------------------------------------- alias create_status_window_change_actor_name create_status_window def create_status_window create_status_window_change_actor_name @status_window.name_change_menu_command_window = @command_window end #-------------------------------------------------------------------------- # 個人コマンド[決定] #-------------------------------------------------------------------------- alias on_personal_ok_change_actor_name on_personal_ok def on_personal_ok on_personal_ok_change_actor_name if @command_window.current_symbol == :change_actor_name SceneManager.call(Scene_Name) SceneManager.scene.prepare( $game_party.members[@status_window.index].id,NameChangeMenuCommand::Max) end end end class Window_Selectable < Window_Base #-------------------------------------------------------------------------- # 選択項目の有効状態を取得 #-------------------------------------------------------------------------- alias current_item_enabled_change_actor_name? current_item_enabled? def current_item_enabled? r = current_item_enabled_change_actor_name? if self.is_a?(Window_MenuStatus) w = @name_change_menu_command_window if w && w.current_symbol == :change_actor_name a = $game_party.members[index] return false if a && a.seal_change_actor_name end end r end end class Window_MenuStatus < Window_Selectable attr_accessor :name_change_menu_command_window end class Window_MenuCommand < Window_Command #-------------------------------------------------------------------------- # 独自コマンドの追加用 #-------------------------------------------------------------------------- alias add_original_commands_change_actor_name add_original_commands def add_original_commands add_original_commands_change_actor_name add_change_actor_name end #-------------------------------------------------------------------------- # 名前変更コマンドを追加 #-------------------------------------------------------------------------- def add_change_actor_name v = $game_variables[NameChangeMenuCommand::VID] return unless (v == 0 or v == 1) add_command(NameChangeMenuCommand::Name,:change_actor_name,v == 0) end end class RPG::BaseItem #-------------------------------------------------------------------------- # 名前変更コマンド禁止特徴 #-------------------------------------------------------------------------- def seal_change_actor_name @seal_change_actor_name ||= /<#{NameChangeMenuCommand::Word}>/ =~ note ? 1 : 0 end end class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # 名前変更コマンド禁止特徴判定 #-------------------------------------------------------------------------- def seal_change_actor_name feature_objects.any? {|f| f.seal_change_actor_name == 1} end end