[Script] [ACE] 5 Scripter đáng dùng nhất trên RPG VX Ace

wu11wu11 Posts: 212Registered
1.Khas
gyIXm45.png
Script tạo bởi Khas thường rất dễ dùng nhưng rất hiệu quả và đẹp mắt.Nổi bật có Khas Awesome Light Effect và Smooth Sliding với khả năng phù hợp cho rất nhiều thể loại game và thích ứng tốt với game.
KALE2.jpg
KALE3.jpg

2.Galv
http://galvs-scripts.com/
shop-upgrade-new2_zps811c5dd1.jpg
Galv có rất nhiều script hay,nhưng script của anh ta tuyệt ở những script mini game.Nó rất tốt,thậm chí có thể dùng thay thế cho battle system của RPG VX ACE một cách không hề lỗi và mượt.
actor-duel_zpsca4ab925.jpg
invader2_zps5261d842.jpg
default1_zps1d2bf878.jpg
3.Atelier
ACE_Menus.gif
Script của Atelier gần như gắn liền với kiểu đồ họa anime và nắm giữ tiêu chí độc - đẹp - lạ và hay.
Với script của Atelier bạn hoàn toàn có thể nhúng game của bạn vào một thế giới mới với nhiều trải nghiệm.Nhiều khả năng hơn,mạnh mẽ và đầy tiềm năng.
ACE_Gameplay.gif
ACE_Visual.gif
ACE_Extra.gif
4.Yanfly
http://yanflychannel.wordpress.com/
ace-07.jpg?w=593
Nếu Script của Khas,Atelier hay Galv thiên về thay đổi đồ họa,thì script của Yanfly thiên về tùy biến cốt lõi của game.Script của Yanfly cực kỳ đáng dùng và gần như rất khố xuất hiện lỗi.
Nổi bật nhất trong những script của Yanfly là script New Game + ,Chức năng giúp người chơi bắt đầu lại game với những thay đổi,như giữ lại thông tin của bạn và tiếp tục chơi với độ khó cao hơn hay cho người chơi vào cốt truyện khác sau khi hoàn thành game.
ngp.jpg

5.Yami
1lw0i
Đây là Scripter "Chuyên Battle System" khi mà script của anh thường là dành cho Battle System và cực kỳ hữu dụng.
guardianmenu.png?w=420
combocombo.png?w=593
«13

Comments

  • numbuh1numbuh1 Posts: 164Registered
    Cá nhân num lại khoái những script cốt lõi game nên thích script của bác Khas nhất :D

    Cơ mà num lại không thích script của Atelier lắm vì quá chú trọng bên ngoài, phần script siêu phức tạp nên num chơi vài game có script này là biết ngay. :-/
  • NagiNagi Posts: 589Registered
    Thiếu Tsukihime rồi. :cuoideu:
    numbuh1 wrote:
    Cơ mà num lại không thích script của Atelier lắm vì quá chú trọng bên ngoài, phần script siêu phức tạp nên num chơi vài game có script này là biết ngay. :-/
    Uhm như Pode Quest 80% toàn là script của Atelier.
  • AnikawaAnikawa Posts: 25Registered
    Không liên quan lắm nhưng có ai còn giữ Script New Game + không, giờ tìm toàn thấy die rồi
  • NagiNagi Posts: 589Registered
    Anikawa wrote:
    Không liên quan lắm nhưng có ai còn giữ Script New Game + không, giờ tìm toàn thấy die rồi
    #==============================================================================
    # 
    # ?\ Yanfly Engine Ace - Ace Save Engine v1.03
    # -- Last Updated: 2012.07.22
    # -- Level: Normal
    # -- Requires: n/a
    # 
    #==============================================================================
    
    $imported = {} if $imported.nil?
    $imported["YEA-SaveEngine"] = true
    
    #==============================================================================
    # ?\ Updates
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # 2012.07.22 - Fixed: Location Drawing.
    # 2012.01.23 - Anti-crash method added for removed maps.
    # 2011.12.26 - Compatibility Update: New Game+
    # 2011.12.26 - Started Script and Finished.
    # 
    #==============================================================================
    # ?\ Introduction
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # This script provides a new save interface for the player. Along with a new
    # interface, the player can also load and delete saves straight from the menu
    # itself. This will in turn make the save command from the Main Menu always
    # available, but the save option within the new save menu will be enabled
    # depending on whether or not it is allowed or disallowed. From the interface,
    # the player is given more information regarding the save file including the
    # the location the player saved at, the amount of gold available, and any
    # variables that you want to show the player as well.
    # 
    #==============================================================================
    # ?\ Instructions
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # To install this script, open up your script editor and copy/paste this script
    # to an open slot below ?\ Materials/ef?T but above ?\ Main. Remember to save.
    # 
    # For first time installers, be warned that loading this script the first time
    # may not display all information in the status window for save files made
    # before the installation of this script. To remedy this, just load up the save
    # and save the file again.
    # 
    #==============================================================================
    # ?\ Compatibility
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
    # it will run with RPG Maker VX without adjusting.
    # 
    #==============================================================================
    
    module YEA
      module SAVE
        
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # - Slot Window Settings -
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # This section adjusts how the slot window appears on the left side of the
        # screen. This also adjusts the maximum number of saves a player can make,
        # the way the slot names appear, and the icons used.
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        MAX_FILES = 24         # Maximum saves a player can make. Default: 16
        SLOT_NAME = "File %s"  # How the file slots will be named.
        
        # These are the icons
        SAVE_ICON  = 368       # Icon used to indicate a save is present.
        EMPTY_ICON = 375       # Icon used to indicate an empty file.
        
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # - Action Window Settings -
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # This section adjusts how the action window appears, the sound effect
        # played when deleting files, and what appears in the help window above.
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        ACTION_LOAD   = "Load"           # Text used for loading games.
        ACTION_SAVE   = "Save"           # Text used for saving games.
        ACTION_DELETE = "Delete"         # Text used for deleting games.
        DELETE_SOUND  = RPG::SE.new("Collapse3", 100, 100) # Sound for deleting.
        
        # These text settings adjust what displays in the help window.
        SELECT_HELP = "Please select a file slot."
        LOAD_HELP   = "Loads the data from the saved game."
        SAVE_HELP   = "Saves the current progress in your game."
        DELETE_HELP = "Deletes all data from this save file."
        
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # - Status Window Settings -
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # This section adjusts how the status window appears in the middle of the
        # screen (that displays the game's data) such as the total playtime, total
        # times saved, total gold, the party's current location, and the variables
        # to be displayed.
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        EMPTY_TEXT = "No Save Data"      # Text used when no save data is present.
        PLAYTIME   = "Playtime"          # Text used for total playtime.
        TOTAL_SAVE = "Total Saves: "     # Text used to indicate total saves.
        TOTAL_GOLD = "Total Gold: "      # Text used to indicate total gold.
        LOCATION   = "Location: "        # Text used to indicate current location.
        
        # These variables will be shown in each of the two columns for those who
        # would want to display more information than just what's shown. Input the
        # variables into the arrays below to designate what data will be shown.
        COLUMN1_VARIABLES = [1, 2, 3]
        COLUMN2_VARIABLES = [4, 5, 6]
        
      end # SAVE
    end # YEA
    
    #==============================================================================
    # ?\ Editting anything past this point may potentially result in causing
    # computer damage, incontinence, explosion of user's head, coma, death, and/or
    # halitosis so edit at your own risk.
    #==============================================================================
    
    #==============================================================================
    # ?! Icon
    #==============================================================================
    
    module Icon
      
      #--------------------------------------------------------------------------
      # self.save_icon
      #--------------------------------------------------------------------------
      def self.save_icon; return YEA::SAVE::SAVE_ICON; end
      
      #--------------------------------------------------------------------------
      # self.empty_icon
      #--------------------------------------------------------------------------
      def self.empty_icon; return YEA::SAVE::EMPTY_ICON; end
        
    end # Icon
    
    #==============================================================================
    # ?! Numeric
    #==============================================================================
    
    class Numeric
      
      #--------------------------------------------------------------------------
      # new method: group_digits
      #--------------------------------------------------------------------------
      unless $imported["YEA-CoreEngine"]
      def group; return self.to_s; end
      end # $imported["YEA-CoreEngine"]
        
    end # Numeric
    
    #==============================================================================
    # ?! DataManager
    #==============================================================================
    
    module DataManager
      
      #--------------------------------------------------------------------------
      # overwrite method: savefile_max
      #--------------------------------------------------------------------------
      def self.savefile_max
        return YEA::SAVE::MAX_FILES
      end
      
      #--------------------------------------------------------------------------
      # overwrite method: self.make_save_header
      #--------------------------------------------------------------------------
      def self.make_save_header
        header = {}
        header[:characters]    = $game_party.characters_for_savefile
        header[:playtime_s]    = $game_system.playtime_s
        header[:system]        = Marshal.load(Marshal.dump($game_system))
        header[:timer]         = Marshal.load(Marshal.dump($game_timer))
        header[:message]       = Marshal.load(Marshal.dump($game_message))
        header[:switches]      = Marshal.load(Marshal.dump($game_switches))
        header[:variables]     = Marshal.load(Marshal.dump($game_variables))
        header[:self_switches] = Marshal.load(Marshal.dump($game_self_switches))
        header[:actors]        = Marshal.load(Marshal.dump($game_actors))
        header[:party]         = Marshal.load(Marshal.dump($game_party))
        header[:troop]         = Marshal.load(Marshal.dump($game_troop))
        header[:map]           = Marshal.load(Marshal.dump($game_map))
        header[:player]        = Marshal.load(Marshal.dump($game_player))
        header
      end
      
    end # DataManager
    
    #==============================================================================
    # ?! Window_MenuCommand
    #==============================================================================
    
    class Window_MenuCommand < Window_Command
      
      #--------------------------------------------------------------------------
      # overwrite method: save_enabled
      #--------------------------------------------------------------------------
      def save_enabled; return true; end
      
    end # Window_MenuCommand
    
    #==============================================================================
    # ?! Window_FileList
    #==============================================================================
    
    class Window_FileList < Window_Selectable
      
      #--------------------------------------------------------------------------
      # initialize
      #--------------------------------------------------------------------------
      def initialize(dx, dy)
        super(dx, dy, 128, Graphics.height - dy)
        refresh
        activate
        select(SceneManager.scene.first_savefile_index)
      end
      
      #--------------------------------------------------------------------------
      # item_max
      #--------------------------------------------------------------------------
      def item_max; return DataManager.savefile_max; end
      
      #--------------------------------------------------------------------------
      # current_item_enabled?
      #--------------------------------------------------------------------------
      def current_item_enabled?
        header = DataManager.load_header(index)
        return false if header.nil? && SceneManager.scene_is?(Scene_Load)
        return true
      end
      
      #--------------------------------------------------------------------------
      # refresh
      #--------------------------------------------------------------------------
      def refresh
        create_contents
        draw_all_items
      end
      
      #--------------------------------------------------------------------------
      # draw_item
      #--------------------------------------------------------------------------
      def draw_item(index)
        header = DataManager.load_header(index)
        enabled = !header.nil?
        rect = item_rect(index)
        rect.width -= 4
        draw_icon(save_icon?(header), rect.x, rect.y, enabled)
        change_color(normal_color, enabled)
        text = sprintf(YEA::SAVE::SLOT_NAME, (index + 1).group)
        draw_text(rect.x+24, rect.y, rect.width-24, line_height, text)
      end
      
      #--------------------------------------------------------------------------
      # save_icon?
      #--------------------------------------------------------------------------
      def save_icon?(header)
        return Icon.empty_icon if header.nil?
        return Icon.save_icon
      end
      
    end # Window_FileList
    
    #==============================================================================
    # ?! Window_FileStatus
    #==============================================================================
    
    class Window_FileStatus < Window_Base
      
      #--------------------------------------------------------------------------
      # initialize
      #--------------------------------------------------------------------------
      def initialize(dx, dy, file_window)
        super(dx, dy, Graphics.width - dx, Graphics.height - dy)
        @file_window = file_window
        @current_index = @file_window.index
        refresh
      end
      
      #--------------------------------------------------------------------------
      # update
      #--------------------------------------------------------------------------
      def update
        super
        return if @file_window.index < 0
        return if @current_index == @file_window.index
        @current_index = @file_window.index
        refresh
      end
      
      #--------------------------------------------------------------------------
      # refresh
      #--------------------------------------------------------------------------
      def refresh
        contents.clear
        reset_font_settings
        @header = DataManager.load_header(@file_window.index)
        if @header.nil?
          draw_empty
        else
          draw_save_contents
        end
      end
      
      #--------------------------------------------------------------------------
      # draw_empty
      #--------------------------------------------------------------------------
      def draw_empty
        colour = Color.new(0, 0, 0, translucent_alpha/2)
        rect = Rect.new(0, 0, contents.width, contents.height)
        contents.fill_rect(rect, colour)
        text = YEA::SAVE::EMPTY_TEXT
        change_color(system_color)
        draw_text(rect, text, 1)
      end
      
      #--------------------------------------------------------------------------
      # draw_save_slot
      #--------------------------------------------------------------------------
      def draw_save_slot(dx, dy, dw)
        reset_font_settings
        change_color(system_color)
        text = sprintf(YEA::SAVE::SLOT_NAME, "")
        draw_text(dx, dy, dw, line_height, text)
        cx = text_size(text).width
        change_color(normal_color)
        draw_text(dx+cx, dy, dw-cx, line_height, (@file_window.index+1).group)
      end
      
      #--------------------------------------------------------------------------
      # draw_save_playtime
      #--------------------------------------------------------------------------
      def draw_save_playtime(dx, dy, dw)
        return if @header[:playtime_s].nil?
        reset_font_settings
        change_color(system_color)
        draw_text(dx, dy, dw, line_height, YEA::SAVE::PLAYTIME, 0)
        change_color(normal_color)
        draw_text(dx, dy, dw, line_height, @header[:playtime_s], 2)
      end
      
      #--------------------------------------------------------------------------
      # draw_save_total_saves
      #--------------------------------------------------------------------------
      def draw_save_total_saves(dx, dy, dw)
        return if @header[:system].nil?
        reset_font_settings
        change_color(system_color)
        text = YEA::SAVE::TOTAL_SAVE
        draw_text(dx, dy, dw, line_height, text)
        cx = text_size(text).width
        change_color(normal_color)
        draw_text(dx+cx, dy, dw-cx, line_height, @header[:system].save_count.group)
      end
      
      #--------------------------------------------------------------------------
      # draw_save_gold
      #--------------------------------------------------------------------------
      def draw_save_gold(dx, dy, dw)
        return if @header[:party].nil?
        reset_font_settings
        change_color(system_color)
        draw_text(dx, dy, dw, line_height, YEA::SAVE::TOTAL_GOLD)
        text = Vocab::currency_unit
        draw_text(dx, dy, dw, line_height, text, 2)
        cx = text_size(text).width
        change_color(normal_color)
        text = @header[:party].gold.group
        draw_text(dx, dy, dw-cx, line_height, text, 2)
      end
      
      #--------------------------------------------------------------------------
      # draw_save_location
      #--------------------------------------------------------------------------
      def draw_save_location(dx, dy, dw)
        return if @header[:map].nil?
        reset_font_settings
        change_color(system_color)
        draw_text(dx, dy, dw, line_height, YEA::SAVE::LOCATION)
        change_color(normal_color)
        cx = text_size(YEA::SAVE::LOCATION).width
        return if $data_mapinfos[@header[:map].map_id].nil?
        text = @header[:map].display_name
        text = $data_mapinfos[@header[:map].map_id].name if text == ""
        draw_text(dx+cx, dy, dw-cx, line_height, text)
      end
      
      #--------------------------------------------------------------------------
      # draw_save_characters
      #--------------------------------------------------------------------------
      def draw_save_characters(dx, dy)
        return if @header[:party].nil?
        reset_font_settings
        make_font_smaller
        dw = (contents.width - dx) / @header[:party].max_battle_members
        dx += dw/2
        for member in @header[:party].battle_members
          next if member.nil?
          member = @header[:actors][member.id]
          change_color(normal_color)
          draw_actor_graphic(member, dx, dy)
          text = member.name
          draw_text(dx-dw/2, dy, dw, line_height, text, 1)
          text = member.level.group
          draw_text(dx-dw/2, dy-line_height, dw-4, line_height, text, 2)
          cx = text_size(text).width
          change_color(system_color)
          text = Vocab::level_a
          draw_text(dx-dw/2, dy-line_height, dw-cx-4, line_height, text, 2)
          dx += dw
        end
      end
      
      #--------------------------------------------------------------------------
      # draw_save_column1
      #--------------------------------------------------------------------------
      def draw_save_column1(dx, dy, dw)
        data = YEA::SAVE::COLUMN1_VARIABLES
        draw_column_data(data, dx, dy, dw)
      end
      
      #--------------------------------------------------------------------------
      # draw_save_column2
      #--------------------------------------------------------------------------
      def draw_save_column2(dx, dy, dw)
        data = YEA::SAVE::COLUMN2_VARIABLES
        draw_column_data(data, dx, dy, dw)
      end
      
      #--------------------------------------------------------------------------
      # draw_column_data
      #--------------------------------------------------------------------------
      def draw_column_data(data, dx, dy, dw)
        return if @header[:variables].nil?
        reset_font_settings
        for variable_id in data
          next if $data_system.variables[variable_id].nil?
          change_color(system_color)
          name = $data_system.variables[variable_id]
          draw_text(dx, dy, dw, line_height, name, 0)
          value = @header[:variables][variable_id].group
          change_color(normal_color)
          draw_text(dx, dy, dw, line_height, value, 2)
          dy += line_height
        end
      end
      
      #--------------------------------------------------------------------------
      # draw_save_contents
      #--------------------------------------------------------------------------
      def draw_save_contents
        draw_save_slot(4, 0, contents.width/2-8)
        draw_save_playtime(contents.width/2+4, 0, contents.width/2-8)
        draw_save_total_saves(4, line_height, contents.width/2-8)
        draw_save_gold(contents.width/2+4, line_height, contents.width/2-8)
        draw_save_location(4, line_height*2, contents.width-8)
        draw_save_characters(0, line_height*5 + line_height/3)
        draw_save_column1(16, line_height*7, contents.width/2-48)
        draw_save_column2(contents.width/2+16, line_height*7, contents.width/2-48)
      end
      
    end # Window_FileStatus
    
    #==============================================================================
    # ?! Window_FileAction
    #==============================================================================
    
    class Window_FileAction < Window_HorzCommand
      
      #--------------------------------------------------------------------------
      # initialize
      #--------------------------------------------------------------------------
      def initialize(dx, dy, file_window)
        @file_window = file_window
        super(dx, dy)
        deactivate
        unselect
      end
      
      #--------------------------------------------------------------------------
      # window_width
      #--------------------------------------------------------------------------
      def window_width; Graphics.width - 128; end
      
      #--------------------------------------------------------------------------
      # col_max
      #--------------------------------------------------------------------------
      def col_max; return 3; end
      
      #--------------------------------------------------------------------------
      # update
      #--------------------------------------------------------------------------
      def update
        super
        return if @file_window.index < 0
        return if @current_index == @file_window.index
        @current_index = @file_window.index
        refresh
      end
      
      #--------------------------------------------------------------------------
      # make_command_list
      #--------------------------------------------------------------------------
      def make_command_list
        @header = DataManager.load_header(@file_window.index)
        add_load_command
        add_save_command
        add_delete_command
      end
      
      #--------------------------------------------------------------------------
      # add_load_command
      #--------------------------------------------------------------------------
      def add_load_command
        add_command(YEA::SAVE::ACTION_LOAD, :load, load_enabled?)
      end
      
      #--------------------------------------------------------------------------
      # load_enabled?
      #--------------------------------------------------------------------------
      def load_enabled?
        return false if @header.nil?
        return true
      end
      
      #--------------------------------------------------------------------------
      # add_save_command
      #--------------------------------------------------------------------------
      def add_save_command
        add_command(YEA::SAVE::ACTION_SAVE, :save, save_enabled?)
      end
      
      #--------------------------------------------------------------------------
      # save_enabled?
      #--------------------------------------------------------------------------
      def save_enabled?
        return false if @header.nil? && SceneManager.scene_is?(Scene_Load)
        return false if SceneManager.scene_is?(Scene_Load)
        return false if $game_system.save_disabled
        return true
      end
      
      #--------------------------------------------------------------------------
      # add_delete_command
      #--------------------------------------------------------------------------
      def add_delete_command
        add_command(YEA::SAVE::ACTION_DELETE, :delete, delete_enabled?)
      end
      
      #--------------------------------------------------------------------------
      # delete_enabled?
      #--------------------------------------------------------------------------
      def delete_enabled?
        return false if @header.nil?
        return true
      end
      
      #--------------------------------------------------------------------------
      # update_help
      #--------------------------------------------------------------------------
      def update_help
        case current_symbol
        when :load; @help_window.set_text(YEA::SAVE::LOAD_HELP)
        when :save; @help_window.set_text(YEA::SAVE::SAVE_HELP)
        when :delete; @help_window.set_text(YEA::SAVE::DELETE_HELP)
        end
      end
      
    end # Window_FileAction
    
    #==============================================================================
    # ?! Scene_File
    #==============================================================================
    
    class Scene_File < Scene_MenuBase
      
      #--------------------------------------------------------------------------
      # overwrite method: start
      #--------------------------------------------------------------------------
      def start
        super
        create_all_windows
      end
      
      #--------------------------------------------------------------------------
      # overwrite method: terminate
      #--------------------------------------------------------------------------
      def terminate
        super
      end
      
      #--------------------------------------------------------------------------
      # overwrite method: update
      #--------------------------------------------------------------------------
      def update
        super
      end
      
      #--------------------------------------------------------------------------
      # new method: create_all_windows
      #--------------------------------------------------------------------------
      def create_all_windows
        create_help_window
        create_file_window
        create_action_window
        create_status_window
      end
      
      #--------------------------------------------------------------------------
      # overwrite method: create_help_window
      #--------------------------------------------------------------------------
      def create_help_window
        @help_window = Window_Help.new
        @help_window.set_text(YEA::SAVE::SELECT_HELP)
      end
      
      #--------------------------------------------------------------------------
      # new method: create_file_window
      #--------------------------------------------------------------------------
      def create_file_window
        wy = @help_window.height
        @file_window = Window_FileList.new(0, wy)
        @file_window.set_handler(:ok, method(:on_file_ok))
        @file_window.set_handler(:cancel, method(:return_scene))
      end
      
      #--------------------------------------------------------------------------
      # new method: create_action_window
      #--------------------------------------------------------------------------
      def create_action_window
        wx = @file_window.width
        wy = @help_window.height
        @action_window = Window_FileAction.new(wx, wy, @file_window)
        @action_window.help_window = @help_window
        @action_window.set_handler(:cancel, method(:on_action_cancel))
        @action_window.set_handler(:load, method(:on_action_load))
        @action_window.set_handler(:save, method(:on_action_save))
        @action_window.set_handler(:delete, method(:on_action_delete))
      end
      
      #--------------------------------------------------------------------------
      # new method: create_status_window
      #--------------------------------------------------------------------------
      def create_status_window
        wx = @action_window.x
        wy = @action_window.y + @action_window.height
        @status_window = Window_FileStatus.new(wx, wy, @file_window)
      end
      
      #--------------------------------------------------------------------------
      # new method: on_file_ok
      #--------------------------------------------------------------------------
      def on_file_ok
        @action_window.activate
        index = SceneManager.scene_is?(Scene_Load) ? 0 : 1
        @action_window.select(index)
      end
      
      #--------------------------------------------------------------------------
      # new method: on_action_cancel
      #--------------------------------------------------------------------------
      def on_action_cancel
        @action_window.unselect
        @file_window.activate
        @help_window.set_text(YEA::SAVE::SELECT_HELP)
      end
      
      #--------------------------------------------------------------------------
      # new method: on_action_load
      #--------------------------------------------------------------------------
      def on_action_load
        if DataManager.load_game(@file_window.index)
          on_load_success
        else
          Sound.play_buzzer
        end
      end
      
      #--------------------------------------------------------------------------
      # overwrite method: on_load_success
      #--------------------------------------------------------------------------
      def on_load_success
        Sound.play_load
        fadeout_all
        $game_system.on_after_load
        SceneManager.goto(Scene_Map)
      end
      
      #--------------------------------------------------------------------------
      # new method: on_action_save
      #--------------------------------------------------------------------------
      def on_action_save
        @action_window.activate
        if DataManager.save_game(@file_window.index)
          on_save_success
          refresh_windows
        else
          Sound.play_buzzer
        end
      end
      
      #--------------------------------------------------------------------------
      # overwrite method: on_save_success
      #--------------------------------------------------------------------------
      def on_save_success; Sound.play_save; end
      
      #--------------------------------------------------------------------------
      # new method: on_action_delete
      #--------------------------------------------------------------------------
      def on_action_delete
        @action_window.activate
        DataManager.delete_save_file(@file_window.index)
        on_delete_success
        refresh_windows
      end
      
      #--------------------------------------------------------------------------
      # new method: on_delete_success
      #--------------------------------------------------------------------------
      def on_delete_success
        YEA::SAVE::DELETE_SOUND.play
      end
      
      #--------------------------------------------------------------------------
      # new method: refresh_windows
      #--------------------------------------------------------------------------
      def refresh_windows
        @file_window.refresh
        @action_window.refresh
        @status_window.refresh
      end
      
    end # Scene_File
    
    #==============================================================================
    # ?! Scene_Save
    #==============================================================================
    
    class Scene_Save < Scene_File
      
      #--------------------------------------------------------------------------
      # overwrite method: on_savefile_ok
      #--------------------------------------------------------------------------
      def on_savefile_ok; super; end
      
      #--------------------------------------------------------------------------
      # overwrite method: on_save_success
      #--------------------------------------------------------------------------
      def on_save_success; super; end
      
    end # help_window_text
    
    #==============================================================================
    # ?! Scene_Load
    #==============================================================================
    
    class Scene_Load < Scene_File
      
      #--------------------------------------------------------------------------
      # overwrite method: on_savefile_ok
      #--------------------------------------------------------------------------
      def on_savefile_ok; super; end
      
      #--------------------------------------------------------------------------
      # overwrite method: on_load_success
      #--------------------------------------------------------------------------
      def on_load_success; super; end
      
    end # Scene_Load
    
    #==============================================================================
    # 
    # ?\ End of File
    # 
    #==============================================================================
    

    #==============================================================================
    # 
    # ▼ Yanfly Engine Ace - Save Engine Add-On: New Game+ v1.00
    # -- Last Updated: 2011.12.26
    # -- Level: Normal
    # -- Requires: YEA - Ace Save Engine v1.01+
    # 
    #==============================================================================
    
    $imported = {} if $imported.nil?
    $imported["YEA-NewGame+"] = true
    
    #==============================================================================
    # ▼ Updates
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # 2011.12.26 - Started Script and Finished.
    # 
    #==============================================================================
    # ▼ Introduction
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # New Game+ is a great way to provide replay value for your game. It lets the
    # player re-experience the game in a different way with either carried over
    # items, to carried over party members, to carried over skills, switches, and
    # variables even. There exists many options to change how New Game+ will work
    # for your game.
    # 
    #==============================================================================
    # ▼ Instructions
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # To install this script, open up your script editor and copy/paste this script
    # to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save.
    # 
    # -----------------------------------------------------------------------------
    # Item Notetags - These notetags go in the items notebox in the database.
    # -----------------------------------------------------------------------------
    # <no carry over>
    # This will cause this specific item to not carry over in New Game+ if the item
    # can be carried over. This does not affect any items that actors may have
    # equipped.
    # 
    # -----------------------------------------------------------------------------
    # Weapon Notetags - These notetags go in the weapons notebox in the database.
    # -----------------------------------------------------------------------------
    # <no carry over>
    # This will cause this specific item to not carry over in New Game+ if the item
    # can be carried over. This does not affect any items that actors may have
    # equipped.
    # 
    # -----------------------------------------------------------------------------
    # Armour Notetags - These notetags go in the armours notebox in the database.
    # -----------------------------------------------------------------------------
    # <no carry over>
    # This will cause this specific item to not carry over in New Game+ if the item
    # can be carried over. This does not affect any items that actors may have
    # equipped.
    # 
    #==============================================================================
    # ▼ Compatibility
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
    # it will run with RPG Maker VX without adjusting.
    # 
    # This script requires Yanfly Engine Ace - Ace Save Engine v1.01+ and the
    # script must be placed under Ace Save Engine in the script listing.
    # 
    #==============================================================================
    
    module YEA
      module NEW_GAME_PLUS
        
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # - General Settings -
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # Description
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        NGP_SWITCH = 100           # If Switch ON, the game file has NG+ flag.
        NGP_TEXT   = "New Game+"   # Text used to show New Game+.
        
        # This is the help window text used for New Game+ when the New Game+
        # option is highlighted.
        NGP_HELP   = "Start a new game using this file's settings."
        
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # - Carry Over Settings -
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # These settings adjust what carries over and what doesn't. These settings
        # are very specific so adjust them carefully.
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # This array contains all of the switches that you want carried over to
        # be maintained. Any switches that aren't here will be set false.
        CARRY_OVER_SWITCHES = [1, 2, 3]
        
        # This array contains all of the variables that you want carried over to
        # be maintained. Any variables that aren't here will be set to 0.
        CARRY_OVER_VARIABLES = [1..6]
        
        # If this is set to false, then actors will be completely reset back to
        # their original starting states. If it's set to true, then actors will
        # be kept exactly as they are.
        CARRY_OVER_ACTORS = true
        
        # These settings are only used if actors will be carried over. With this,
        # you can limit what specifics will be carried over for actors from levels
        # to equips to skills.
        CARRY_OVER_LEVELS = true
        CARRY_OVER_EQUIPS = true
        CARRY_OVER_SKILLS = true
        
        # If this is set to false, then the party members will revert back to the
        # original starting party members. If it's true, then the party setup will
        # remain exactly the same.
        CARRY_OVER_PARTY_MEMBERS = true
        
        # If any of these are set to false, then no items, weapons, or armours will
        # be carried over. If it's set to true, then the respective items will be
        # carried over to the newer game.
        CARRY_OVER_GOLD    = true
        CARRY_OVER_ITEMS   = true
        CARRY_OVER_WEAPONS = true
        CARRY_OVER_ARMOURS = true
        
      end # NEW_GAME_PLUS
    end # YEA
    
    #==============================================================================
    # ▼ Editting anything past this point may potentially result in causing
    # computer damage, incontinence, explosion of user's head, coma, death, and/or
    # halitosis so edit at your own risk.
    #==============================================================================
    
    if $imported["YEA-SaveEngine"]
    
    module YEA
      module NEW_GAME_PLUS
        module_function
        #--------------------------------------------------------------------------
        # convert_integer_array
        #--------------------------------------------------------------------------
        def convert_integer_array(array)
          result = []
          array.each { |i|
            case i
            when Range; result |= i.to_a
            when Integer; result |= [i]
            end }
          return result
        end
        #--------------------------------------------------------------------------
        # converted_contants
        #--------------------------------------------------------------------------
        CARRY_OVER_SWITCHES = convert_integer_array(CARRY_OVER_SWITCHES)
        CARRY_OVER_VARIABLES = convert_integer_array(CARRY_OVER_VARIABLES)
      end # NEW_GAME_PLUS
      module REGEXP
      module BASEITEM
        
        NO_CARRY_OVER = /<(?:NO_CARRY_OVER|no carry over)>/i
        
      end # BASEITEM
      end # REGEXP
    end # YEA
    
    #==============================================================================
    # ■ DataManager
    #==============================================================================
    
    module DataManager
      
      #--------------------------------------------------------------------------
      # alias method: load_database
      #--------------------------------------------------------------------------
      class <<self; alias load_database_ngp load_database; end
      def self.load_database
        load_database_ngp
        load_notetags_ngp
      end
      
      #--------------------------------------------------------------------------
      # new method: load_notetags_ngp
      #--------------------------------------------------------------------------
      def self.load_notetags_ngp
        groups = [$data_items, $data_weapons, $data_armors]
        for group in groups
          for obj in group
            next if obj.nil?
            obj.load_notetags_ngp
          end
        end
      end
      
    end # DataManager
    
    #==============================================================================
    # ■ RPG::BaseItem
    #==============================================================================
    
    class RPG::BaseItem
      
      #--------------------------------------------------------------------------
      # public instance variables
      #--------------------------------------------------------------------------
      attr_accessor :no_carry_over
      
      #--------------------------------------------------------------------------
      # common cache: load_notetags_ngp
      #--------------------------------------------------------------------------
      def load_notetags_ngp
        @no_carry_over = false
        #---
        self.note.split(/[\r\n]+/).each { |line|
          case line
          #---
          when YEA::REGEXP::BASEITEM::NO_CARRY_OVER
            @no_carry_over = true
          end
        } # self.note.split
        #---
      end
      
    end # RPG::BaseItem
    
    #==============================================================================
    # ■ Switch
    #==============================================================================
    
    module Switch
      
      #--------------------------------------------------------------------------
      # self.new_game_plus
      #--------------------------------------------------------------------------
      def self.new_game_plus
        return $game_switches[YEA::NEW_GAME_PLUS::NGP_SWITCH]
      end
      
    end # Switch
    
    #==============================================================================
    # ■ DataManager
    #==============================================================================
    
    module DataManager
      
      #--------------------------------------------------------------------------
      # new method: setup_new_game_plus
      #--------------------------------------------------------------------------
      def self.setup_new_game_plus(index)
        create_new_game_plus_objects(index)
        $game_map.setup($data_system.start_map_id)
        $game_player.moveto($data_system.start_x, $data_system.start_y)
        $game_player.refresh
        Graphics.frame_count = 0
      end
      
      #--------------------------------------------------------------------------
      # new method: create_new_game_plus_objects
      #--------------------------------------------------------------------------
      def self.create_new_game_plus_objects(index)
        load_game_without_rescue(index)
        ngp_reset_switches
        ngp_reset_variables
        ngp_reset_self_switches
        ngp_reset_actors
        ngp_reset_party
      end
      
      #--------------------------------------------------------------------------
      # new method: ngp_reset_switches
      #--------------------------------------------------------------------------
      def self.ngp_reset_switches
        for i in 0...$data_system.switches.size
          next if i <= 0
          next if YEA::NEW_GAME_PLUS::CARRY_OVER_SWITCHES.include?(i)
          $game_switches[i] = false
        end
      end
      
      #--------------------------------------------------------------------------
      # new method: ngp_reset_variables
      #--------------------------------------------------------------------------
      def self.ngp_reset_variables
        for i in 0...$data_system.variables.size
          next if i <= 0
          next if YEA::NEW_GAME_PLUS::CARRY_OVER_VARIABLES.include?(i)
          $game_variables[i] = 0
        end
      end
      
      #--------------------------------------------------------------------------
      # new method: ngp_reset_self_switches
      #--------------------------------------------------------------------------
      def self.ngp_reset_self_switches
        $game_self_switches = Game_SelfSwitches.new
      end
      
      #--------------------------------------------------------------------------
      # new method: ngp_reset_actors
      #--------------------------------------------------------------------------
      def self.ngp_reset_actors
        unless YEA::NEW_GAME_PLUS::CARRY_OVER_ACTORS
          $game_actors = Game_Actors.new
        else
          #---
          unless YEA::NEW_GAME_PLUS::CARRY_OVER_LEVELS
            for i in 0...$data_actors.size
              actor = $game_actors[i]
              next if actor.nil?
              actor.new_game_plus_levels
            end
          end
          #---
          unless YEA::NEW_GAME_PLUS::CARRY_OVER_EQUIPS
            for i in 0...$data_actors.size
              actor = $game_actors[i]
              next if actor.nil?
              actor.new_game_plus_equips
            end
          end
          #---
          unless YEA::NEW_GAME_PLUS::CARRY_OVER_SKILLS
            for i in 0...$data_actors.size
              actor = $game_actors[i]
              next if actor.nil?
              actor.new_game_plus_skills
            end
          end
          #---
        end
      end
      
      #--------------------------------------------------------------------------
      # new method: ngp_reset_party
      #--------------------------------------------------------------------------
      def self.ngp_reset_party
        gold = 0
        items = {}
        members = []
        #---
        if YEA::NEW_GAME_PLUS::CARRY_OVER_PARTY_MEMBERS
          for member in $game_party.members
            members.push(member.id)
          end
        end
        #---
        gold = $game_party.gold if YEA::NEW_GAME_PLUS::CARRY_OVER_GOLD
        #---
        if YEA::NEW_GAME_PLUS::CARRY_OVER_ITEMS
          for item in $data_items
            next if item.nil?
            next if item.no_carry_over
            items[item] = $game_party.item_number(item)
          end
        end
        #---
        if YEA::NEW_GAME_PLUS::CARRY_OVER_WEAPONS
          for item in $data_weapons
            next if item.nil?
            next if item.no_carry_over
            items[item] = $game_party.item_number(item)
          end
        end
        #---
        if YEA::NEW_GAME_PLUS::CARRY_OVER_ARMOURS
          for item in $data_armors
            next if item.nil?
            next if item.no_carry_over
            items[item] = $game_party.item_number(item)
          end
        end
        #---
        $game_party = Game_Party.new
        unless YEA::NEW_GAME_PLUS::CARRY_OVER_PARTY_MEMBERS
          $game_party.setup_starting_members
        end
        #---
        for member_id in members
          $game_party.add_actor(member_id)
        end
        $game_party.gain_gold(gold)
        for key in items
          item = key[0]
          next if item.nil?
          $game_party.gain_item(item, key[1])
        end
      end
      
    end # DataManager
    
    #==============================================================================
    # ■ Game_Actor
    #==============================================================================
    
    class Game_Actor < Game_Battler
      
      #--------------------------------------------------------------------------
      # new method: new_game_plus_levels
      #--------------------------------------------------------------------------
      def new_game_plus_levels
        @class_id = actor.class_id
        @level = actor.initial_level
        @exp = {}
        if $imported["YEA-ClassSystem"]
          init_unlocked_classes
          init_subclass
        end
        clear_param_plus
        init_exp
        refresh
      end
      
      #--------------------------------------------------------------------------
      # new method: new_game_plus_equips
      #--------------------------------------------------------------------------
      def new_game_plus_equips
        init_equips(actor.equips)
      end
      
      #--------------------------------------------------------------------------
      # new method: new_game_plus_skills
      #--------------------------------------------------------------------------
      def new_game_plus_skills
        init_skills
      end
      
    end # Game_Actor
    
    #==============================================================================
    # ■ Window_FileAction
    #==============================================================================
    
    class Window_FileAction < Window_HorzCommand
      
      #--------------------------------------------------------------------------
      # alias method: add_load_command
      #--------------------------------------------------------------------------
      alias add_load_command_ngp add_load_command
      def add_load_command
        if new_game_plus?
          add_command(YEA::NEW_GAME_PLUS::NGP_TEXT, :new_game_plus)
        else
          add_load_command_ngp
        end
      end
      
      #--------------------------------------------------------------------------
      # new method: new_game_plus?
      #--------------------------------------------------------------------------
      def new_game_plus?
        return false if @header.nil?
        return false if @header[:switches].nil?
        return @header[:switches][YEA::NEW_GAME_PLUS::NGP_SWITCH]
      end
      
      #--------------------------------------------------------------------------
      # alias method: update_help
      #--------------------------------------------------------------------------
      alias update_help_ngp update_help
      def update_help
        case current_symbol
        when :new_game_plus; @help_window.set_text(YEA::NEW_GAME_PLUS::NGP_HELP)
        else; update_help_ngp
        end
      end
      
    end # Window_FileAction
    
    #==============================================================================
    # ■ Scene_File
    #==============================================================================
    
    class Scene_File < Scene_MenuBase
      
      #--------------------------------------------------------------------------
      # alias method: create_action_window
      #--------------------------------------------------------------------------
      alias create_action_window_ngp create_action_window
      def create_action_window
        create_action_window_ngp
        @action_window.set_handler(:new_game_plus, method(:on_action_ngp))
      end
      
      #--------------------------------------------------------------------------
      # new method: on_action_ngp
      #--------------------------------------------------------------------------
      def on_action_ngp
        Sound.play_load
        DataManager.setup_new_game_plus(@file_window.index)
        fadeout_all
        $game_system.on_after_load
        SceneManager.goto(Scene_Map)
      end
      
    end # Scene_File
    
    end # $imported["YEA-SaveEngine"]
    
    #==============================================================================
    # 
    # ▼ End of File
    # 
    #==============================================================================
    
  • AnikawaAnikawa Posts: 25Registered
    Nagi wrote:
    Anikawa wrote:
    Không liên quan lắm nhưng có ai còn giữ Script New Game + không, giờ tìm toàn thấy die rồi
    #==============================================================================
    # 
    # ?\ Yanfly Engine Ace - Ace Save Engine v1.03
    # -- Last Updated: 2012.07.22
    # -- Level: Normal
    # -- Requires: n/a
    # 
    #==============================================================================
    
    $imported = {} if $imported.nil?
    $imported["YEA-SaveEngine"] = true
    
    #==============================================================================
    # ?\ Updates
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # 2012.07.22 - Fixed: Location Drawing.
    # 2012.01.23 - Anti-crash method added for removed maps.
    # 2011.12.26 - Compatibility Update: New Game+
    # 2011.12.26 - Started Script and Finished.
    # 
    #==============================================================================
    # ?\ Introduction
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # This script provides a new save interface for the player. Along with a new
    # interface, the player can also load and delete saves straight from the menu
    # itself. This will in turn make the save command from the Main Menu always
    # available, but the save option within the new save menu will be enabled
    # depending on whether or not it is allowed or disallowed. From the interface,
    # the player is given more information regarding the save file including the
    # the location the player saved at, the amount of gold available, and any
    # variables that you want to show the player as well.
    # 
    #==============================================================================
    # ?\ Instructions
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # To install this script, open up your script editor and copy/paste this script
    # to an open slot below ?\ Materials/ef?T but above ?\ Main. Remember to save.
    # 
    # For first time installers, be warned that loading this script the first time
    # may not display all information in the status window for save files made
    # before the installation of this script. To remedy this, just load up the save
    # and save the file again.
    # 
    #==============================================================================
    # ?\ Compatibility
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
    # it will run with RPG Maker VX without adjusting.
    # 
    #==============================================================================
    
    module YEA
      module SAVE
        
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # - Slot Window Settings -
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # This section adjusts how the slot window appears on the left side of the
        # screen. This also adjusts the maximum number of saves a player can make,
        # the way the slot names appear, and the icons used.
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        MAX_FILES = 24         # Maximum saves a player can make. Default: 16
        SLOT_NAME = "File %s"  # How the file slots will be named.
        
        # These are the icons
        SAVE_ICON  = 368       # Icon used to indicate a save is present.
        EMPTY_ICON = 375       # Icon used to indicate an empty file.
        
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # - Action Window Settings -
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # This section adjusts how the action window appears, the sound effect
        # played when deleting files, and what appears in the help window above.
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        ACTION_LOAD   = "Load"           # Text used for loading games.
        ACTION_SAVE   = "Save"           # Text used for saving games.
        ACTION_DELETE = "Delete"         # Text used for deleting games.
        DELETE_SOUND  = RPG::SE.new("Collapse3", 100, 100) # Sound for deleting.
        
        # These text settings adjust what displays in the help window.
        SELECT_HELP = "Please select a file slot."
        LOAD_HELP   = "Loads the data from the saved game."
        SAVE_HELP   = "Saves the current progress in your game."
        DELETE_HELP = "Deletes all data from this save file."
        
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # - Status Window Settings -
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # This section adjusts how the status window appears in the middle of the
        # screen (that displays the game's data) such as the total playtime, total
        # times saved, total gold, the party's current location, and the variables
        # to be displayed.
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        EMPTY_TEXT = "No Save Data"      # Text used when no save data is present.
        PLAYTIME   = "Playtime"          # Text used for total playtime.
        TOTAL_SAVE = "Total Saves: "     # Text used to indicate total saves.
        TOTAL_GOLD = "Total Gold: "      # Text used to indicate total gold.
        LOCATION   = "Location: "        # Text used to indicate current location.
        
        # These variables will be shown in each of the two columns for those who
        # would want to display more information than just what's shown. Input the
        # variables into the arrays below to designate what data will be shown.
        COLUMN1_VARIABLES = [1, 2, 3]
        COLUMN2_VARIABLES = [4, 5, 6]
        
      end # SAVE
    end # YEA
    
    #==============================================================================
    # ?\ Editting anything past this point may potentially result in causing
    # computer damage, incontinence, explosion of user's head, coma, death, and/or
    # halitosis so edit at your own risk.
    #==============================================================================
    
    #==============================================================================
    # ?! Icon
    #==============================================================================
    
    module Icon
      
      #--------------------------------------------------------------------------
      # self.save_icon
      #--------------------------------------------------------------------------
      def self.save_icon; return YEA::SAVE::SAVE_ICON; end
      
      #--------------------------------------------------------------------------
      # self.empty_icon
      #--------------------------------------------------------------------------
      def self.empty_icon; return YEA::SAVE::EMPTY_ICON; end
        
    end # Icon
    
    #==============================================================================
    # ?! Numeric
    #==============================================================================
    
    class Numeric
      
      #--------------------------------------------------------------------------
      # new method: group_digits
      #--------------------------------------------------------------------------
      unless $imported["YEA-CoreEngine"]
      def group; return self.to_s; end
      end # $imported["YEA-CoreEngine"]
        
    end # Numeric
    
    #==============================================================================
    # ?! DataManager
    #==============================================================================
    
    module DataManager
      
      #--------------------------------------------------------------------------
      # overwrite method: savefile_max
      #--------------------------------------------------------------------------
      def self.savefile_max
        return YEA::SAVE::MAX_FILES
      end
      
      #--------------------------------------------------------------------------
      # overwrite method: self.make_save_header
      #--------------------------------------------------------------------------
      def self.make_save_header
        header = {}
        header[:characters]    = $game_party.characters_for_savefile
        header[:playtime_s]    = $game_system.playtime_s
        header[:system]        = Marshal.load(Marshal.dump($game_system))
        header[:timer]         = Marshal.load(Marshal.dump($game_timer))
        header[:message]       = Marshal.load(Marshal.dump($game_message))
        header[:switches]      = Marshal.load(Marshal.dump($game_switches))
        header[:variables]     = Marshal.load(Marshal.dump($game_variables))
        header[:self_switches] = Marshal.load(Marshal.dump($game_self_switches))
        header[:actors]        = Marshal.load(Marshal.dump($game_actors))
        header[:party]         = Marshal.load(Marshal.dump($game_party))
        header[:troop]         = Marshal.load(Marshal.dump($game_troop))
        header[:map]           = Marshal.load(Marshal.dump($game_map))
        header[:player]        = Marshal.load(Marshal.dump($game_player))
        header
      end
      
    end # DataManager
    
    #==============================================================================
    # ?! Window_MenuCommand
    #==============================================================================
    
    class Window_MenuCommand < Window_Command
      
      #--------------------------------------------------------------------------
      # overwrite method: save_enabled
      #--------------------------------------------------------------------------
      def save_enabled; return true; end
      
    end # Window_MenuCommand
    
    #==============================================================================
    # ?! Window_FileList
    #==============================================================================
    
    class Window_FileList < Window_Selectable
      
      #--------------------------------------------------------------------------
      # initialize
      #--------------------------------------------------------------------------
      def initialize(dx, dy)
        super(dx, dy, 128, Graphics.height - dy)
        refresh
        activate
        select(SceneManager.scene.first_savefile_index)
      end
      
      #--------------------------------------------------------------------------
      # item_max
      #--------------------------------------------------------------------------
      def item_max; return DataManager.savefile_max; end
      
      #--------------------------------------------------------------------------
      # current_item_enabled?
      #--------------------------------------------------------------------------
      def current_item_enabled?
        header = DataManager.load_header(index)
        return false if header.nil? && SceneManager.scene_is?(Scene_Load)
        return true
      end
      
      #--------------------------------------------------------------------------
      # refresh
      #--------------------------------------------------------------------------
      def refresh
        create_contents
        draw_all_items
      end
      
      #--------------------------------------------------------------------------
      # draw_item
      #--------------------------------------------------------------------------
      def draw_item(index)
        header = DataManager.load_header(index)
        enabled = !header.nil?
        rect = item_rect(index)
        rect.width -= 4
        draw_icon(save_icon?(header), rect.x, rect.y, enabled)
        change_color(normal_color, enabled)
        text = sprintf(YEA::SAVE::SLOT_NAME, (index + 1).group)
        draw_text(rect.x+24, rect.y, rect.width-24, line_height, text)
      end
      
      #--------------------------------------------------------------------------
      # save_icon?
      #--------------------------------------------------------------------------
      def save_icon?(header)
        return Icon.empty_icon if header.nil?
        return Icon.save_icon
      end
      
    end # Window_FileList
    
    #==============================================================================
    # ?! Window_FileStatus
    #==============================================================================
    
    class Window_FileStatus < Window_Base
      
      #--------------------------------------------------------------------------
      # initialize
      #--------------------------------------------------------------------------
      def initialize(dx, dy, file_window)
        super(dx, dy, Graphics.width - dx, Graphics.height - dy)
        @file_window = file_window
        @current_index = @file_window.index
        refresh
      end
      
      #--------------------------------------------------------------------------
      # update
      #--------------------------------------------------------------------------
      def update
        super
        return if @file_window.index < 0
        return if @current_index == @file_window.index
        @current_index = @file_window.index
        refresh
      end
      
      #--------------------------------------------------------------------------
      # refresh
      #--------------------------------------------------------------------------
      def refresh
        contents.clear
        reset_font_settings
        @header = DataManager.load_header(@file_window.index)
        if @header.nil?
          draw_empty
        else
          draw_save_contents
        end
      end
      
      #--------------------------------------------------------------------------
      # draw_empty
      #--------------------------------------------------------------------------
      def draw_empty
        colour = Color.new(0, 0, 0, translucent_alpha/2)
        rect = Rect.new(0, 0, contents.width, contents.height)
        contents.fill_rect(rect, colour)
        text = YEA::SAVE::EMPTY_TEXT
        change_color(system_color)
        draw_text(rect, text, 1)
      end
      
      #--------------------------------------------------------------------------
      # draw_save_slot
      #--------------------------------------------------------------------------
      def draw_save_slot(dx, dy, dw)
        reset_font_settings
        change_color(system_color)
        text = sprintf(YEA::SAVE::SLOT_NAME, "")
        draw_text(dx, dy, dw, line_height, text)
        cx = text_size(text).width
        change_color(normal_color)
        draw_text(dx+cx, dy, dw-cx, line_height, (@file_window.index+1).group)
      end
      
      #--------------------------------------------------------------------------
      # draw_save_playtime
      #--------------------------------------------------------------------------
      def draw_save_playtime(dx, dy, dw)
        return if @header[:playtime_s].nil?
        reset_font_settings
        change_color(system_color)
        draw_text(dx, dy, dw, line_height, YEA::SAVE::PLAYTIME, 0)
        change_color(normal_color)
        draw_text(dx, dy, dw, line_height, @header[:playtime_s], 2)
      end
      
      #--------------------------------------------------------------------------
      # draw_save_total_saves
      #--------------------------------------------------------------------------
      def draw_save_total_saves(dx, dy, dw)
        return if @header[:system].nil?
        reset_font_settings
        change_color(system_color)
        text = YEA::SAVE::TOTAL_SAVE
        draw_text(dx, dy, dw, line_height, text)
        cx = text_size(text).width
        change_color(normal_color)
        draw_text(dx+cx, dy, dw-cx, line_height, @header[:system].save_count.group)
      end
      
      #--------------------------------------------------------------------------
      # draw_save_gold
      #--------------------------------------------------------------------------
      def draw_save_gold(dx, dy, dw)
        return if @header[:party].nil?
        reset_font_settings
        change_color(system_color)
        draw_text(dx, dy, dw, line_height, YEA::SAVE::TOTAL_GOLD)
        text = Vocab::currency_unit
        draw_text(dx, dy, dw, line_height, text, 2)
        cx = text_size(text).width
        change_color(normal_color)
        text = @header[:party].gold.group
        draw_text(dx, dy, dw-cx, line_height, text, 2)
      end
      
      #--------------------------------------------------------------------------
      # draw_save_location
      #--------------------------------------------------------------------------
      def draw_save_location(dx, dy, dw)
        return if @header[:map].nil?
        reset_font_settings
        change_color(system_color)
        draw_text(dx, dy, dw, line_height, YEA::SAVE::LOCATION)
        change_color(normal_color)
        cx = text_size(YEA::SAVE::LOCATION).width
        return if $data_mapinfos[@header[:map].map_id].nil?
        text = @header[:map].display_name
        text = $data_mapinfos[@header[:map].map_id].name if text == ""
        draw_text(dx+cx, dy, dw-cx, line_height, text)
      end
      
      #--------------------------------------------------------------------------
      # draw_save_characters
      #--------------------------------------------------------------------------
      def draw_save_characters(dx, dy)
        return if @header[:party].nil?
        reset_font_settings
        make_font_smaller
        dw = (contents.width - dx) / @header[:party].max_battle_members
        dx += dw/2
        for member in @header[:party].battle_members
          next if member.nil?
          member = @header[:actors][member.id]
          change_color(normal_color)
          draw_actor_graphic(member, dx, dy)
          text = member.name
          draw_text(dx-dw/2, dy, dw, line_height, text, 1)
          text = member.level.group
          draw_text(dx-dw/2, dy-line_height, dw-4, line_height, text, 2)
          cx = text_size(text).width
          change_color(system_color)
          text = Vocab::level_a
          draw_text(dx-dw/2, dy-line_height, dw-cx-4, line_height, text, 2)
          dx += dw
        end
      end
      
      #--------------------------------------------------------------------------
      # draw_save_column1
      #--------------------------------------------------------------------------
      def draw_save_column1(dx, dy, dw)
        data = YEA::SAVE::COLUMN1_VARIABLES
        draw_column_data(data, dx, dy, dw)
      end
      
      #--------------------------------------------------------------------------
      # draw_save_column2
      #--------------------------------------------------------------------------
      def draw_save_column2(dx, dy, dw)
        data = YEA::SAVE::COLUMN2_VARIABLES
        draw_column_data(data, dx, dy, dw)
      end
      
      #--------------------------------------------------------------------------
      # draw_column_data
      #--------------------------------------------------------------------------
      def draw_column_data(data, dx, dy, dw)
        return if @header[:variables].nil?
        reset_font_settings
        for variable_id in data
          next if $data_system.variables[variable_id].nil?
          change_color(system_color)
          name = $data_system.variables[variable_id]
          draw_text(dx, dy, dw, line_height, name, 0)
          value = @header[:variables][variable_id].group
          change_color(normal_color)
          draw_text(dx, dy, dw, line_height, value, 2)
          dy += line_height
        end
      end
      
      #--------------------------------------------------------------------------
      # draw_save_contents
      #--------------------------------------------------------------------------
      def draw_save_contents
        draw_save_slot(4, 0, contents.width/2-8)
        draw_save_playtime(contents.width/2+4, 0, contents.width/2-8)
        draw_save_total_saves(4, line_height, contents.width/2-8)
        draw_save_gold(contents.width/2+4, line_height, contents.width/2-8)
        draw_save_location(4, line_height*2, contents.width-8)
        draw_save_characters(0, line_height*5 + line_height/3)
        draw_save_column1(16, line_height*7, contents.width/2-48)
        draw_save_column2(contents.width/2+16, line_height*7, contents.width/2-48)
      end
      
    end # Window_FileStatus
    
    #==============================================================================
    # ?! Window_FileAction
    #==============================================================================
    
    class Window_FileAction < Window_HorzCommand
      
      #--------------------------------------------------------------------------
      # initialize
      #--------------------------------------------------------------------------
      def initialize(dx, dy, file_window)
        @file_window = file_window
        super(dx, dy)
        deactivate
        unselect
      end
      
      #--------------------------------------------------------------------------
      # window_width
      #--------------------------------------------------------------------------
      def window_width; Graphics.width - 128; end
      
      #--------------------------------------------------------------------------
      # col_max
      #--------------------------------------------------------------------------
      def col_max; return 3; end
      
      #--------------------------------------------------------------------------
      # update
      #--------------------------------------------------------------------------
      def update
        super
        return if @file_window.index < 0
        return if @current_index == @file_window.index
        @current_index = @file_window.index
        refresh
      end
      
      #--------------------------------------------------------------------------
      # make_command_list
      #--------------------------------------------------------------------------
      def make_command_list
        @header = DataManager.load_header(@file_window.index)
        add_load_command
        add_save_command
        add_delete_command
      end
      
      #--------------------------------------------------------------------------
      # add_load_command
      #--------------------------------------------------------------------------
      def add_load_command
        add_command(YEA::SAVE::ACTION_LOAD, :load, load_enabled?)
      end
      
      #--------------------------------------------------------------------------
      # load_enabled?
      #--------------------------------------------------------------------------
      def load_enabled?
        return false if @header.nil?
        return true
      end
      
      #--------------------------------------------------------------------------
      # add_save_command
      #--------------------------------------------------------------------------
      def add_save_command
        add_command(YEA::SAVE::ACTION_SAVE, :save, save_enabled?)
      end
      
      #--------------------------------------------------------------------------
      # save_enabled?
      #--------------------------------------------------------------------------
      def save_enabled?
        return false if @header.nil? && SceneManager.scene_is?(Scene_Load)
        return false if SceneManager.scene_is?(Scene_Load)
        return false if $game_system.save_disabled
        return true
      end
      
      #--------------------------------------------------------------------------
      # add_delete_command
      #--------------------------------------------------------------------------
      def add_delete_command
        add_command(YEA::SAVE::ACTION_DELETE, :delete, delete_enabled?)
      end
      
      #--------------------------------------------------------------------------
      # delete_enabled?
      #--------------------------------------------------------------------------
      def delete_enabled?
        return false if @header.nil?
        return true
      end
      
      #--------------------------------------------------------------------------
      # update_help
      #--------------------------------------------------------------------------
      def update_help
        case current_symbol
        when :load; @help_window.set_text(YEA::SAVE::LOAD_HELP)
        when :save; @help_window.set_text(YEA::SAVE::SAVE_HELP)
        when :delete; @help_window.set_text(YEA::SAVE::DELETE_HELP)
        end
      end
      
    end # Window_FileAction
    
    #==============================================================================
    # ?! Scene_File
    #==============================================================================
    
    class Scene_File < Scene_MenuBase
      
      #--------------------------------------------------------------------------
      # overwrite method: start
      #--------------------------------------------------------------------------
      def start
        super
        create_all_windows
      end
      
      #--------------------------------------------------------------------------
      # overwrite method: terminate
      #--------------------------------------------------------------------------
      def terminate
        super
      end
      
      #--------------------------------------------------------------------------
      # overwrite method: update
      #--------------------------------------------------------------------------
      def update
        super
      end
      
      #--------------------------------------------------------------------------
      # new method: create_all_windows
      #--------------------------------------------------------------------------
      def create_all_windows
        create_help_window
        create_file_window
        create_action_window
        create_status_window
      end
      
      #--------------------------------------------------------------------------
      # overwrite method: create_help_window
      #--------------------------------------------------------------------------
      def create_help_window
        @help_window = Window_Help.new
        @help_window.set_text(YEA::SAVE::SELECT_HELP)
      end
      
      #--------------------------------------------------------------------------
      # new method: create_file_window
      #--------------------------------------------------------------------------
      def create_file_window
        wy = @help_window.height
        @file_window = Window_FileList.new(0, wy)
        @file_window.set_handler(:ok, method(:on_file_ok))
        @file_window.set_handler(:cancel, method(:return_scene))
      end
      
      #--------------------------------------------------------------------------
      # new method: create_action_window
      #--------------------------------------------------------------------------
      def create_action_window
        wx = @file_window.width
        wy = @help_window.height
        @action_window = Window_FileAction.new(wx, wy, @file_window)
        @action_window.help_window = @help_window
        @action_window.set_handler(:cancel, method(:on_action_cancel))
        @action_window.set_handler(:load, method(:on_action_load))
        @action_window.set_handler(:save, method(:on_action_save))
        @action_window.set_handler(:delete, method(:on_action_delete))
      end
      
      #--------------------------------------------------------------------------
      # new method: create_status_window
      #--------------------------------------------------------------------------
      def create_status_window
        wx = @action_window.x
        wy = @action_window.y + @action_window.height
        @status_window = Window_FileStatus.new(wx, wy, @file_window)
      end
      
      #--------------------------------------------------------------------------
      # new method: on_file_ok
      #--------------------------------------------------------------------------
      def on_file_ok
        @action_window.activate
        index = SceneManager.scene_is?(Scene_Load) ? 0 : 1
        @action_window.select(index)
      end
      
      #--------------------------------------------------------------------------
      # new method: on_action_cancel
      #--------------------------------------------------------------------------
      def on_action_cancel
        @action_window.unselect
        @file_window.activate
        @help_window.set_text(YEA::SAVE::SELECT_HELP)
      end
      
      #--------------------------------------------------------------------------
      # new method: on_action_load
      #--------------------------------------------------------------------------
      def on_action_load
        if DataManager.load_game(@file_window.index)
          on_load_success
        else
          Sound.play_buzzer
        end
      end
      
      #--------------------------------------------------------------------------
      # overwrite method: on_load_success
      #--------------------------------------------------------------------------
      def on_load_success
        Sound.play_load
        fadeout_all
        $game_system.on_after_load
        SceneManager.goto(Scene_Map)
      end
      
      #--------------------------------------------------------------------------
      # new method: on_action_save
      #--------------------------------------------------------------------------
      def on_action_save
        @action_window.activate
        if DataManager.save_game(@file_window.index)
          on_save_success
          refresh_windows
        else
          Sound.play_buzzer
        end
      end
      
      #--------------------------------------------------------------------------
      # overwrite method: on_save_success
      #--------------------------------------------------------------------------
      def on_save_success; Sound.play_save; end
      
      #--------------------------------------------------------------------------
      # new method: on_action_delete
      #--------------------------------------------------------------------------
      def on_action_delete
        @action_window.activate
        DataManager.delete_save_file(@file_window.index)
        on_delete_success
        refresh_windows
      end
      
      #--------------------------------------------------------------------------
      # new method: on_delete_success
      #--------------------------------------------------------------------------
      def on_delete_success
        YEA::SAVE::DELETE_SOUND.play
      end
      
      #--------------------------------------------------------------------------
      # new method: refresh_windows
      #--------------------------------------------------------------------------
      def refresh_windows
        @file_window.refresh
        @action_window.refresh
        @status_window.refresh
      end
      
    end # Scene_File
    
    #==============================================================================
    # ?! Scene_Save
    #==============================================================================
    
    class Scene_Save < Scene_File
      
      #--------------------------------------------------------------------------
      # overwrite method: on_savefile_ok
      #--------------------------------------------------------------------------
      def on_savefile_ok; super; end
      
      #--------------------------------------------------------------------------
      # overwrite method: on_save_success
      #--------------------------------------------------------------------------
      def on_save_success; super; end
      
    end # help_window_text
    
    #==============================================================================
    # ?! Scene_Load
    #==============================================================================
    
    class Scene_Load < Scene_File
      
      #--------------------------------------------------------------------------
      # overwrite method: on_savefile_ok
      #--------------------------------------------------------------------------
      def on_savefile_ok; super; end
      
      #--------------------------------------------------------------------------
      # overwrite method: on_load_success
      #--------------------------------------------------------------------------
      def on_load_success; super; end
      
    end # Scene_Load
    
    #==============================================================================
    # 
    # ?\ End of File
    # 
    #==============================================================================
    

    #==============================================================================
    # 
    # ▼ Yanfly Engine Ace - Save Engine Add-On: New Game+ v1.00
    # -- Last Updated: 2011.12.26
    # -- Level: Normal
    # -- Requires: YEA - Ace Save Engine v1.01+
    # 
    #==============================================================================
    
    $imported = {} if $imported.nil?
    $imported["YEA-NewGame+"] = true
    
    #==============================================================================
    # ▼ Updates
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # 2011.12.26 - Started Script and Finished.
    # 
    #==============================================================================
    # ▼ Introduction
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # New Game+ is a great way to provide replay value for your game. It lets the
    # player re-experience the game in a different way with either carried over
    # items, to carried over party members, to carried over skills, switches, and
    # variables even. There exists many options to change how New Game+ will work
    # for your game.
    # 
    #==============================================================================
    # ▼ Instructions
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # To install this script, open up your script editor and copy/paste this script
    # to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save.
    # 
    # -----------------------------------------------------------------------------
    # Item Notetags - These notetags go in the items notebox in the database.
    # -----------------------------------------------------------------------------
    # <no carry over>
    # This will cause this specific item to not carry over in New Game+ if the item
    # can be carried over. This does not affect any items that actors may have
    # equipped.
    # 
    # -----------------------------------------------------------------------------
    # Weapon Notetags - These notetags go in the weapons notebox in the database.
    # -----------------------------------------------------------------------------
    # <no carry over>
    # This will cause this specific item to not carry over in New Game+ if the item
    # can be carried over. This does not affect any items that actors may have
    # equipped.
    # 
    # -----------------------------------------------------------------------------
    # Armour Notetags - These notetags go in the armours notebox in the database.
    # -----------------------------------------------------------------------------
    # <no carry over>
    # This will cause this specific item to not carry over in New Game+ if the item
    # can be carried over. This does not affect any items that actors may have
    # equipped.
    # 
    #==============================================================================
    # ▼ Compatibility
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
    # it will run with RPG Maker VX without adjusting.
    # 
    # This script requires Yanfly Engine Ace - Ace Save Engine v1.01+ and the
    # script must be placed under Ace Save Engine in the script listing.
    # 
    #==============================================================================
    
    module YEA
      module NEW_GAME_PLUS
        
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # - General Settings -
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # Description
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        NGP_SWITCH = 100           # If Switch ON, the game file has NG+ flag.
        NGP_TEXT   = "New Game+"   # Text used to show New Game+.
        
        # This is the help window text used for New Game+ when the New Game+
        # option is highlighted.
        NGP_HELP   = "Start a new game using this file's settings."
        
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # - Carry Over Settings -
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # These settings adjust what carries over and what doesn't. These settings
        # are very specific so adjust them carefully.
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # This array contains all of the switches that you want carried over to
        # be maintained. Any switches that aren't here will be set false.
        CARRY_OVER_SWITCHES = [1, 2, 3]
        
        # This array contains all of the variables that you want carried over to
        # be maintained. Any variables that aren't here will be set to 0.
        CARRY_OVER_VARIABLES = [1..6]
        
        # If this is set to false, then actors will be completely reset back to
        # their original starting states. If it's set to true, then actors will
        # be kept exactly as they are.
        CARRY_OVER_ACTORS = true
        
        # These settings are only used if actors will be carried over. With this,
        # you can limit what specifics will be carried over for actors from levels
        # to equips to skills.
        CARRY_OVER_LEVELS = true
        CARRY_OVER_EQUIPS = true
        CARRY_OVER_SKILLS = true
        
        # If this is set to false, then the party members will revert back to the
        # original starting party members. If it's true, then the party setup will
        # remain exactly the same.
        CARRY_OVER_PARTY_MEMBERS = true
        
        # If any of these are set to false, then no items, weapons, or armours will
        # be carried over. If it's set to true, then the respective items will be
        # carried over to the newer game.
        CARRY_OVER_GOLD    = true
        CARRY_OVER_ITEMS   = true
        CARRY_OVER_WEAPONS = true
        CARRY_OVER_ARMOURS = true
        
      end # NEW_GAME_PLUS
    end # YEA
    
    #==============================================================================
    # ▼ Editting anything past this point may potentially result in causing
    # computer damage, incontinence, explosion of user's head, coma, death, and/or
    # halitosis so edit at your own risk.
    #==============================================================================
    
    if $imported["YEA-SaveEngine"]
    
    module YEA
      module NEW_GAME_PLUS
        module_function
        #--------------------------------------------------------------------------
        # convert_integer_array
        #--------------------------------------------------------------------------
        def convert_integer_array(array)
          result = []
          array.each { |i|
            case i
            when Range; result |= i.to_a
            when Integer; result |= [i]
            end }
          return result
        end
        #--------------------------------------------------------------------------
        # converted_contants
        #--------------------------------------------------------------------------
        CARRY_OVER_SWITCHES = convert_integer_array(CARRY_OVER_SWITCHES)
        CARRY_OVER_VARIABLES = convert_integer_array(CARRY_OVER_VARIABLES)
      end # NEW_GAME_PLUS
      module REGEXP
      module BASEITEM
        
        NO_CARRY_OVER = /<(?:NO_CARRY_OVER|no carry over)>/i
        
      end # BASEITEM
      end # REGEXP
    end # YEA
    
    #==============================================================================
    # ■ DataManager
    #==============================================================================
    
    module DataManager
      
      #--------------------------------------------------------------------------
      # alias method: load_database
      #--------------------------------------------------------------------------
      class <<self; alias load_database_ngp load_database; end
      def self.load_database
        load_database_ngp
        load_notetags_ngp
      end
      
      #--------------------------------------------------------------------------
      # new method: load_notetags_ngp
      #--------------------------------------------------------------------------
      def self.load_notetags_ngp
        groups = [$data_items, $data_weapons, $data_armors]
        for group in groups
          for obj in group
            next if obj.nil?
            obj.load_notetags_ngp
          end
        end
      end
      
    end # DataManager
    
    #==============================================================================
    # ■ RPG::BaseItem
    #==============================================================================
    
    class RPG::BaseItem
      
      #--------------------------------------------------------------------------
      # public instance variables
      #--------------------------------------------------------------------------
      attr_accessor :no_carry_over
      
      #--------------------------------------------------------------------------
      # common cache: load_notetags_ngp
      #--------------------------------------------------------------------------
      def load_notetags_ngp
        @no_carry_over = false
        #---
        self.note.split(/[\r\n]+/).each { |line|
          case line
          #---
          when YEA::REGEXP::BASEITEM::NO_CARRY_OVER
            @no_carry_over = true
          end
        } # self.note.split
        #---
      end
      
    end # RPG::BaseItem
    
    #==============================================================================
    # ■ Switch
    #==============================================================================
    
    module Switch
      
      #--------------------------------------------------------------------------
      # self.new_game_plus
      #--------------------------------------------------------------------------
      def self.new_game_plus
        return $game_switches[YEA::NEW_GAME_PLUS::NGP_SWITCH]
      end
      
    end # Switch
    
    #==============================================================================
    # ■ DataManager
    #==============================================================================
    
    module DataManager
      
      #--------------------------------------------------------------------------
      # new method: setup_new_game_plus
      #--------------------------------------------------------------------------
      def self.setup_new_game_plus(index)
        create_new_game_plus_objects(index)
        $game_map.setup($data_system.start_map_id)
        $game_player.moveto($data_system.start_x, $data_system.start_y)
        $game_player.refresh
        Graphics.frame_count = 0
      end
      
      #--------------------------------------------------------------------------
      # new method: create_new_game_plus_objects
      #--------------------------------------------------------------------------
      def self.create_new_game_plus_objects(index)
        load_game_without_rescue(index)
        ngp_reset_switches
        ngp_reset_variables
        ngp_reset_self_switches
        ngp_reset_actors
        ngp_reset_party
      end
      
      #--------------------------------------------------------------------------
      # new method: ngp_reset_switches
      #--------------------------------------------------------------------------
      def self.ngp_reset_switches
        for i in 0...$data_system.switches.size
          next if i <= 0
          next if YEA::NEW_GAME_PLUS::CARRY_OVER_SWITCHES.include?(i)
          $game_switches[i] = false
        end
      end
      
      #--------------------------------------------------------------------------
      # new method: ngp_reset_variables
      #--------------------------------------------------------------------------
      def self.ngp_reset_variables
        for i in 0...$data_system.variables.size
          next if i <= 0
          next if YEA::NEW_GAME_PLUS::CARRY_OVER_VARIABLES.include?(i)
          $game_variables[i] = 0
        end
      end
      
      #--------------------------------------------------------------------------
      # new method: ngp_reset_self_switches
      #--------------------------------------------------------------------------
      def self.ngp_reset_self_switches
        $game_self_switches = Game_SelfSwitches.new
      end
      
      #--------------------------------------------------------------------------
      # new method: ngp_reset_actors
      #--------------------------------------------------------------------------
      def self.ngp_reset_actors
        unless YEA::NEW_GAME_PLUS::CARRY_OVER_ACTORS
          $game_actors = Game_Actors.new
        else
          #---
          unless YEA::NEW_GAME_PLUS::CARRY_OVER_LEVELS
            for i in 0...$data_actors.size
              actor = $game_actors[i]
              next if actor.nil?
              actor.new_game_plus_levels
            end
          end
          #---
          unless YEA::NEW_GAME_PLUS::CARRY_OVER_EQUIPS
            for i in 0...$data_actors.size
              actor = $game_actors[i]
              next if actor.nil?
              actor.new_game_plus_equips
            end
          end
          #---
          unless YEA::NEW_GAME_PLUS::CARRY_OVER_SKILLS
            for i in 0...$data_actors.size
              actor = $game_actors[i]
              next if actor.nil?
              actor.new_game_plus_skills
            end
          end
          #---
        end
      end
      
      #--------------------------------------------------------------------------
      # new method: ngp_reset_party
      #--------------------------------------------------------------------------
      def self.ngp_reset_party
        gold = 0
        items = {}
        members = []
        #---
        if YEA::NEW_GAME_PLUS::CARRY_OVER_PARTY_MEMBERS
          for member in $game_party.members
            members.push(member.id)
          end
        end
        #---
        gold = $game_party.gold if YEA::NEW_GAME_PLUS::CARRY_OVER_GOLD
        #---
        if YEA::NEW_GAME_PLUS::CARRY_OVER_ITEMS
          for item in $data_items
            next if item.nil?
            next if item.no_carry_over
            items[item] = $game_party.item_number(item)
          end
        end
        #---
        if YEA::NEW_GAME_PLUS::CARRY_OVER_WEAPONS
          for item in $data_weapons
            next if item.nil?
            next if item.no_carry_over
            items[item] = $game_party.item_number(item)
          end
        end
        #---
        if YEA::NEW_GAME_PLUS::CARRY_OVER_ARMOURS
          for item in $data_armors
            next if item.nil?
            next if item.no_carry_over
            items[item] = $game_party.item_number(item)
          end
        end
        #---
        $game_party = Game_Party.new
        unless YEA::NEW_GAME_PLUS::CARRY_OVER_PARTY_MEMBERS
          $game_party.setup_starting_members
        end
        #---
        for member_id in members
          $game_party.add_actor(member_id)
        end
        $game_party.gain_gold(gold)
        for key in items
          item = key[0]
          next if item.nil?
          $game_party.gain_item(item, key[1])
        end
      end
      
    end # DataManager
    
    #==============================================================================
    # ■ Game_Actor
    #==============================================================================
    
    class Game_Actor < Game_Battler
      
      #--------------------------------------------------------------------------
      # new method: new_game_plus_levels
      #--------------------------------------------------------------------------
      def new_game_plus_levels
        @class_id = actor.class_id
        @level = actor.initial_level
        @exp = {}
        if $imported["YEA-ClassSystem"]
          init_unlocked_classes
          init_subclass
        end
        clear_param_plus
        init_exp
        refresh
      end
      
      #--------------------------------------------------------------------------
      # new method: new_game_plus_equips
      #--------------------------------------------------------------------------
      def new_game_plus_equips
        init_equips(actor.equips)
      end
      
      #--------------------------------------------------------------------------
      # new method: new_game_plus_skills
      #--------------------------------------------------------------------------
      def new_game_plus_skills
        init_skills
      end
      
    end # Game_Actor
    
    #==============================================================================
    # ■ Window_FileAction
    #==============================================================================
    
    class Window_FileAction < Window_HorzCommand
      
      #--------------------------------------------------------------------------
      # alias method: add_load_command
      #--------------------------------------------------------------------------
      alias add_load_command_ngp add_load_command
      def add_load_command
        if new_game_plus?
          add_command(YEA::NEW_GAME_PLUS::NGP_TEXT, :new_game_plus)
        else
          add_load_command_ngp
        end
      end
      
      #--------------------------------------------------------------------------
      # new method: new_game_plus?
      #--------------------------------------------------------------------------
      def new_game_plus?
        return false if @header.nil?
        return false if @header[:switches].nil?
        return @header[:switches][YEA::NEW_GAME_PLUS::NGP_SWITCH]
      end
      
      #--------------------------------------------------------------------------
      # alias method: update_help
      #--------------------------------------------------------------------------
      alias update_help_ngp update_help
      def update_help
        case current_symbol
        when :new_game_plus; @help_window.set_text(YEA::NEW_GAME_PLUS::NGP_HELP)
        else; update_help_ngp
        end
      end
      
    end # Window_FileAction
    
    #==============================================================================
    # ■ Scene_File
    #==============================================================================
    
    class Scene_File < Scene_MenuBase
      
      #--------------------------------------------------------------------------
      # alias method: create_action_window
      #--------------------------------------------------------------------------
      alias create_action_window_ngp create_action_window
      def create_action_window
        create_action_window_ngp
        @action_window.set_handler(:new_game_plus, method(:on_action_ngp))
      end
      
      #--------------------------------------------------------------------------
      # new method: on_action_ngp
      #--------------------------------------------------------------------------
      def on_action_ngp
        Sound.play_load
        DataManager.setup_new_game_plus(@file_window.index)
        fadeout_all
        $game_system.on_after_load
        SceneManager.goto(Scene_Map)
      end
      
    end # Scene_File
    
    end # $imported["YEA-SaveEngine"]
    
    #==============================================================================
    # 
    # ▼ End of File
    # 
    #==============================================================================
    

    Thanks Nagi nhiều :thoaimai:
  • NagiNagi Posts: 589Registered
    Anikawa wrote:
    Thanks Nagi nhiều :thoaimai:
    Không có gì, giờ đang giữ full đống scripts của YanFly làm kỉ niệm để tưởng nhớ người đã khuất... scripts khác thì không có chứ yanfly thì cứ kêu mình. :cuoideu:
  • FuyukiFuyuki Posts: 450Registered
    Up nguyên pack cho thiên hạ thưởng thức đi Na :v
    Cơ mà bao nhiêu like thì bác ấy hồi sinh :v
  • CryingWOLFCryingWOLF Posts: 1,766Registered
    actor-duel_zpsca4ab925.jpg
    Cho xin script ngay và luôn!!!!!
  • NagiNagi Posts: 589Registered
    Fuyuki wrote:
    Up nguyên pack cho thiên hạ thưởng thức đi Na :v
    Cơ mà bao nhiêu like thì bác ấy hồi sinh :v
    Đây, hầu như là full update tơi thời điểm hiện tại, ai rảnh thì lập top hộ nhe :cuoideu:
    http://puu.sh/9iK0i/2153f3aa15.rar
    Lập face 100.000 like hồi sinh Yanfly scripts nhỉ :cuoideu:
    Netro wrote:
    actor-duel_zpsca4ab925.jpg
    Cho xin script ngay và luôn!!!!!
    https://galvs-scripts.com/category/rmvxa-scripts/scenessystems/#post-1038
  • AnikawaAnikawa Posts: 25Registered
    Nagi chỉ cách dùng New Game + được không?
  • NagiNagi Posts: 589Registered
    Anikawa wrote:
    Nagi chỉ cách dùng New Game + được không?
    <no carry over> -> những item có tag này sẽ không có khi chơi lại bằng newgame+, tương tự cho vũ khi' và giap'

    NGP_SWITCH = 100 -> Switch này ON thì Newgame+ mơi' hiện ra.
    CARRY_OVER_SWITCHES = [1, 2, 3] -> mang theo switch nào khi chơi lại vs newgame+
    Tương tự cho variable
    CARRY_OVER_ACTORS = true -> false thì trở lại lvl đầu khi newgame+, true thì giữ nguyên.
    CARRY_OVER_LEVELS = true -> lvl
    CARRY_OVER_EQUIPS = true -> eqip
    CARRY_OVER_SKILLS = true -> skill
    CARRY_OVER_PARTY_MEMBERS = true -> party
    CARRY_OVER_GOLD = true -> tiền
    CARRY_OVER_ITEMS = true -> item
    CARRY_OVER_WEAPONS = true -> vk
    CARRY_OVER_ARMOURS = true -> giap

    đại khai là thê'
  • dsiver144dsiver144 Posts: 1,064Registered
    Anikawa wrote:
    Nagi chỉ cách dùng New Game + được không?

    Cái đấy chắc bạn phải hoàn thành pj rồi tính tiếp :D (Ý kiến riêng)
    p/s : wu11 update thêm Tsukihime nữa là ok! ; )
  • wu11wu11 Posts: 212Registered
    Netro wrote:
    actor-duel_zpsca4ab925.jpg
    Cho xin script ngay và luôn!!!!!

    m đừng động vào script này Netro,phí thời gian thôi =]
    Chú đâu có phải loại kiên trì gì cho cam đâu mà xài cái script cực-kì-cần-tài-nguyên và yêu cầu hiểu script này =]]
    Dark Sky wrote:
    Anikawa wrote:
    Nagi chỉ cách dùng New Game + được không?

    Cái đấy chắc bạn phải hoàn thành pj rồi tính tiếp :D (Ý kiến riêng)
    p/s : wu11 update thêm Tsukihime nữa là ok! ; )
    Sẽ đưa vào sau khi nào đã dùng nhiều script của senpai ấy 'w'
  • MeoDenLuoiMeoDenLuoi Posts: 1,425Registered
    wu11 wrote:
    ACE_Extra.gif
    và tôi đã tìm thấy tình cmn yêu OwO
    tuyệt cmn vời \m/
  • NagiNagi Posts: 589Registered
    wu11 wrote:
    Sẽ đưa vào sau khi nào đã dùng nhiều script của senpai ấy 'w'
    Tsu có nhiều script hay lắm.
Sign In or Register to comment.